ncurses 6.0 - patch 20150808
[ncurses.git] / test / testcurs.c
index 06d70d8430956e0e5db178cdf0920d16c5a1e1a4..7a44a2c642cdb80e4229322411449b63f863a6ff 100644 (file)
@@ -6,7 +6,7 @@
  *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
  *                  PDCurses or under Unix System V, R4
  *
  *  wrs(5/28/93) -- modified to be consistent (perform identically) with either
  *                  PDCurses or under Unix System V, R4
  *
- * $Id: testcurs.c,v 1.45 2012/11/03 19:27:18 tom Exp $
+ * $Id: testcurs.c,v 1.50 2015/07/05 00:11:10 tom Exp $
  */
 
 #include <test.priv.h>
  */
 
 #include <test.priv.h>
@@ -286,7 +286,7 @@ inputTest(WINDOW *win)
 #ifdef A_COLOR
     if (has_colors()) {
        init_pair(2, COLOR_WHITE, COLOR_RED);
 #ifdef A_COLOR
     if (has_colors()) {
        init_pair(2, COLOR_WHITE, COLOR_RED);
-       wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+       wbkgd(subWin, (chtype) COLOR_PAIR(2) | A_BOLD);
     } else
        wbkgd(subWin, A_BOLD);
 #else
     } else
        wbkgd(subWin, A_BOLD);
 #else
@@ -341,6 +341,9 @@ inputTest(WINDOW *win)
     typeahead(-1);
 #endif
 
     typeahead(-1);
 #endif
 
+#ifdef NCURSES_MOUSE_VERSION
+    mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
+#endif
 #if defined(PDCURSES)
     mouse_set(ALL_MOUSE_EVENTS);
 #endif
 #if defined(PDCURSES)
     mouse_set(ALL_MOUSE_EVENTS);
 #endif
@@ -355,8 +358,38 @@ inputTest(WINDOW *win)
            wprintw(win, "Key Pressed: %c", c);
        else
            wprintw(win, "Key Pressed: %s", unctrl(UChar(c)));
            wprintw(win, "Key Pressed: %c", c);
        else
            wprintw(win, "Key Pressed: %s", unctrl(UChar(c)));
-#if defined(PDCURSES)
+#ifdef KEY_MOUSE
        if (c == KEY_MOUSE) {
        if (c == KEY_MOUSE) {
+#if defined(NCURSES_MOUSE_VERSION)
+#define ButtonChanged(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, 037))
+#define ButtonPressed(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED))
+#define ButtonDouble(n)  ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED))
+#define ButtonTriple(n)  ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED))
+#define ButtonRelease(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED))
+           MEVENT event;
+           int button = 0;
+
+           getmouse(&event);
+           if (ButtonChanged(1))
+               button = 1;
+           else if (ButtonChanged(2))
+               button = 2;
+           else if (ButtonChanged(3))
+               button = 3;
+           else
+               button = 0;
+           wmove(win, 4, 18);
+           wprintw(win, "Button %d: ", button);
+           if (ButtonPressed(button))
+               wprintw(win, "pressed: ");
+           else if (ButtonDouble(button))
+               wprintw(win, "double: ");
+           else if (ButtonTriple(button))
+               wprintw(win, "triple: ");
+           else
+               wprintw(win, "released: ");
+           wprintw(win, " Position: Y: %d X: %d", event.y, event.x);
+#elif defined(PDCURSES)
            int button = 0;
            request_mouse_pos();
            if (BUTTON_CHANGED(1))
            int button = 0;
            request_mouse_pos();
            if (BUTTON_CHANGED(1))
@@ -378,8 +411,9 @@ inputTest(WINDOW *win)
            else
                wprintw(win, "released: ");
            wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
            else
                wprintw(win, "released: ");
            wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
+#endif /* NCURSES_VERSION vs PDCURSES */
        }
        }
-#endif
+#endif /* KEY_MOUSE */
        wrefresh(win);
        if (c == ' ')
            break;
        wrefresh(win);
        if (c == ' ')
            break;
@@ -403,7 +437,7 @@ inputTest(WINDOW *win)
            "%d %[][a-zA-Z]s",
            "%d %[^0-9]"
        };
            "%d %[][a-zA-Z]s",
            "%d %[^0-9]"
        };
-       const char *format = fmt[(unsigned) repeat % SIZEOF(fmt)];
+       char *format = strdup(fmt[(unsigned) repeat % SIZEOF(fmt)]);
 
        wclear(win);
        MvWAddStr(win, 3, 2, "The window should have moved");
 
        wclear(win);
        MvWAddStr(win, 3, 2, "The window should have moved");
@@ -419,12 +453,13 @@ inputTest(WINDOW *win)
        noraw();
        num = 0;
        *buffer = 0;
        noraw();
        num = 0;
        *buffer = 0;
-       answered = mvwscanw(win, 7, 6, strdup(format), &num, buffer);
+       answered = mvwscanw(win, 7, 6, format, &num, buffer);
        MvWPrintw(win, 8, 6,
                  "String: %s Number: %d (%d values read)",
                  buffer, num, answered);
        Continue(win);
        ++repeat;
        MvWPrintw(win, 8, 6,
                  "String: %s Number: %d (%d values read)",
                  buffer, num, answered);
        Continue(win);
        ++repeat;
+       free(format);
     } while (answered > 0);
 }
 
     } while (answered > 0);
 }
 
@@ -681,9 +716,11 @@ padTest(WINDOW *dummy GCC_UNUSED)
        raw();
        wgetch(pad);
 
        raw();
        wgetch(pad);
 
-       spad = subpad(pad, 12, 25, 6, 52);
-       MvWAddStr(spad, 2, 2, "This is a new subpad");
-       box(spad, 0, 0);
+       if ((spad = subpad(pad, 12, 25, 6, 52)) != 0) {
+           MvWAddStr(spad, 2, 2, "This is a new subpad");
+           box(spad, 0, 0);
+           delwin(spad);
+       }
        prefresh(pad, 0, 0, 0, 0, 15, 75);
        keypad(pad, TRUE);
        raw();
        prefresh(pad, 0, 0, 0, 0, 15, 75);
        keypad(pad, TRUE);
        raw();