]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - test/chgat.c
ncurses 6.1 - patch 20181027
[ncurses.git] / test / chgat.c
index ef9ab6762362dd6e602014565e1bddd277d1772b..72dd48b6afff9765e4a8b48674c06d7f29fdb01f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 2006,2007 Free Software Foundation, Inc.                   *
+ * Copyright (c) 2006-2012,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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
  * authorization.                                                           *
  ****************************************************************************/
 /*
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: chgat.c,v 1.7 2007/06/30 17:52:17 tom Exp $
+ * $Id: chgat.c,v 1.17 2017/09/28 23:04:14 tom Exp $
  *
  * test-driver for chgat/wchgat/mvchgat/mvwchgat
  */
 
 #include <test.priv.h>
  *
  * test-driver for chgat/wchgat/mvchgat/mvwchgat
  */
 
 #include <test.priv.h>
+#include <popup_msg.h>
 
 
-#ifdef HAVE_CHGAT
+#if HAVE_CHGAT
 
 #define SHOW(n) ((n) == ERR ? "ERR" : "OK")
 #define COLOR_DEFAULT (-1)
 
 #define SHOW(n) ((n) == ERR ? "ERR" : "OK")
 #define COLOR_DEFAULT (-1)
 #endif
 
 typedef struct {
 #endif
 
 typedef struct {
-    unsigned c;
-    unsigned v;
-    int pair;
-    unsigned attr;
+    size_t c;
+    size_t v;
+    short pair;
+    attr_t attr;
     int count;
     int ch;
     const char *c_msg;
     int count;
     int ch;
     const char *c_msg;
@@ -60,12 +61,12 @@ typedef struct {
 } STATUS;
 
 static const char *
 } STATUS;
 
 static const char *
-color_params(unsigned state, int *pair)
+color_params(size_t state, short *pair)
 {
     /* *INDENT-OFF* */
     static struct {
 {
     /* *INDENT-OFF* */
     static struct {
-       int pair;
-       int fg, bg;
+       short pair;
+       short fg, bg;
        const char *msg;
     } table[] = {
        { 0, COLOR_DEFAULT, COLOR_DEFAULT, "default" },
        const char *msg;
     } table[] = {
        { 0, COLOR_DEFAULT, COLOR_DEFAULT, "default" },
@@ -79,7 +80,7 @@ color_params(unsigned state, int *pair)
 
     if (has_colors()) {
        if (first) {
 
     if (has_colors()) {
        if (first) {
-           unsigned n;
+           size_t n;
 
            start_color();
            for (n = 0; n < SIZEOF(table); ++n) {
 
            start_color();
            for (n = 0; n < SIZEOF(table); ++n) {
@@ -95,18 +96,18 @@ color_params(unsigned state, int *pair)
 }
 
 static const char *
 }
 
 static const char *
-video_params(unsigned state, unsigned *attr)
+video_params(size_t state, attr_t *attr)
 {
     /* *INDENT-OFF* */
     static struct {
 {
     /* *INDENT-OFF* */
     static struct {
-       unsigned attr;
+       attr_t attr;
        const char *msg;
     } table[] = {
        const char *msg;
     } table[] = {
-       { A_NORMAL,     "normal" },
-       { A_BOLD,       "bold" },
-       { A_REVERSE,    "reverse" },
-       { A_UNDERLINE,  "underline" },
-       { A_BLINK,      "blink" },
+       { WA_NORMAL,    "normal" },
+       { WA_BOLD,      "bold" },
+       { WA_REVERSE,   "reverse" },
+       { WA_UNDERLINE, "underline" },
+       { WA_BLINK,     "blink" },
     };
     /* *INDENT-ON* */
 
     };
     /* *INDENT-ON* */
 
@@ -124,10 +125,17 @@ static void
 fill_window(WINDOW *win)
 {
     int y, x;
 fill_window(WINDOW *win)
 {
     int y, x;
+    int y0 = -1, x0 = -1;
 
     getyx(win, y, x);
     wmove(win, 0, 0);
     while (waddstr(win, "0123456789 abcdefghijklmnopqrstuvwxyz ") != ERR) {
 
     getyx(win, y, x);
     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);
 }
     }
     wmove(win, y, x);
 }
@@ -169,6 +177,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *))
        delwin(win1);
        touchwin(win);
     } else {
        delwin(win1);
        touchwin(win);
     } else {
+       if (win1 != 0)
+           delwin(win1);
        beep();
     }
 }
        beep();
     }
 }
@@ -191,7 +201,7 @@ init_status(WINDOW *win, STATUS * sp)
 static void
 show_help(WINDOW *win)
 {
 static void
 show_help(WINDOW *win)
 {
-    static const char *table[] =
+    static const char *msgs[] =
     {
        "Basic commands:"
        ,"Use h/j/k/l or arrow keys to move the cursor."
     {
        "Basic commands:"
        ,"Use h/j/k/l or arrow keys to move the cursor."
@@ -205,19 +215,10 @@ show_help(WINDOW *win)
        ,"=     resets count to zero."
        ,"-     negates count."
        ,"?     shows this help-window"
        ,"=     resets count to zero."
        ,"-     negates count."
        ,"?     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, msgs);
 }
 
 static void
 }
 
 static void
@@ -271,8 +272,8 @@ update_status(WINDOW *win, STATUS * sp)
        sp->count = -(sp->count);
        show_status(win, sp);
        break;
        sp->count = -(sp->count);
        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)) {
        break;
     default:
        if (isdigit(sp->ch)) {