From 2e3efd34c375a53a5a1046d63bf63147d7559c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filiph=20Sandstr=C3=B6m?= Date: Wed, 30 Nov 2022 13:52:42 +0100 Subject: [PATCH] MouseSettings: Add "Natural scrolling" toggle --- Userland/Applications/MouseSettings/Mouse.gml | 17 +++++++++++++---- .../Applications/MouseSettings/MouseWidget.cpp | 8 ++++++++ .../Applications/MouseSettings/MouseWidget.h | 1 + 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Userland/Applications/MouseSettings/Mouse.gml b/Userland/Applications/MouseSettings/Mouse.gml index 995b1b02ae..6a4755e6e0 100644 --- a/Userland/Applications/MouseSettings/Mouse.gml +++ b/Userland/Applications/MouseSettings/Mouse.gml @@ -53,7 +53,7 @@ } @GUI::GroupBox { - title: "Scroll Wheel Step Size" + title: "Scroll Wheel" fixed_height: 106 layout: @GUI::VerticalBoxLayout { margins: [6] @@ -79,7 +79,7 @@ @GUI::Widget { layout: @GUI::HorizontalBoxLayout { - margins: [8] + margins: [4, 0, 2, 8] spacing: 8 } @@ -97,10 +97,19 @@ min: 0 max: 100 value: 50 - fixed_width: 100 + preferred_width: "opportunistic_grow" } - @GUI::Layout::Spacer {} + @GUI::Widget { + fixed_width: 16 + } + + @GUI::CheckBox { + name: "natural_scroll_checkbox" + text: "Natural scrolling" + tooltip: "Content follows motion instead of the viewport,\nalso commonly referred to as \"reverse scrolling\"." + preferred_width: 108 + } } } diff --git a/Userland/Applications/MouseSettings/MouseWidget.cpp b/Userland/Applications/MouseSettings/MouseWidget.cpp index 0b375b1223..b6a467523a 100644 --- a/Userland/Applications/MouseSettings/MouseWidget.cpp +++ b/Userland/Applications/MouseSettings/MouseWidget.cpp @@ -57,6 +57,12 @@ MouseWidget::MouseWidget() set_modified(true); }; + m_natural_scroll_checkbox = *find_descendant_of_type_named("natural_scroll_checkbox"); + m_natural_scroll_checkbox->set_checked(GUI::ConnectionToWindowServer::the().is_natural_scroll(), GUI::AllowCallback::No); + m_natural_scroll_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()); @@ -69,6 +75,7 @@ void MouseWidget::apply_settings() GUI::ConnectionToWindowServer::the().async_set_scroll_step_size(m_scroll_length_spinbox->value()); GUI::ConnectionToWindowServer::the().async_set_double_click_speed(m_double_click_speed_slider->value()); GUI::ConnectionToWindowServer::the().async_set_buttons_switched(m_switch_buttons_checkbox->is_checked()); + GUI::ConnectionToWindowServer::the().async_set_natural_scroll(m_natural_scroll_checkbox->is_checked()); } void MouseWidget::reset_default_values() @@ -77,6 +84,7 @@ void MouseWidget::reset_default_values() m_scroll_length_spinbox->set_value(default_scroll_length); m_double_click_speed_slider->set_value(double_click_speed_default); m_switch_buttons_checkbox->set_checked(false); + m_natural_scroll_checkbox->set_checked(false); } void MouseWidget::update_speed_label() diff --git a/Userland/Applications/MouseSettings/MouseWidget.h b/Userland/Applications/MouseSettings/MouseWidget.h index 6d24650dab..d4cc6e9ac7 100644 --- a/Userland/Applications/MouseSettings/MouseWidget.h +++ b/Userland/Applications/MouseSettings/MouseWidget.h @@ -31,5 +31,6 @@ private: RefPtr m_double_click_speed_slider; RefPtr m_double_click_speed_label; RefPtr m_switch_buttons_checkbox; + RefPtr m_natural_scroll_checkbox; RefPtr m_double_click_arrow_widget; };