changeset 98030:5c5323a73e60

(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.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 06 Sep 2008 11:14:03 +0000
parents 9d3339355453
children 0c928d7e6d88
files src/msdos.c
diffstat 1 files changed, 9 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/msdos.c	Sat Sep 06 10:05:45 2008 +0000
+++ b/src/msdos.c	Sat Sep 06 11:14:03 2008 +0000
@@ -3556,7 +3556,7 @@
 {
   int i, j, face, width,  mx, my, enabled, mousehere, row, col;
   struct glyph *text, *p;
-  char *q;
+  const unsigned char *q;
   struct frame *sf = SELECTED_FRAME();
 
   menu_help_message = NULL;
@@ -3590,18 +3590,19 @@
       p++;
       for (j = 0, q = menu->text[i]; *q; j++)
 	{
-	  if (*q > 26)
+	  unsigned c = STRING_CHAR_ADVANCE (q);
+
+	  if (c > 26)
 	    {
-	      BUILD_CHAR_GLYPH (*p, *q++, face, 0);
+	      BUILD_CHAR_GLYPH (*p, c, face, 0);
 	      p++;
 	    }
 	  else	/* make '^x' */
 	    {
-	      /* FIXME: need to handle non-ASCII characters!  */
 	      BUILD_CHAR_GLYPH (*p, '^', face, 0);
 	      p++;
 	      j++;
-	      BUILD_CHAR_GLYPH (*p, *q++ + 64, face, 0);
+	      BUILD_CHAR_GLYPH (*p, c + 64, face, 0);
 	      p++;
 	    }
 	}
@@ -3614,9 +3615,9 @@
       for (; j < max_width - 2; j++, p++)
 	BUILD_CHAR_GLYPH (*p, ' ', face, 0);
 
-      /* FIXME: should use Unicode codepoint for what Emacs 22.x
-	 displayed here.  */
-      BUILD_CHAR_GLYPH (*p, menu->submenu[i] ? '>' : ' ', face, 0);
+      /* 16 is the character code of a character that on DOS terminal
+	 produces a nice-looking right-pointing arrow glyph.  */
+      BUILD_CHAR_GLYPH (*p, menu->submenu[i] ? 16 : ' ', face, 0);
       p++;
       IT_write_glyphs (sf, text, max_width);
     }