X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fmovewindow.c;h=0c94572d2c63d4b3e35c77ea4dbbc49c9be7cdb4;hp=91c7266ad77998834cfe1b499303638342fc08a4;hb=f3ec084eb66ba14feb6357b674fb85dd474933d8;hpb=a924c24b2535cccdc0f5f991cd8ddcadcfa1f0d2 diff --git a/test/movewindow.c b/test/movewindow.c index 91c7266a..0c94572d 100644 --- a/test/movewindow.c +++ b/test/movewindow.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006-2013,2017 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2006-2013,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: movewindow.c,v 1.40 2017/04/08 23:01:47 tom Exp $ + * $Id: movewindow.c,v 1.51 2020/02/02 23:34:34 tom Exp $ * * Demonstrate move functions for windows and derived windows from the curses * library. @@ -45,13 +46,18 @@ TODO: */ #include -#include + +#if HAVE_MVDERWIN && HAVE_MVWIN + +#include #ifdef HAVE_XCURSES #undef derwin #endif -#ifdef NCURSES_VERSION +#if defined(NCURSES_CONST) +#define CONST_FMT NCURSES_CONST +#elif defined(PDCURSES) #define CONST_FMT const #else #define CONST_FMT /* nothing */ @@ -73,8 +79,8 @@ typedef struct { WINDOW *child; /* the actual value */ } FRAME; -static void head_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2); -static void tail_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2); +static void head_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static void tail_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2); static unsigned num_windows; static FRAME *all_windows; @@ -102,6 +108,8 @@ message(int lineno, CONST_FMT char *fmt, va_list argp) vsprintf(buffer, fmt, argp); addstr(buffer); } +#elif defined(HAVE_VW_PRINTW) + vw_printw(stdscr, fmt, argp); #else vwprintw(stdscr, fmt, argp); #endif @@ -111,7 +119,7 @@ message(int lineno, CONST_FMT char *fmt, va_list argp) } static void -head_line(CONST_FMT char *fmt,...) +head_line(CONST_FMT char *fmt, ...) { va_list argp; @@ -121,7 +129,7 @@ head_line(CONST_FMT char *fmt,...) } static void -tail_line(CONST_FMT char *fmt,...) +tail_line(CONST_FMT char *fmt, ...) { va_list argp; @@ -190,6 +198,7 @@ selectcell(WINDOW *parent, moved = TRUE; break; case QUIT: + /* FALLTHRU */ case ESCAPE: return ((PAIR *) 0); #ifdef NCURSES_MOUSE_VERSION @@ -211,8 +220,8 @@ selectcell(WINDOW *parent, break; } } - /* FALLTHRU */ #endif + /* FALLTHRU */ default: res.y = uli + i; res.x = ulj + j; @@ -637,7 +646,7 @@ show_help(WINDOW *current) int key; CONST_FMT char * msg; } help[] = { - { '?', "Show this screen" }, + { HELP_KEY_1, "Show this screen" }, { 'b', "Draw a box inside the current window" }, { 'c', "Create a new window" }, { 'd', "Create a new derived window" }, @@ -654,20 +663,20 @@ show_help(WINDOW *current) }; /* *INDENT-ON* */ - WINDOW *mywin = newwin(LINES, COLS, 0, 0); - int row; + char **msgs = typeCalloc(char *, SIZEOF(help) + 1); + size_t n; - for (row = 0; row < LINES - 2 && row < (int) SIZEOF(help); ++row) { - wmove(mywin, row + 1, 1); - wprintw(mywin, "%s", keyname(help[row].key)); - wmove(mywin, row + 1, 20); - wprintw(mywin, "%s", help[row].msg); + for (n = 0; n < SIZEOF(help); ++n) { + size_t need = (21 + strlen(help[n].msg)); + msgs[n] = typeMalloc(char, need); + _nc_SPRINTF(msgs[n], _nc_SLIMIT(need) + "%-20s%s", keyname(help[n].key), help[n].msg); + } + popup_msg2(current, msgs); + for (n = 0; n < SIZEOF(help); ++n) { + free(msgs[n]); } - box_inside(mywin); - wmove(mywin, 1, 1); - wgetch(mywin); - delwin(mywin); - refresh_all(current); + free(msgs); } int @@ -695,7 +704,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) getyx(current_win, y, x); switch (ch) { - case '?': + case HELP_KEY_1: show_help(current_win); break; case 'b': @@ -767,3 +776,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) #endif ExitProgram(EXIT_SUCCESS); } +#else +int +main(void) +{ + printf("This program requires the curses mvderwin and mvwin functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif