summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom <tomut@yahoo.com>2023-04-03 21:26:20 -0600
committerLinus Groh <mail@linusgroh.de>2023-04-13 20:18:49 +0200
commit6f9c5b71fd13961411a2aa2a0c9a0ef9510e1534 (patch)
tree22f1b7ef8686f34a6c9a98db4f2224ed48b5ca29
parent2125464b7641c03b1fac3a8f20a6085b4c4eae48 (diff)
downloadserenity-6f9c5b71fd13961411a2aa2a0c9a0ef9510e1534.zip
WindowServer: Use enum class for Effects and ShowGeometry
-rw-r--r--Userland/Applications/DisplaySettings/EffectsSettingsWidget.cpp44
-rw-r--r--Userland/Services/WindowServer/SystemEffects.h38
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; }