Browse Source

WindowServer: Redraw menu items after client updates them somehow

This fixes an issue where the undo/redo actions in TextEditor only
updated once you hovered over them.
Andreas Kling 2 years ago
parent
commit
17687435ca

+ 2 - 0
Userland/Services/WindowServer/ConnectionFromClient.cpp

@@ -191,6 +191,8 @@ void ConnectionFromClient::update_menu_item(i32 menu_id, i32 identifier, [[maybe
     menu_item->set_default(is_default);
     if (checkable)
         menu_item->set_checked(checked);
+
+    menu.redraw(*menu_item);
 }
 
 void ConnectionFromClient::remove_menu_item(i32 menu_id, i32 identifier)

+ 2 - 0
Userland/Services/WindowServer/Menu.cpp

@@ -106,6 +106,8 @@ void Menu::redraw()
 
 void Menu::redraw(MenuItem const& menu_item)
 {
+    if (!menu_window())
+        return;
     draw(menu_item);
     menu_window()->invalidate(menu_item.rect());
 }