* wrs(5/28/93) -- modified to be consistent (perform identically) with either
* PDCurses or under Unix System V, R4
*
- * $Id: testcurs.c,v 1.46 2012/11/24 19:38:20 tom Exp $
+ * $Id: testcurs.c,v 1.50 2015/07/05 00:11:10 tom Exp $
*/
#include <test.priv.h>
#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
typeahead(-1);
#endif
+#ifdef NCURSES_MOUSE_VERSION
+ mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
+#endif
#if defined(PDCURSES)
mouse_set(ALL_MOUSE_EVENTS);
#endif
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 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))
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;
"%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");
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;
+ free(format);
} while (answered > 0);
}