From 17687435ca528986d1c84a87d2fa96e394762f54 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 21 Aug 2022 20:04:33 +0200 Subject: [PATCH] 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. --- Userland/Services/WindowServer/ConnectionFromClient.cpp | 2 ++ Userland/Services/WindowServer/Menu.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Userland/Services/WindowServer/ConnectionFromClient.cpp b/Userland/Services/WindowServer/ConnectionFromClient.cpp index 04a03cc8c3..4a451e9fb3 100644 --- a/Userland/Services/WindowServer/ConnectionFromClient.cpp +++ b/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) diff --git a/Userland/Services/WindowServer/Menu.cpp b/Userland/Services/WindowServer/Menu.cpp index 390a86f64f..3254f05bda 100644 --- a/Userland/Services/WindowServer/Menu.cpp +++ b/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()); }