diff --git a/Userland/Applications/MouseSettings/MouseWidget.cpp b/Userland/Applications/MouseSettings/MouseWidget.cpp index c73c66be04..0b375b1223 100644 --- a/Userland/Applications/MouseSettings/MouseWidget.cpp +++ b/Userland/Applications/MouseSettings/MouseWidget.cpp @@ -25,28 +25,41 @@ MouseWidget::MouseWidget() m_speed_label = *find_descendant_of_type_named("speed_label"); m_speed_slider = *find_descendant_of_type_named("speed_slider"); m_speed_slider->set_range(WindowServer::mouse_accel_min * speed_slider_scale, WindowServer::mouse_accel_max * speed_slider_scale); - m_speed_slider->on_change = [&](int value) { - m_speed_label->set_text(String::formatted("{} %", value)); - }; int const slider_value = float { speed_slider_scale } * GUI::ConnectionToWindowServer::the().get_mouse_acceleration(); - m_speed_slider->set_value(slider_value); + m_speed_slider->set_value(slider_value, GUI::AllowCallback::No); + m_speed_slider->on_change = [&](int) { + update_speed_label(); + set_modified(true); + }; m_scroll_length_spinbox = *find_descendant_of_type_named("scroll_length_spinbox"); m_scroll_length_spinbox->set_min(WindowServer::scroll_step_size_min); - m_scroll_length_spinbox->set_value(GUI::ConnectionToWindowServer::the().get_scroll_step_size()); + m_scroll_length_spinbox->set_value(GUI::ConnectionToWindowServer::the().get_scroll_step_size(), GUI::AllowCallback::No); + m_scroll_length_spinbox->on_change = [&](auto) { + set_modified(true); + }; m_double_click_arrow_widget = *find_descendant_of_type_named("double_click_arrow_widget"); m_double_click_speed_label = *find_descendant_of_type_named("double_click_speed_label"); m_double_click_speed_slider = *find_descendant_of_type_named("double_click_speed_slider"); m_double_click_speed_slider->set_min(WindowServer::double_click_speed_min); m_double_click_speed_slider->set_max(WindowServer::double_click_speed_max); + m_double_click_speed_slider->set_value(GUI::ConnectionToWindowServer::the().get_double_click_speed(), GUI::AllowCallback::No); m_double_click_speed_slider->on_change = [&](int speed) { m_double_click_arrow_widget->set_double_click_speed(speed); - m_double_click_speed_label->set_text(String::formatted("{} ms", speed)); + update_double_click_speed_label(); + set_modified(true); }; - m_double_click_speed_slider->set_value(GUI::ConnectionToWindowServer::the().get_double_click_speed()); + m_switch_buttons_checkbox = *find_descendant_of_type_named("switch_buttons_input"); - m_switch_buttons_checkbox->set_checked(GUI::ConnectionToWindowServer::the().get_buttons_switched()); + m_switch_buttons_checkbox->set_checked(GUI::ConnectionToWindowServer::the().get_buttons_switched(), GUI::AllowCallback::No); + m_switch_buttons_checkbox->on_checked = [&](auto) { + set_modified(true); + }; + + update_speed_label(); + update_double_click_speed_label(); + m_double_click_arrow_widget->set_double_click_speed(m_double_click_speed_slider->value()); } void MouseWidget::apply_settings() @@ -65,3 +78,13 @@ void MouseWidget::reset_default_values() m_double_click_speed_slider->set_value(double_click_speed_default); m_switch_buttons_checkbox->set_checked(false); } + +void MouseWidget::update_speed_label() +{ + m_speed_label->set_text(String::formatted("{} %", m_speed_slider->value())); +} + +void MouseWidget::update_double_click_speed_label() +{ + m_double_click_speed_label->set_text(String::formatted("{} ms", m_double_click_speed_slider->value())); +} diff --git a/Userland/Applications/MouseSettings/MouseWidget.h b/Userland/Applications/MouseSettings/MouseWidget.h index 9779babbd7..6d24650dab 100644 --- a/Userland/Applications/MouseSettings/MouseWidget.h +++ b/Userland/Applications/MouseSettings/MouseWidget.h @@ -22,6 +22,9 @@ public: private: MouseWidget(); + void update_speed_label(); + void update_double_click_speed_label(); + RefPtr m_speed_slider; RefPtr m_speed_label; RefPtr m_scroll_length_spinbox; diff --git a/Userland/Applications/MouseSettings/ThemeWidget.cpp b/Userland/Applications/MouseSettings/ThemeWidget.cpp index 0a49155838..c357995e38 100644 --- a/Userland/Applications/MouseSettings/ThemeWidget.cpp +++ b/Userland/Applications/MouseSettings/ThemeWidget.cpp @@ -121,10 +121,11 @@ ThemeWidget::ThemeWidget() m_theme_name_box = find_descendant_of_type_named("theme_name_box"); m_theme_name_box->on_change = [this](String const& value, GUI::ModelIndex const&) mutable { m_mouse_cursor_model->change_theme(value); + set_modified(true); }; m_theme_name_box->set_model(ThemeModel::create()); m_theme_name_box->model()->invalidate(); - m_theme_name_box->set_text(theme_name); + m_theme_name_box->set_text(theme_name, GUI::AllowCallback::No); } void ThemeWidget::apply_settings()