From 4d77cdf9a805208c6f9993c657ae6c5a41a78372 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 11 Jan 2020 14:38:09 +0100 Subject: [PATCH] WindowServer: If a menu can't fit on screen, at least put it at y=0 We're gonna need to handle overflow better than this, but at least this way we can see the top of the menu, even if we can't scroll down to see the rest of it. For #1043. --- Servers/WindowServer/WSMenu.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Servers/WindowServer/WSMenu.cpp b/Servers/WindowServer/WSMenu.cpp index 0bc6ebdc77..3851342068 100644 --- a/Servers/WindowServer/WSMenu.cpp +++ b/Servers/WindowServer/WSMenu.cpp @@ -409,11 +409,15 @@ void WSMenu::popup(const Point& position, bool is_submenu) const int margin = 30; Point adjusted_pos = position; - if (adjusted_pos.x() + window.width() >= WSScreen::the().width() - margin) { - adjusted_pos = adjusted_pos.translated(-window.width(), 0); - } - if (adjusted_pos.y() + window.height() >= WSScreen::the().height() - margin) { - adjusted_pos = adjusted_pos.translated(0, -window.height()); + if (window.height() >= WSScreen::the().height()) { + adjusted_pos.set_y(0); + } else { + if (adjusted_pos.x() + window.width() >= WSScreen::the().width() - margin) { + adjusted_pos = adjusted_pos.translated(-window.width(), 0); + } + if (adjusted_pos.y() + window.height() >= WSScreen::the().height() - margin) { + adjusted_pos = adjusted_pos.translated(0, -window.height()); + } } window.move_to(adjusted_pos);