diff --git a/Userland/Services/WindowServer/Window.cpp b/Userland/Services/WindowServer/Window.cpp index 27deac338b..dcfbae41e7 100644 --- a/Userland/Services/WindowServer/Window.cpp +++ b/Userland/Services/WindowServer/Window.cpp @@ -183,7 +183,7 @@ void Window::normalize_rect() // For example, the windows that make the desktop rect smaller // than the display resolution (e.g. the TaskBar). auto min_visible = -1; - auto desktop = WindowManager::the().desktop_rect(); + auto desktop = WindowManager::the().arena_rect_for_type(type()) auto min_y = 0; if (type() == WindowType::Normal) { min_size = 50; diff --git a/Userland/Services/WindowServer/WindowManager.cpp b/Userland/Services/WindowServer/WindowManager.cpp index 3a445e8542..52cb1c24f6 100644 --- a/Userland/Services/WindowServer/WindowManager.cpp +++ b/Userland/Services/WindowServer/WindowManager.cpp @@ -1043,7 +1043,7 @@ Gfx::IntRect WindowManager::menubar_rect() const Gfx::IntRect WindowManager::desktop_rect() const { if (active_fullscreen_window()) - return {}; + return Screen::the().rect(); return { 0, menubar_rect().bottom() + 1, @@ -1052,6 +1052,25 @@ Gfx::IntRect WindowManager::desktop_rect() const }; } +Gfx::IntRect WindowManager::arena_rect_for_type(WindowType type) const +{ + switch (type) { + case WindowType::Desktop: + case WindowType::Normal: + return desktop_rect(); + case WindowType::Menu: + case WindowType::WindowSwitcher: + case WindowType::Taskbar: + case WindowType::Tooltip: + case WindowType::Menubar: + case WindowType::MenuApplet: + case WindowType::Notification: + return Screen::the().rect(); + default: + ASSERT_NOT_REACHED(); + } +} + void WindowManager::event(Core::Event& event) { if (static_cast(event).is_mouse_event()) { diff --git a/Userland/Services/WindowServer/WindowManager.h b/Userland/Services/WindowServer/WindowManager.h index 5caa7a878d..7711a19af9 100644 --- a/Userland/Services/WindowServer/WindowManager.h +++ b/Userland/Services/WindowServer/WindowManager.h @@ -120,6 +120,7 @@ public: Gfx::IntRect menubar_rect() const; Gfx::IntRect desktop_rect() const; + Gfx::IntRect arena_rect_for_type(WindowType) const; const Cursor& active_cursor() const; const Cursor& hidden_cursor() const { return *m_hidden_cursor; }