ncurses 6.1 - patch 20191214
[ncurses.git] / test / insdelln.c
index 2b5ca0be6c2981015b530d7a9d44b4efebb42da3..95fd2bed318cf651b1405208e1d82aeaf5cb1df4 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2008,2009 Free Software Foundation, Inc.                   *
+ * Copyright (c) 2008-2017,2019 Free Software Foundation, Inc.              *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: insdelln.c,v 1.2 2009/07/15 23:21:04 tom Exp $
+ * $Id: insdelln.c,v 1.13 2019/08/24 23:11:01 tom Exp $
  *
  * test-driver for deleteln, wdeleteln, insdelln, winsdelln, insertln, winsertln
  */
 
 #include <test.priv.h>
 
+#if HAVE_WINSDELLN
+
+#include <popup_msg.h>
+
 #define SHOW(n) ((n) == ERR ? "ERR" : "OK")
 #define COLOR_DEFAULT (-1)
 
@@ -56,8 +60,8 @@ color_params(unsigned state, int *pair)
 {
     /* *INDENT-OFF* */
     static struct {
-       int pair;
-       int fg, bg;
+       short pair;
+       short fg, bg;
        const char *msg;
     } table[] = {
        { 0, COLOR_DEFAULT, COLOR_DEFAULT, "default" },
@@ -66,10 +70,10 @@ color_params(unsigned state, int *pair)
     };
     /* *INDENT-ON* */
 
-    static bool first = TRUE;
     const char *result = 0;
 
     if (has_colors()) {
+       static bool first = TRUE;
        if (first) {
            unsigned n;
 
@@ -175,6 +179,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *))
        delwin(win1);
        touchwin(win);
     } else {
+       if (win1)
+           delwin(win1);
        beep();
     }
 }
@@ -215,19 +221,10 @@ show_help(WINDOW *win)
        ,"q     quit"
        ,"=     resets count to zero."
        ,"?     shows this help-window"
-       ,""
-       ,""
+       ,0
     };
 
-    int y_max, x_max;
-    int row;
-
-    getmaxyx(win, y_max, x_max);
-    for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) {
-       mvwprintw(win, row, 0, "%.*s", x_max, table[row]);
-    }
-    while (wgetch(win) != 'q')
-       beep();
+    popup_msg(win, table);
 }
 
 static void
@@ -277,8 +274,8 @@ update_status(WINDOW *win, STATUS * sp)
        sp->count = 0;
        show_status(win, sp);
        break;
-    case '?':
-       do_subwindow(win, sp, show_help);
+    case HELP_KEY_1:
+       show_help(win);
        break;
     default:
        if (isdigit(sp->ch)) {
@@ -300,7 +297,7 @@ test_winsdelln(WINDOW *win)
     init_status(win, &st);
 
     do {
-       wattrset(win, st.attr | COLOR_PAIR(st.pair));
+       (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr));
        switch (st.ch) {
        case 'i':
            for (n = 0; n < st.count; ++n)
@@ -341,7 +338,7 @@ test_insdelln(void)
     init_status(stdscr, &st);
 
     do {
-       attrset(st.attr | COLOR_PAIR(st.pair));
+       (void) attrset(AttrArg(COLOR_PAIR(st.pair), st.attr));
        switch (st.ch) {
        case 'i':
            for (n = 0; n < st.count; ++n)
@@ -385,3 +382,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
 
     ExitProgram(EXIT_SUCCESS);
 }
+
+#else
+int
+main(void)
+{
+    printf("This program requires the curses winsdelln function\n");
+    ExitProgram(EXIT_FAILURE);
+}
+#endif