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

LibGUI+Taskbar+WindowServer: Remove mode and parent methods from Taskbar

Taskbar only needs a modeless parent and the activity state of the
modal chain to update buttons.
This commit is contained in:
thankyouverycool 2022-08-23 16:42:00 -04:00 committed by Andreas Kling
parent d54dc22362
commit 35a230f974
9 changed files with 27 additions and 83 deletions

View file

@ -423,9 +423,22 @@ void WindowManager::tell_wm_about_window(WMConnectionFromClient& conn, Window& w
return;
if (window.is_internal())
return;
auto* parent = window.parent_window();
auto& window_stack = is_stationary_window_type(window.type()) ? current_window_stack() : window.window_stack();
conn.async_window_state_changed(conn.window_id(), window.client_id(), window.window_id(), parent ? parent->client_id() : -1, parent ? parent->window_id() : -1, window_stack.row(), window_stack.column(), window.is_active(), window.is_minimized(), window.is_modal(), window.is_frameless(), (i32)window.type(), window.computed_title(), window.rect(), window.progress());
if (window.is_capturing_input())
return;
if (window.blocking_modal_window())
return;
Window* modeless = window.modeless_ancestor();
if (!modeless)
return;
auto is_active = for_each_window_in_modal_chain(*modeless, [&](auto& w) {
if (w.is_active())
return IterationDecision::Break;
return IterationDecision::Continue;
});
auto& window_stack = is_stationary_window_type(modeless->type()) ? current_window_stack() : modeless->window_stack();
conn.async_window_state_changed(conn.window_id(), modeless->client_id(), modeless->window_id(), window_stack.row(), window_stack.column(), is_active, modeless->is_minimized(), modeless->is_frameless(), (i32)modeless->type(), modeless->computed_title(), modeless->rect(), modeless->progress());
}
void WindowManager::tell_wm_about_window_rect(WMConnectionFromClient& conn, Window& window)

View file

@ -3,7 +3,7 @@
endpoint WindowManagerClient
{
window_removed(i32 wm_id, i32 client_id, i32 window_id) =|
window_state_changed(i32 wm_id, i32 client_id, i32 window_id, i32 parent_client_id, i32 parent_window_id, u32 workspace_row, u32 workspace_column, bool is_active, bool is_minimized, bool is_modal, bool is_frameless, i32 window_type, [UTF8] String title, Gfx::IntRect rect, Optional<i32> progress) =|
window_state_changed(i32 wm_id, i32 client_id, i32 window_id, u32 workspace_row, u32 workspace_column, bool is_active, bool is_minimized, bool is_frameless, i32 window_type, [UTF8] String title, Gfx::IntRect rect, Optional<i32> progress) =|
window_icon_bitmap_changed(i32 wm_id, i32 client_id, i32 window_id, Gfx::ShareableBitmap bitmap) =|
window_rect_changed(i32 wm_id, i32 client_id, i32 window_id, Gfx::IntRect rect) =|
applet_area_size_changed(i32 wm_id, Gfx::IntSize size) =|