]> git.eshelyaron.com Git - emacs.git/commitdiff
(xmenu_show) [!HAVE_X_WINDOWS]: If frame has a minibuffer, don't let lower
authorEli Zaretskii <eliz@gnu.org>
Sat, 6 Sep 2008 13:43:36 +0000 (13:43 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 6 Sep 2008 13:43:36 +0000 (13:43 +0000)
part of menu invade the echo area.

src/ChangeLog
src/xmenu.c

index 018bcd399c148638dbab024cf87aa5daff88f602..27473dd0f66e15825a0ef9e840448c54bf2cce7d 100644 (file)
@@ -1,5 +1,8 @@
 2008-09-06  Eli Zaretskii  <eliz@gnu.org>
 
+       * xmenu.c (xmenu_show) [!HAVE_X_WINDOWS]: If frame has a
+       minibuffer, don't let lower part of menu invade the echo area.
+
        * msdos.c (IT_menu_display): Use STRING_CHAR_ADVANCE instead of a
        "char *q" to access menu text and advance through it.  Revert the
        change that displayed ">" instead of ASCII character 0x10.
index fee66df9c0dd66cf21f5b52d0096e19dcdbf4131..5cc924220076cb12f91db5f6ed702008590dbf18 100644 (file)
@@ -2775,6 +2775,23 @@ xmenu_show (f, x, y, for_click, keymaps, title, error)
       y -= (uly + height) - dispheight;
       uly = dispheight - height;
     }
+#ifndef HAVE_X_WINDOWS
+  if (FRAME_HAS_MINIBUF_P (f) && uly+height > dispheight - 1)
+    {
+      /* Move the menu away of the echo area, to avoid overwriting the
+        menu with help echo messages or vice versa.  */
+      if (BUFFERP (echo_area_buffer[0]) && WINDOWP (echo_area_window))
+       {
+         y -= WINDOW_TOTAL_LINES (XWINDOW (echo_area_window));
+         uly -= WINDOW_TOTAL_LINES (XWINDOW (echo_area_window));
+       }
+      else
+       {
+         y--;
+         uly--;
+       }
+    }
+#endif
   if (ulx < 0) x -= ulx;
   if (uly < 0) y -= uly;