From fc83addb87b4b5cd9cc92f0dd3491c93e51d9ed9 Mon Sep 17 00:00:00 2001 From: Manuel Nickschas Date: Fri, 19 Dec 2008 23:21:23 +0100 Subject: [PATCH] Fix widget change detection in ChatMonitorSettingsPage --- src/qtui/settingsdlg.cpp | 2 ++ .../settingspages/chatmonitorsettingspage.cpp | 20 +++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/qtui/settingsdlg.cpp b/src/qtui/settingsdlg.cpp index d0700805..60642961 100644 --- a/src/qtui/settingsdlg.cpp +++ b/src/qtui/settingsdlg.cpp @@ -34,6 +34,8 @@ SettingsDlg::SettingsDlg(QWidget *parent) connect(ui.settingsTree, SIGNAL(itemSelectionChanged()), this, SLOT(itemSelected())); connect(ui.buttonBox, SIGNAL(clicked(QAbstractButton *)), this, SLOT(buttonClicked(QAbstractButton *))); + + setButtonStates(); } void SettingsDlg::registerSettingsPage(SettingsPage *sp) { diff --git a/src/qtui/settingspages/chatmonitorsettingspage.cpp b/src/qtui/settingspages/chatmonitorsettingspage.cpp index cbfa26eb..d457d3d3 100644 --- a/src/qtui/settingspages/chatmonitorsettingspage.cpp +++ b/src/qtui/settingspages/chatmonitorsettingspage.cpp @@ -142,7 +142,19 @@ void ChatMonitorSettingsPage::widgetHasChanged() { } bool ChatMonitorSettingsPage::testHasChanged() { - if (_configAvailable != _configActive) return true; + if(settings["OperationMode"] != ui.operationMode->itemData(ui.operationMode->currentIndex())) + return true; + + if(_configActive->bufferList().count() != settings["Buffers"].toList().count()) + return true; + + QSet uiBufs = _configActive->bufferList().toSet(); + QSet settingsBufs; + foreach(QVariant v, settings["Buffers"].toList()) + settingsBufs << v.value(); + if(uiBufs != settingsBufs) + return true; + return false; } @@ -227,9 +239,5 @@ void ChatMonitorSettingsPage::switchOperationMode(int modeIndex) { else if(newMode == ChatViewSettings::OptOut) { ui.labelActiveBuffers->setText(tr("Ignore:")); } - - if(settings["OperationMode"] != newMode) { - setChangedState(true); - } - settings["OperationMode"] = newMode; + widgetHasChanged(); } -- 2.20.1