]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/insdelln.c
ncurses 6.2 - patch 20200301
[ncurses.git] / test / insdelln.c
index f25a90c03a09c78b94de7fdd82227ba4fc49b284..55e606aebe1312c472f181878cf359e76b325543 100644 (file)
@@ -1,5 +1,6 @@
 /****************************************************************************
- * Copyright (c) 2008 Free Software Foundation, Inc.                        *
+ * Copyright 2019,2020 Thomas E. Dickey                                     *
+ * Copyright 2008-2014,2017 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.1 2008/12/20 22:06:52 tom Exp $
+ * $Id: insdelln.c,v 1.14 2020/02/02 23:34:34 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 +61,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 +71,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;
 
@@ -116,10 +121,17 @@ static void
 fill_window(WINDOW *win)
 {
     int y, x;
+    int y0 = -1, x0 = -1;
 
     getyx(win, y, x);
-    wmove(win, 1, 0);
+    wmove(win, 0, 0);
     while (waddstr(win, "0123456789 abcdefghijklmnopqrstuvwxyz ") != ERR) {
+       int y1, x1;
+       getyx(win, y1, x1);
+       if (y1 == y0 && x1 == x0)
+           break;
+       x0 = x1;
+       y0 = y1;
     }
     wmove(win, y, x);
 }
@@ -168,6 +180,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *))
        delwin(win1);
        touchwin(win);
     } else {
+       if (win1)
+           delwin(win1);
        beep();
     }
 }
@@ -208,19 +222,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
@@ -270,8 +275,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)) {
@@ -293,7 +298,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)
@@ -334,7 +339,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)
@@ -378,3 +383,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