From 7b915ffb48c5ea55992afed1c4cc974d512f115b Mon Sep 17 00:00:00 2001 From: Janus Date: Sat, 24 Jan 2015 23:02:50 +0000 Subject: [PATCH] Mouse: enable Revert only if settings changed. * If changing the settings and manually reverting to the previous values, the Revert button would stay enabled. * Fixes #11783. Signed-off-by: Adrien Destugues --- src/preferences/mouse/MouseSettings.cpp | 17 +++++++++++++++++ src/preferences/mouse/MouseSettings.h | 1 + src/preferences/mouse/MouseWindow.cpp | 18 +++++++++--------- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/preferences/mouse/MouseSettings.cpp b/src/preferences/mouse/MouseSettings.cpp index 105b40ec58..2cbebb106d 100644 --- a/src/preferences/mouse/MouseSettings.cpp +++ b/src/preferences/mouse/MouseSettings.cpp @@ -241,6 +241,23 @@ MouseSettings::Revert() } +// Checks if the settings are different then the original settings +bool +MouseSettings::IsRevertable() +{ + return fSettings.click_speed != fOriginalSettings.click_speed + || fSettings.accel.speed != fOriginalSettings.accel.speed + || fSettings.type != fOriginalSettings.type + || fSettings.accel.accel_factor != fOriginalSettings.accel.accel_factor + || fMode != fOriginalMode + || fFocusFollowsMouseMode != fOriginalFocusFollowsMouseMode + || fAcceptFirstClick != fOriginalAcceptFirstClick + || fSettings.map.button[0] != fOriginalSettings.map.button[0] + || fSettings.map.button[1] != fOriginalSettings.map.button[1] + || fSettings.map.button[2] != fOriginalSettings.map.button[2]; +} + + void MouseSettings::SetWindowPosition(BPoint corner) { diff --git a/src/preferences/mouse/MouseSettings.h b/src/preferences/mouse/MouseSettings.h index d7b0c0928c..d5d1c805f2 100644 --- a/src/preferences/mouse/MouseSettings.h +++ b/src/preferences/mouse/MouseSettings.h @@ -27,6 +27,7 @@ public: ~MouseSettings(); void Revert(); + bool IsRevertable(); void Defaults(); bool IsDefaultable(); void Dump(); diff --git a/src/preferences/mouse/MouseWindow.cpp b/src/preferences/mouse/MouseWindow.cpp index 3899baeed3..96bf31b3a1 100644 --- a/src/preferences/mouse/MouseWindow.cpp +++ b/src/preferences/mouse/MouseWindow.cpp @@ -109,7 +109,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettingsView->UpdateFromSettings(); fDefaultsButton->SetEnabled(false); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); break; } @@ -130,7 +130,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettings.SetMouseType(++type); fSettingsView->SetMouseType(type); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -141,7 +141,7 @@ MouseWindow::MessageReceived(BMessage* message) if (message->FindInt32("mode", &mode) == B_OK) { fSettings.SetMouseMode((mode_mouse)mode); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); fSettingsView->fFocusFollowsMouseMenu->SetEnabled( mode == B_FOCUS_FOLLOWS_MOUSE); fSettingsView->fAcceptFirstClickBox->SetEnabled( @@ -158,7 +158,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettings.SetFocusFollowsMouseMode( (mode_focus_follows_mouse)mode); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -176,7 +176,7 @@ MouseWindow::MessageReceived(BMessage* message) == B_CONTROL_ON; fSettings.SetAcceptFirstClick(acceptFirstClick); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -188,7 +188,7 @@ MouseWindow::MessageReceived(BMessage* message) // slow = 1000000, fast = 0 fSettings.SetClickSpeed(value * 1000); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -201,7 +201,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettings.SetMouseSpeed((int32)pow(2, value * 6.0 / 1000) * 8192); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -214,7 +214,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettings.SetAccelerationFactor((int32)pow( value * 4.0 / 1000, 2) * 16384); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); } break; } @@ -237,7 +237,7 @@ MouseWindow::MessageReceived(BMessage* message) fSettings.SetMapping(button, mapping); fDefaultsButton->SetEnabled(fSettings.IsDefaultable()); - fRevertButton->SetEnabled(true); + fRevertButton->SetEnabled(fSettings.IsRevertable()); fSettingsView->MouseMapUpdated(); } break;