1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:07:45 +00:00

WindowServer: Replace window menu action magic numbers with enum

This makes it a lot easier to find where the action handling is
happening, just 1, 2, 3, 4 isn't very discoverable. :^)
This commit is contained in:
Linus Groh 2021-04-15 23:04:15 +02:00 committed by Andreas Kling
parent 5b95850e28
commit 0aebb9ec62
2 changed files with 16 additions and 9 deletions

View file

@ -657,22 +657,22 @@ void Window::ensure_window_menu()
m_window_menu = Menu::construct(nullptr, -1, "(Window Menu)"); m_window_menu = Menu::construct(nullptr, -1, "(Window Menu)");
m_window_menu->set_window_menu_of(*this); m_window_menu->set_window_menu_of(*this);
auto minimize_item = make<MenuItem>(*m_window_menu, 1, m_minimized ? "&Unminimize" : "Mi&nimize"); auto minimize_item = make<MenuItem>(*m_window_menu, (unsigned)WindowMenuAction::MinimizeOrUnminimize, m_minimized ? "&Unminimize" : "Mi&nimize");
m_window_menu_minimize_item = minimize_item.ptr(); m_window_menu_minimize_item = minimize_item.ptr();
m_window_menu->add_item(move(minimize_item)); m_window_menu->add_item(move(minimize_item));
auto maximize_item = make<MenuItem>(*m_window_menu, 2, m_maximized ? "&Restore" : "Ma&ximize"); auto maximize_item = make<MenuItem>(*m_window_menu, (unsigned)WindowMenuAction::MaximizeOrRestore, m_maximized ? "&Restore" : "Ma&ximize");
m_window_menu_maximize_item = maximize_item.ptr(); m_window_menu_maximize_item = maximize_item.ptr();
m_window_menu->add_item(move(maximize_item)); m_window_menu->add_item(move(maximize_item));
m_window_menu->add_item(make<MenuItem>(*m_window_menu, MenuItem::Type::Separator)); m_window_menu->add_item(make<MenuItem>(*m_window_menu, MenuItem::Type::Separator));
auto menubar_visibility_item = make<MenuItem>(*m_window_menu, 4, "Menu &Bar"); auto menubar_visibility_item = make<MenuItem>(*m_window_menu, (unsigned)WindowMenuAction::ToggleMenubarVisibility, "Menu &Bar");
m_window_menu_menubar_visibility_item = menubar_visibility_item.ptr(); m_window_menu_menubar_visibility_item = menubar_visibility_item.ptr();
menubar_visibility_item->set_checkable(true); menubar_visibility_item->set_checkable(true);
m_window_menu->add_item(move(menubar_visibility_item)); m_window_menu->add_item(move(menubar_visibility_item));
auto close_item = make<MenuItem>(*m_window_menu, 3, "&Close"); auto close_item = make<MenuItem>(*m_window_menu, (unsigned)WindowMenuAction::Close, "&Close");
m_window_menu_close_item = close_item.ptr(); m_window_menu_close_item = close_item.ptr();
m_window_menu_close_item->set_icon(&close_icon()); m_window_menu_close_item->set_icon(&close_icon());
m_window_menu_close_item->set_default(true); m_window_menu_close_item->set_default(true);
@ -682,20 +682,20 @@ void Window::ensure_window_menu()
m_window_menu->item((int)PopupMenuItem::Maximize).set_enabled(m_resizable); m_window_menu->item((int)PopupMenuItem::Maximize).set_enabled(m_resizable);
m_window_menu->on_item_activation = [&](auto& item) { m_window_menu->on_item_activation = [&](auto& item) {
switch (item.identifier()) { switch (static_cast<WindowMenuAction>(item.identifier())) {
case 1: case WindowMenuAction::MinimizeOrUnminimize:
WindowManager::the().minimize_windows(*this, !m_minimized); WindowManager::the().minimize_windows(*this, !m_minimized);
if (!m_minimized) if (!m_minimized)
WindowManager::the().move_to_front_and_make_active(*this); WindowManager::the().move_to_front_and_make_active(*this);
break; break;
case 2: case WindowMenuAction::MaximizeOrRestore:
WindowManager::the().maximize_windows(*this, !m_maximized); WindowManager::the().maximize_windows(*this, !m_maximized);
WindowManager::the().move_to_front_and_make_active(*this); WindowManager::the().move_to_front_and_make_active(*this);
break; break;
case 3: case WindowMenuAction::Close:
request_close(); request_close();
break; break;
case 4: case WindowMenuAction::ToggleMenubarVisibility:
frame().invalidate(); frame().invalidate();
item.set_checked(!item.is_checked()); item.set_checked(!item.is_checked());
m_should_show_menubar = item.is_checked(); m_should_show_menubar = item.is_checked();

View file

@ -71,6 +71,13 @@ enum class PopupMenuItem {
Maximize, Maximize,
}; };
enum class WindowMenuAction {
MinimizeOrUnminimize = 0,
MaximizeOrRestore,
ToggleMenubarVisibility,
Close,
};
enum class WindowMenuDefaultAction { enum class WindowMenuDefaultAction {
None = 0, None = 0,
BasedOnWindowState, BasedOnWindowState,