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 <pulkomandy@gmail.com>
This commit is contained in:
Janus 2015-01-24 23:02:50 +00:00 committed by Adrien Destugues
parent 95ef50445f
commit 7b915ffb48
3 changed files with 27 additions and 9 deletions

View File

@ -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)
{

View File

@ -27,6 +27,7 @@ public:
~MouseSettings();
void Revert();
bool IsRevertable();
void Defaults();
bool IsDefaultable();
void Dump();

View File

@ -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;