eliot-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Eliot-dev] eliot/utils ncurses.cpp [cppdic]


From: eliot-dev
Subject: [Eliot-dev] eliot/utils ncurses.cpp [cppdic]
Date: Tue, 04 Dec 2007 19:12:25 +0000

CVSROOT:        /cvsroot/eliot
Module name:    eliot
Branch:         cppdic
Changes by:     Olivier Teulière <ipkiss>      07/12/04 19:12:25

Modified files:
        utils          : ncurses.cpp 

Log message:
        Ncurses interface: Fixed the problem with the backspace key

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/eliot/utils/ncurses.cpp?cvsroot=eliot&only_with_tag=cppdic&r1=1.22.2.3&r2=1.22.2.4

Patches:
Index: ncurses.cpp
===================================================================
RCS file: /cvsroot/eliot/eliot/utils/ncurses.cpp,v
retrieving revision 1.22.2.3
retrieving revision 1.22.2.4
diff -u -b -r1.22.2.3 -r1.22.2.4
--- ncurses.cpp 4 Dec 2007 11:10:00 -0000       1.22.2.3
+++ ncurses.cpp 4 Dec 2007 19:12:25 -0000       1.22.2.4
@@ -511,14 +511,15 @@
     wint_t c;
     wmove(win, y, x);
     curs_set(1);
-    while ((get_wch(&c)) == OK)
+    int res;
+    while ((res = get_wch(&c)) != ERR)
     {
         if (c == 0x1b )  // Esc
         {
             curs_set(0);
             return false;
         }
-        else if (c == KEY_ENTER || c == 0xD)
+        else if ((c == KEY_ENTER && res == KEY_CODE_YES) || c == 0xD)
         {
             curs_set(0);
             return true;
@@ -529,14 +530,14 @@
             redraw(win);
             wmove(win, y, x);
         }
-        else if (c == KEY_BACKSPACE && oString.size() > 0)
+        else if (c == KEY_BACKSPACE && res == KEY_CODE_YES && !oString.empty())
         {
             x--;
             mvwprintw(win, y, x, " ");
             wmove(win, y, x);
             oString.erase(oString.size() - 1);
         }
-        else if (iswalnum(c) && oString.size() < (unsigned int)n)
+        else if (res == OK && iswalnum(c) && oString.size() < (unsigned int)n)
         {
             mvwprintw(win, y, x, "%lc", c);
             x++;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]