/****************************************************************************
- * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2007,2008 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 *
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
Thomas E. Dickey (beginning revision 1.27 in 1996).
-$Id: ncurses.c,v 1.292 2007/07/21 17:41:55 tom Exp $
+$Id: ncurses.c,v 1.302 2008/02/23 23:07:28 tom Exp $
***************************************************************************/
#define NCURSES_CONST_PARAM const void
#ifdef TRACE
-static unsigned save_trace = TRACE_ORDINARY | TRACE_CALLS;
+static unsigned save_trace = TRACE_ORDINARY | TRACE_ICALLS | TRACE_CALLS;
extern unsigned _nc_tracing;
#endif
while ((c = wgetch(win)) == CTRL('T')) {
if (_nc_tracing) {
save_trace = _nc_tracing;
- _tracef("TOGGLE-TRACING OFF");
+ Trace(("TOGGLE-TRACING OFF"));
_nc_tracing = 0;
} else {
_nc_tracing = save_trace;
}
trace(_nc_tracing);
if (_nc_tracing)
- _tracef("TOGGLE-TRACING ON");
+ Trace(("TOGGLE-TRACING ON"));
}
#else
c = wgetch(win);
while ((c = wget_wch(win, result)) == CTRL('T')) {
if (_nc_tracing) {
save_trace = _nc_tracing;
- _tracef("TOGGLE-TRACING OFF");
+ Trace(("TOGGLE-TRACING OFF"));
_nc_tracing = 0;
} else {
_nc_tracing = save_trace;
}
trace(_nc_tracing);
if (_nc_tracing)
- _tracef("TOGGLE-TRACING ON");
+ Trace(("TOGGLE-TRACING ON"));
}
#else
c = wget_wch(win, result);
winstack[level].frame = box_win;
}
+#if USE_SOFTKEYS && (NCURSES_VERSION_PATCH < 20071229) && NCURSES_EXT_FUNCS
+static void
+slk_repaint(void)
+{
+ /* this chunk is now done in resize_term() */
+ slk_touch();
+ slk_clear();
+ slk_noutrefresh();
+}
+
+#else
+#define slk_repaint() /* nothing */
+#endif
+
/*
* For wgetch_test(), we create pairs of windows - one for a box, one for text.
* Resize both and paint the box in the parent.
touchwin(stdscr);
wnoutrefresh(stdscr);
-#if USE_SOFTKEYS
- /* FIXME: this chunk should be done in resizeterm() */
- slk_touch();
- slk_clear();
- slk_noutrefresh();
-#endif
+ slk_repaint();
for (n = 0; n < level; ++n) {
wresize(winstack[n].frame, high, wide);
getch_test(void)
{
int delay = begin_getch_test();
+
+ slk_restore();
wgetch_test(0, stdscr, delay);
forget_boxes();
finish_getch_test();
#if USE_WIDEC_SUPPORT
/*
- * For wgetch_test(), we create pairs of windows - one for a box, one for text.
+ * For wget_wch_test(), we create pairs of windows - one for a box, one for text.
* Resize both and paint the box in the parent.
*/
-#ifdef KEY_RESIZE
+#if defined(KEY_RESIZE) && HAVE_WRESIZE
static void
resize_wide_boxes(unsigned level, WINDOW *win)
{
touchwin(stdscr);
wnoutrefresh(stdscr);
-#if USE_SOFTKEYS
- /* FIXME: this chunk should be done in resizeterm() */
- slk_touch();
- slk_clear();
- slk_noutrefresh();
-#endif
+ slk_repaint();
for (n = 0; n < level; ++n) {
wresize(winstack[n].frame, high, wide);
} else
#endif /* NCURSES_MOUSE_VERSION */
if (code == KEY_CODE_YES) {
-#ifdef KEY_RESIZE
+#if defined(KEY_RESIZE) && HAVE_WRESIZE
if (c == KEY_RESIZE) {
resize_wide_boxes(level, win);
}
get_wch_test(void)
{
int delay = begin_getch_test();
+
+ slk_restore();
wget_wch_test(0, stdscr, delay);
forget_boxes();
finish_getch_test();
}
/* *INDENT-OFF* */
static const struct {
- attr_t attr;
+ chtype attr;
NCURSES_CONST char * name;
} attrs_to_test[] = {
{ A_STANDOUT, "STANDOUT" },
}
break;
#endif
+#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE
+ case KEY_RESIZE:
+ wnoutrefresh(stdscr);
+ break;
+#endif
default:
beep();
}
- } while
- ((c = Getchar()) != EOF);
+ } while (!isQuit(c = Getchar()));
done:
slk_clear();
call_slk_color(fg, bg);
}
break;
-
+#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE
+ case KEY_RESIZE:
+ wnoutrefresh(stdscr);
+ break;
+#endif
default:
beep();
}
- } while
- ((c = Getchar()) != EOF);
+ } while (!isQuit(c = Getchar()));
done:
slk_clear();
#if USE_WIDEC_SUPPORT
static cchar_t *
-merge_wide_attr(cchar_t *dst, cchar_t *src, attr_t attr, short pair)
+merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, short pair)
{
int count = getcchar(src, NULL, NULL, NULL, 0);
wchar_t *wch = 0;
}
/* *INDENT-OFF* */
static struct {
- attr_t attr;
+ chtype attr;
const char *name;
} attrs_to_cycle[] = {
{ A_NORMAL, "normal" },
};
#if defined(NCURSES_VERSION)
-#if NCURSES_VERSION_PATCH < 20070331
+#if (NCURSES_VERSION_PATCH < 20070331) && NCURSES_EXT_FUNCS
#define is_keypad(win) (win)->_use_keypad
#define is_scrollok(win) (win)->_scroll
+#elif !defined(is_keypad)
+#define is_keypad(win) FALSE
+#define is_scrollok(win) FALSE
#endif
#else
#define is_keypad(win) FALSE
acs_and_scroll(void)
/* Demonstrate windows */
{
- int c, i;
+ int c;
FRAME *current = (FRAME *) 0, *neww;
WINDOW *usescr = stdscr;
#if HAVE_PUTWIN && HAVE_GETWIN
case CTRL('X'): /* resize window */
if (current) {
pair *tmp, ul, lr;
- int mx, my;
+ int i, mx, my;
move(0, 0);
clrtoeol();
}
}
-static const char *animals[] =
+static CONST_MENUS char *animals[] =
{
"Lions",
"Tigers",
MENU *m;
ITEM *items[SIZEOF(animals)];
ITEM **ip = items;
- const char **ap;
+ CONST_MENUS char **ap;
int mrows, mcols, c;
WINDOW *menuwin;
if (item_value(*ip))
newtrace |= t_tbl[item_index(*ip)].mask;
trace(newtrace);
- _tracef("trace level interactively set to %s", tracetrace(_nc_tracing));
+ Trace(("trace level interactively set to %s", tracetrace(_nc_tracing)));
(void) mvprintw(LINES - 2, 0,
"Trace level is %s\n", tracetrace(_nc_tracing));
break;
#endif
-#if USE_WIDEC_SUPPORT
+#if USE_WIDEC_SUPPORT && USE_LIBPANEL
case 'O':
demo_panels(init_wide_panel, fill_wide_panel);
break;
wbkgd(win, A_REVERSE);
werase(win);
wmove(win, 0, 0);
- wprintw(win, "footer: %d columns", cols);
+ wprintw(win, "footer: window %p, %d columns", win, cols);
wnoutrefresh(win);
return OK;
}
wbkgd(win, A_REVERSE);
werase(win);
wmove(win, 0, 0);
- wprintw(win, "header: %d columns", cols);
+ wprintw(win, "header: window %p, %d columns", win, cols);
wnoutrefresh(win);
return OK;
}