From f833362536df1d7df68d1c47811f81f977d10fd3 Mon Sep 17 00:00:00 2001 From: Peter Elliott Date: Sun, 28 Jun 2020 18:14:41 -0600 Subject: [PATCH] WindowServer: don't send resize on resolution change unless needed fixes #2575 The extra ResizeEvent would be handled after on_rect_change, and would reset the size of main_widget to what it was before the resize. Bonus: Less unnecessary events. --- Services/WindowServer/Window.cpp | 15 ++++++++++++--- Services/WindowServer/WindowManager.cpp | 2 -- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Services/WindowServer/Window.cpp b/Services/WindowServer/Window.cpp index e3f84d6f0d4..b99b906a359 100644 --- a/Services/WindowServer/Window.cpp +++ b/Services/WindowServer/Window.cpp @@ -520,11 +520,20 @@ void Window::recalculate_rect() return; auto old_rect = m_rect; - if (m_tiled != WindowTileType::None) + bool send_event = true; + if (m_tiled != WindowTileType::None) { set_rect(tiled_rect(m_tiled)); - else if (is_maximized()) + } else if (is_maximized()) { set_rect(WindowManager::the().maximized_window_rect(*this)); - Core::EventLoop::current().post_event(*this, make(old_rect, m_rect)); + } else if (type() == WindowType::Desktop) { + set_rect(WindowManager::the().desktop_rect()); + } else { + send_event = false; + } + + if (send_event) { + Core::EventLoop::current().post_event(*this, make(old_rect, m_rect)); + } } void Window::add_child_window(Window& child_window) diff --git a/Services/WindowServer/WindowManager.cpp b/Services/WindowServer/WindowManager.cpp index 67e21b0a3bc..b6405107333 100644 --- a/Services/WindowServer/WindowManager.cpp +++ b/Services/WindowServer/WindowManager.cpp @@ -142,8 +142,6 @@ bool WindowManager::set_resolution(int width, int height) }); if (success) { for_each_window([](Window& window) { - if (window.type() == WindowType::Desktop) - window.set_rect(WindowManager::the().desktop_rect()); window.recalculate_rect(); return IterationDecision::Continue; });