From dbe528755ef388f5db01296eaf5dbabcb3c82ec7 Mon Sep 17 00:00:00 2001
From: markt <markt>
Date: Fri, 5 Jan 2007 19:58:44 +0000
Subject: fix window menu placement with toolbar at top of screen, and disable
 titlebar when doing it

---
 ChangeLog         | 3 +++
 src/IconButton.cc | 1 -
 src/Window.cc     | 6 ++++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 299a5b2..6f269df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,9 @@
  (Format: Year/Month/Day)
 Changes for 1.0rc3:
 *07/01/05:
+   * Fix placement of window menu with toolbar at the top of the screen,
+     and remove titlebar from window menu (Mark)
+     Window.cc IconButton.cc
    * Don't change focus to a window that doesn't accept focus (Mark)
      FocusControl.cc
    * Only grab keybindings on screens managed by fluxbox (Mark)
diff --git a/src/IconButton.cc b/src/IconButton.cc
index b9cf523..aaff5b8 100644
--- a/src/IconButton.cc
+++ b/src/IconButton.cc
@@ -57,7 +57,6 @@ public:
     explicit ShowMenu(FluxboxWindow &win):m_win(win) { }
     void execute() {
         m_win.screen().hideMenus();
-        m_win.menu().enableTitle();
         // get last button pos
         const XEvent &event = Fluxbox::instance()->lastEvent();
         int x = event.xbutton.x_root - (m_win.menu().width() / 2);
diff --git a/src/Window.cc b/src/Window.cc
index 523fd66..d878e2e 100644
--- a/src/Window.cc
+++ b/src/Window.cc
@@ -2333,8 +2333,10 @@ void FluxboxWindow::showMenu(int menu_x, int menu_y) {
 
     int head = screen().getHead(menu_x, menu_y);
 
-    // but not under screen
-    if (menu_y + menu().height() >= screen().maxBottom(head))
+    // but not off the screen
+    if (menu_y < static_cast<signed>(screen().maxTop(head)))
+        menu_y = screen().maxTop(head);
+    else if (menu_y + menu().height() >= screen().maxBottom(head))
         menu_y = screen().maxBottom(head) - menu().height() - 1 - menu().fbwindow().borderWidth();
 
     if (menu_x < static_cast<signed>(screen().maxLeft(head)))
-- 
cgit v0.11.2