浏览代码

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.
Andreas Kling 5 年之前
父节点
当前提交
4d77cdf9a8
共有 1 个文件被更改,包括 9 次插入5 次删除
  1. 9 5
      Servers/WindowServer/WSMenu.cpp

+ 9 - 5
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);