소스 검색

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 년 전
부모
커밋
17687435ca
2개의 변경된 파일4개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      Userland/Services/WindowServer/ConnectionFromClient.cpp
  2. 2 0
      Userland/Services/WindowServer/Menu.cpp

+ 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);
     menu_item->set_default(is_default);
     if (checkable)
     if (checkable)
         menu_item->set_checked(checked);
         menu_item->set_checked(checked);
+
+    menu.redraw(*menu_item);
 }
 }
 
 
 void ConnectionFromClient::remove_menu_item(i32 menu_id, i32 identifier)
 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)
 void Menu::redraw(MenuItem const& menu_item)
 {
 {
+    if (!menu_window())
+        return;
     draw(menu_item);
     draw(menu_item);
     menu_window()->invalidate(menu_item.rect());
     menu_window()->invalidate(menu_item.rect());
 }
 }