diff --git a/Userland/Services/WindowServer/MenuManager.cpp b/Userland/Services/WindowServer/MenuManager.cpp index 863d6eb661..4731a55317 100644 --- a/Userland/Services/WindowServer/MenuManager.cpp +++ b/Userland/Services/WindowServer/MenuManager.cpp @@ -159,6 +159,7 @@ void MenuManager::event(Core::Event& event) if (target_menu) { target_menu->ensure_menu_window().move_to(target_menu->rect_in_window_menubar().bottom_left().translated(wm.window_with_active_menu()->frame().rect().location()).translated(wm.window_with_active_menu()->frame().menubar_rect().location())); open_menu(*target_menu); + wm.window_with_active_menu()->invalidate_menubar(); } } } @@ -175,6 +176,7 @@ void MenuManager::event(Core::Event& event) if (target_menu) { target_menu->ensure_menu_window().move_to(target_menu->rect_in_window_menubar().bottom_left().translated(wm.window_with_active_menu()->frame().rect().location()).translated(wm.window_with_active_menu()->frame().menubar_rect().location())); open_menu(*target_menu); + wm.window_with_active_menu()->invalidate_menubar(); close_everyone_not_in_lineage(*target_menu); } } diff --git a/Userland/Services/WindowServer/WindowFrame.cpp b/Userland/Services/WindowServer/WindowFrame.cpp index 8b65955576..34a153528c 100644 --- a/Userland/Services/WindowServer/WindowFrame.cpp +++ b/Userland/Services/WindowServer/WindowFrame.cpp @@ -314,8 +314,11 @@ void WindowFrame::paint_menubar(Gfx::Painter& painter) Color text_color = palette.window_text(); if (MenuManager::the().is_open(menu)) text_rect.move_by(1, 1); - if (&menu == MenuManager::the().hovered_menu() || MenuManager::the().is_open(menu)) - Gfx::StylePainter::paint_button(painter, menu.rect_in_window_menubar(), palette, Gfx::ButtonStyle::CoolBar, MenuManager::the().is_open(menu), true); + bool paint_as_pressed = MenuManager::the().is_open(menu); + bool paint_as_hovered = !paint_as_pressed && &menu == MenuManager::the().hovered_menu(); + if (paint_as_pressed || paint_as_hovered) { + Gfx::StylePainter::paint_button(painter, menu.rect_in_window_menubar(), palette, Gfx::ButtonStyle::CoolBar, paint_as_pressed, paint_as_hovered); + } painter.draw_text( text_rect, menu.name(),