From f5a66e7b9f19b8781037da3bd2cf3a615f6c5096 Mon Sep 17 00:00:00 2001 From: Pierre-Alexandre Meyer Date: Fri, 28 Aug 2009 22:21:00 -0700 Subject: [PATCH] cmenu: refactor printmenuitem function Simplify the printmenuitem function, now that putch is smarter. --- com32/cmenu/libmenu/menu.c | 55 ++++++++++++++-------------------------------- 1 file changed, 17 insertions(+), 38 deletions(-) diff --git a/com32/cmenu/libmenu/menu.c b/com32/cmenu/libmenu/menu.c index 4abc7b5..eff05c4 100644 --- a/com32/cmenu/libmenu/menu.c +++ b/com32/cmenu/libmenu/menu.c @@ -87,45 +87,24 @@ char getch(char *scan) /* attr[0] is non-hilite attr, attr[1] is highlight attr */ void printmenuitem(const char *str, uchar * attr) { - uchar page = getdisppage(); - uchar row, col; - int hlite = NOHLITE; // Initially no highlighting - - getpos(&row, &col, page); - while (*str) { - switch (*str) { - case '\b': - --col; - break; - case '\n': - ++row; - break; - case '\r': - col = 0; - break; - case BELL: // No Bell Char - break; - case ENABLEHLITE: // Switch on highlighting - hlite = HLITE; - break; - case DISABLEHLITE: // Turn off highlighting - hlite = NOHLITE; - break; - default: - putch(*str, attr[hlite], page); - ++col; - } - if (col > getnumcols()) { - ++row; - col = 0; - } - if (row > getnumrows()) { - scrollup(); - row = getnumrows(); + uchar page = getdisppage(); + int hlite = NOHLITE; // Initially no highlighting + + while (*str) { + switch (*str) { + case BELL: // No Bell Char + break; + case ENABLEHLITE: // Switch on highlighting + hlite = HLITE; + break; + case DISABLEHLITE: // Turn off highlighting + hlite = NOHLITE; + break; + default: + putch(*str, attr[hlite], page); + } + str++; } - gotoxy(row, col, page); - str++; - } } int find_shortcut(pt_menu menu, uchar shortcut, int index) -- 2.7.4