]> git.eshelyaron.com Git - emacs.git/commitdiff
(IT_menu_display): Truncate long menu lines at the right
authorEli Zaretskii <eliz@gnu.org>
Mon, 24 Jan 2000 14:44:26 +0000 (14:44 +0000)
committerEli Zaretskii <eliz@gnu.org>
Mon, 24 Jan 2000 14:44:26 +0000 (14:44 +0000)
screen boundary.

src/ChangeLog
src/msdos.c

index 6f52fa0480433682dae3683424bc09a52e92c523..e72c2250ea0655fa1ef6f4ef883a3bd62e344da1 100644 (file)
@@ -1,3 +1,8 @@
+2000-01-24  Eli Zaretskii  <eliz@is.elta.co.il>
+
+       * msdos.c (IT_menu_display): Truncate long menu lines at the right
+       screen boundary.
+
 2000-01-23  Jason Rumney  <jasonr@gnu.org>
 
        * w32fns.c (w32_defined_color): Apply gamma correction before
index 3cd0d7e5a4ea9050a219808b874ff34f4fa07139..fc1509b601024506d3cee4279f5056551c0449fb 100644 (file)
@@ -3268,6 +3268,8 @@ IT_menu_display (XMenu *menu, int y, int x, int *faces)
   IT_update_begin (sf);
   for (i = 0; i < menu->count; i++)
     {
+      int max_width = width + 2;
+
       IT_cursor_to (y + i, x);
       enabled
        = (!menu->submenu[i] && menu->panenumber[i]) || (menu->submenu[i]);
@@ -3292,13 +3294,18 @@ IT_menu_display (XMenu *menu, int y, int x, int *faces)
              p++;
            }
        }
-           
-      for (; j < width; j++, p++)
+      /* Don't let the menu text overflow into the next screen row.  */
+      if (x + max_width > screen_size_X)
+       {
+         max_width = screen_size_X - x;
+         text[max_width - 1].u.ch = '$'; /* indicate it's truncated */
+       }
+      for (; j < max_width - 2; j++, p++)
        SET_CHAR_GLYPH (*p, ' ', face, 0);
 
       SET_CHAR_GLYPH (*p, menu->submenu[i] ? 16 : ' ', face, 0);
       p++;
-      IT_write_glyphs (text, width + 2);
+      IT_write_glyphs (text, max_width);
     }
   IT_update_end (sf);
   IT_cursor_to (row, col);