summaryrefslogtreecommitdiff
path: root/timebox.c
diff options
context:
space:
mode:
Diffstat (limited to 'timebox.c')
-rw-r--r--timebox.c27
1 files changed, 20 insertions, 7 deletions
diff --git a/timebox.c b/timebox.c
index 38abeecc75dd0..288e76735d249 100644
--- a/timebox.c
+++ b/timebox.c
@@ -1,9 +1,9 @@
/*
- * $Id: timebox.c,v 1.54 2013/03/17 15:03:41 tom Exp $
+ * $Id: timebox.c,v 1.59 2018/06/19 22:57:01 tom Exp $
*
* timebox.c -- implements the timebox dialog
*
- * Copyright 2001-2012,2013 Thomas E. Dickey
+ * Copyright 2001-2016,2018 Thomas E. Dickey
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License, version 2.1
@@ -82,7 +82,7 @@ draw_cell(BOX * data)
data->height + (2 * MARGIN), data->width + (2 * MARGIN),
menubox_border_attr, menubox_border2_attr);
- (void) wattrset(data->window, item_attr);
+ dlg_attrset(data->window, item_attr);
wprintw(data->window, "%02d", data->value);
return 0;
}
@@ -148,7 +148,7 @@ dialog_timebox(const char *title,
DLG_KEYS_DATA( DLGK_DELETE_RIGHT,KEY_DC ),
HELPKEY_BINDINGS,
ENTERKEY_BINDINGS,
- DLG_KEYS_DATA( DLGK_ENTER, ' ' ),
+ TOGGLEKEY_BINDINGS,
DLG_KEYS_DATA( DLGK_FIELD_FIRST,KEY_HOME ),
DLG_KEYS_DATA( DLGK_FIELD_LAST, KEY_END ),
DLG_KEYS_DATA( DLGK_FIELD_LAST, KEY_LL ),
@@ -184,10 +184,19 @@ dialog_timebox(const char *title,
struct tm current;
int state = dlg_default_button();
const char **buttons = dlg_ok_labels();
- char *prompt = dlg_strclone(subtitle);
+ char *prompt;
char buffer[MAX_LEN];
DIALOG_VARS save_vars;
+ DLG_TRACE(("# timebox args:\n"));
+ DLG_TRACE2S("title", title);
+ DLG_TRACE2S("message", subtitle);
+ DLG_TRACE2N("height", height);
+ DLG_TRACE2N("width", width);
+ DLG_TRACE2N("hour", hour);
+ DLG_TRACE2N("minute", minute);
+ DLG_TRACE2N("second", second);
+
now_time = time((time_t *) 0);
current = *localtime(&now_time);
@@ -200,7 +209,9 @@ dialog_timebox(const char *title,
retry:
#endif
+ prompt = dlg_strclone(subtitle);
dlg_auto_size(title, prompt, &height, &width, 0, 0);
+
height += MIN_HIGH;
if (width < MIN_WIDE)
width = MIN_WIDE;
@@ -224,7 +235,7 @@ dialog_timebox(const char *title,
dlg_draw_title(dialog, title);
dlg_draw_helpline(dialog, FALSE);
- (void) wattrset(dialog, dialog_attr);
+ dlg_attrset(dialog, dialog_attr);
dlg_print_autowrap(dialog, prompt, height, width);
/* compute positions of hour, month and year boxes */
@@ -303,6 +314,7 @@ dialog_timebox(const char *title,
case DLGK_MOUSE('S'):
state = sSC;
break;
+ case DLGK_TOGGLE:
case DLGK_ENTER:
result = dlg_ok_buttoncode(button);
break;
@@ -340,6 +352,7 @@ dialog_timebox(const char *title,
break;
#ifdef KEY_RESIZE
case KEY_RESIZE:
+ dlg_will_resize(dialog);
/* reset data */
height = old_height;
width = old_width;
@@ -347,9 +360,9 @@ dialog_timebox(const char *title,
minute = mn_box.value;
second = sc_box.value;
/* repaint */
+ free(prompt);
dlg_clear();
dlg_del_window(dialog);
- refresh();
dlg_mouse_free_regions();
goto retry;
#endif