(xmenu_show) [!HAVE_X_WINDOWS]: If frame has a minibuffer, don't let lower

part of menu invade the echo area.
This commit is contained in:
Eli Zaretskii
2008-09-06 13:43:36 +00:00
parent 08792c113a
commit 2de7397f32
2 changed files with 20 additions and 0 deletions

View 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.

View 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;