diff options
author | Tom <tomut@yahoo.com> | 2023-04-03 21:26:20 -0600 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2023-04-13 20:18:49 +0200 |
commit | 6f9c5b71fd13961411a2aa2a0c9a0ef9510e1534 (patch) | |
tree | 22f1b7ef8686f34a6c9a98db4f2224ed48b5ca29 | |
parent | 2125464b7641c03b1fac3a8f20a6085b4c4eae48 (diff) | |
download | serenity-6f9c5b71fd13961411a2aa2a0c9a0ef9510e1534.zip |
WindowServer: Use enum class for Effects and ShowGeometry
-rw-r--r-- | Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp | 44 | ||||
-rw-r--r-- | Userland/Services/WindowServer/SystemEffects.h | 38 |
2 files changed, 46 insertions, 36 deletions
diff --git a/Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp b/Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp index aea56f8565..f7bafe43ea 100644 --- a/Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp +++ b/Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp @@ -42,62 +42,62 @@ ErrorOr<void> EffectsSettingsWidget::setup_interface() auto& animate_menus = *find_descendant_of_type_named<GUI::CheckBox>("animate_menus_checkbox"); animate_menus.set_checked(m_system_effects.animate_menus()); animate_menus.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::AnimateMenus) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::AnimateMenus, checked)) + set_modified(true); }; auto& flash_menus = *find_descendant_of_type_named<GUI::CheckBox>("flash_menus_checkbox"); flash_menus.set_checked(m_system_effects.flash_menus()); flash_menus.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::FlashMenus) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::FlashMenus, checked)) + set_modified(true); }; auto& animate_windows = *find_descendant_of_type_named<GUI::CheckBox>("animate_windows_checkbox"); animate_windows.set_checked(m_system_effects.animate_windows()); animate_windows.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::AnimateWindows) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::AnimateWindows, checked)) + set_modified(true); }; auto& smooth_scrolling = *find_descendant_of_type_named<GUI::CheckBox>("smooth_scrolling_checkbox"); smooth_scrolling.set_checked(m_system_effects.smooth_scrolling()); smooth_scrolling.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::SmoothScrolling) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::SmoothScrolling, checked)) + set_modified(true); }; auto& tab_accents = *find_descendant_of_type_named<GUI::CheckBox>("tab_accents_checkbox"); tab_accents.set_checked(m_system_effects.tab_accents()); tab_accents.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::TabAccents) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::TabAccents, checked)) + set_modified(true); }; auto& splitter_knurls = *find_descendant_of_type_named<GUI::CheckBox>("splitter_knurls_checkbox"); splitter_knurls.set_checked(m_system_effects.splitter_knurls()); splitter_knurls.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::SplitterKnurls) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::SplitterKnurls, checked)) + set_modified(true); }; auto& tooltips = *find_descendant_of_type_named<GUI::CheckBox>("tooltips_checkbox"); tooltips.set_checked(m_system_effects.tooltips()); tooltips.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::Tooltips) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::Tooltips, checked)) + set_modified(true); }; auto& menu_shadow = *find_descendant_of_type_named<GUI::CheckBox>("menu_shadow_checkbox"); menu_shadow.set_checked(m_system_effects.menu_shadow()); menu_shadow.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::MenuShadow) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::MenuShadow, checked)) + set_modified(true); }; auto& window_shadow = *find_descendant_of_type_named<GUI::CheckBox>("window_shadow_checkbox"); window_shadow.set_checked(m_system_effects.window_shadow()); window_shadow.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::WindowShadow) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::WindowShadow, checked)) + set_modified(true); }; auto& tooltip_shadow = *find_descendant_of_type_named<GUI::CheckBox>("tooltip_shadow_checkbox"); tooltip_shadow.set_checked(m_system_effects.tooltip_shadow()); tooltip_shadow.on_checked = [this](bool checked) { - m_system_effects.effects().at(Effects::TooltipShadow) = checked; - set_modified(true); + if (m_system_effects.set_effect(Effects::TooltipShadow, checked)) + set_modified(true); }; return {}; @@ -130,14 +130,14 @@ ErrorOr<void> EffectsSettingsWidget::load_settings() for (size_t i = 0; i < list.size(); ++i) TRY(m_geometry_list.try_append(TRY(String::from_utf8(list[i])))); m_geometry_combobox->set_model(ItemListModel<String>::create(m_geometry_list)); - m_geometry_combobox->set_selected_index(m_system_effects.geometry()); + m_geometry_combobox->set_selected_index(to_underlying(m_system_effects.geometry())); return {}; } void EffectsSettingsWidget::apply_settings() { - ConnectionToWindowServer::the().async_set_system_effects(m_system_effects.effects(), m_system_effects.geometry()); + ConnectionToWindowServer::the().async_set_system_effects(m_system_effects.effects(), to_underlying(m_system_effects.geometry())); } } diff --git a/Userland/Services/WindowServer/SystemEffects.h b/Userland/Services/WindowServer/SystemEffects.h index b765696245..eed17fe0ca 100644 --- a/Userland/Services/WindowServer/SystemEffects.h +++ b/Userland/Services/WindowServer/SystemEffects.h @@ -12,14 +12,14 @@ namespace WindowServer { -enum ShowGeometry : u8 { +enum class ShowGeometry : u8 { OnMoveAndResize, OnMoveOnly, OnResizeOnly, Never }; -enum Effects : size_t { +enum class Effects : size_t { AnimateMenus, FlashMenus, AnimateWindows, @@ -81,18 +81,28 @@ public: ~SystemEffects() = default; Vector<bool>& effects() { return m_effects; } - bool animate_menus() const { return m_effects[AnimateMenus]; } - bool flash_menus() const { return m_effects[FlashMenus]; } - bool animate_windows() const { return m_effects[AnimateWindows]; } - bool smooth_scrolling() const { return m_effects[SmoothScrolling]; } - - bool tab_accents() const { return m_effects[TabAccents]; } - bool splitter_knurls() const { return m_effects[SplitterKnurls]; } - bool tooltips() const { return m_effects[Tooltips]; } - - bool menu_shadow() const { return m_effects[MenuShadow]; } - bool window_shadow() const { return m_effects[WindowShadow]; } - bool tooltip_shadow() const { return m_effects[TooltipShadow]; } + bool set_effect(Effects effect, bool value) + { + VERIFY(effect < Effects::__Count); + auto& effect_value = m_effects[to_underlying(effect)]; + if (effect_value == value) + return false; + effect_value = value; + return true; + } + + bool animate_menus() const { return m_effects[to_underlying(Effects::AnimateMenus)]; } + bool flash_menus() const { return m_effects[to_underlying(Effects::FlashMenus)]; } + bool animate_windows() const { return m_effects[to_underlying(Effects::AnimateWindows)]; } + bool smooth_scrolling() const { return m_effects[to_underlying(Effects::SmoothScrolling)]; } + + bool tab_accents() const { return m_effects[to_underlying(Effects::TabAccents)]; } + bool splitter_knurls() const { return m_effects[to_underlying(Effects::SplitterKnurls)]; } + bool tooltips() const { return m_effects[to_underlying(Effects::Tooltips)]; } + + bool menu_shadow() const { return m_effects[to_underlying(Effects::MenuShadow)]; } + bool window_shadow() const { return m_effects[to_underlying(Effects::WindowShadow)]; } + bool tooltip_shadow() const { return m_effects[to_underlying(Effects::TooltipShadow)]; } void set_geometry(ShowGeometry g) { m_geometry = g; } ShowGeometry geometry() const { return m_geometry; } |