summaryrefslogtreecommitdiff
path: root/src/msdos.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2008-09-06 11:15:04 +0000
committerEli Zaretskii <eliz@gnu.org>2008-09-06 11:15:04 +0000
commite779d63012784daf821e011d51fc274dbbd310ad (patch)
tree743cf89d82eb4fb857812dac1306f706ca584183 /src/msdos.c
parentd632fb82ffc5a48ea42cfe182de83feed4b844ab (diff)
downloademacs-e779d63012784daf821e011d51fc274dbbd310ad.tar.gz
emacs-e779d63012784daf821e011d51fc274dbbd310ad.tar.bz2
emacs-e779d63012784daf821e011d51fc274dbbd310ad.zip
(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.
Diffstat (limited to 'src/msdos.c')
-rw-r--r--src/msdos.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/msdos.c b/src/msdos.c
index 4063753c70a..c8a8b5f1b88 100644
--- a/src/msdos.c
+++ b/src/msdos.c
@@ -3556,7 +3556,7 @@ IT_menu_display (XMenu *menu, int y, int x, int pn, int *faces, int disp_help)
{
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 @@ IT_menu_display (XMenu *menu, int y, int x, int pn, int *faces, int disp_help)
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 @@ IT_menu_display (XMenu *menu, int y, int x, int pn, int *faces, int disp_help)
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);
}