mirror of
https://git.jabber.space/devs/cproof.git
synced 2026-07-24 14:56:22 +00:00
Merge remote-tracking branch 'savar/dynamic_input_block'
This commit is contained in:
@@ -1182,7 +1182,12 @@ cons_show_chat_prefs(void)
|
||||
void
|
||||
cons_inpblock_setting(void)
|
||||
{
|
||||
cons_show("Input block (/inpblock) : %d milliseconds", prefs_get_inpblock());
|
||||
cons_show("Input timeout (/inpblock) : %d milliseconds", prefs_get_inpblock());
|
||||
if (prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) {
|
||||
cons_show("Dynamic timeout (/inpblock) : ON");
|
||||
} else {
|
||||
cons_show("Dynamic timeout (/inpblock) : OFF");
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -180,7 +180,11 @@ ui_get_char(char *input, int *size, int *result)
|
||||
wint_t ch = inp_get_char(input, size, result);
|
||||
if (ch != ERR && *result != ERR) {
|
||||
ui_reset_idle_time();
|
||||
ui_input_nonblocking(TRUE);
|
||||
} else {
|
||||
ui_input_nonblocking(FALSE);
|
||||
}
|
||||
|
||||
return ch;
|
||||
}
|
||||
|
||||
@@ -197,9 +201,34 @@ ui_replace_input(char *input, const char * const new_input, int *size)
|
||||
}
|
||||
|
||||
void
|
||||
ui_input_nonblocking(void)
|
||||
ui_input_nonblocking(gboolean reset)
|
||||
{
|
||||
inp_non_block();
|
||||
static gint timeout = 0;
|
||||
static gint no_input_count = 0;
|
||||
|
||||
if (! prefs_get_boolean(PREF_INPBLOCK_DYNAMIC)) {
|
||||
inp_non_block(prefs_get_inpblock());
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset) {
|
||||
timeout = 0;
|
||||
no_input_count = 0;
|
||||
}
|
||||
|
||||
if (timeout < prefs_get_inpblock()) {
|
||||
no_input_count++;
|
||||
|
||||
if (no_input_count % 10 == 0) {
|
||||
timeout += no_input_count;
|
||||
|
||||
if (timeout > prefs_get_inpblock()) {
|
||||
timeout = prefs_get_inpblock();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inp_non_block(timeout);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -2218,7 +2247,7 @@ ui_ask_password(void)
|
||||
status_bar_update_virtual();
|
||||
inp_block();
|
||||
inp_get_password(passwd);
|
||||
inp_non_block();
|
||||
inp_non_block(prefs_get_inpblock());
|
||||
|
||||
return passwd;
|
||||
}
|
||||
|
||||
@@ -120,9 +120,9 @@ inp_win_resize(void)
|
||||
}
|
||||
|
||||
void
|
||||
inp_non_block(void)
|
||||
inp_non_block(gint timeout)
|
||||
{
|
||||
wtimeout(inp_win, prefs_get_inpblock());
|
||||
wtimeout(inp_win, timeout);
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -40,9 +40,9 @@ wint_t inp_get_char(char *input, int *size, int *result);
|
||||
void inp_win_reset(void);
|
||||
void inp_win_resize(void);
|
||||
void inp_put_back(void);
|
||||
void inp_non_block(void);
|
||||
void inp_non_block(gint);
|
||||
void inp_block(void);
|
||||
void inp_get_password(char *passwd);
|
||||
void inp_replace_input(char *input, const char * const new_input, int *size);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -232,7 +232,7 @@ void ui_statusbar_new(const int win);
|
||||
|
||||
wint_t ui_get_char(char *input, int *size, int *result);
|
||||
void ui_input_clear(void);
|
||||
void ui_input_nonblocking(void);
|
||||
void ui_input_nonblocking(gboolean);
|
||||
void ui_replace_input(char *input, const char * const new_input, int *size);
|
||||
|
||||
void ui_invalid_command_usage(const char * const usage, void (*setting_func)(void));
|
||||
|
||||
@@ -740,6 +740,8 @@ win_save_print(ProfWin *window, const char show_char, GTimeVal *tstamp,
|
||||
|
||||
buffer_push(window->layout->buffer, show_char, time, flags, theme_item, from, message);
|
||||
_win_print(window, show_char, time, flags, theme_item, from, message);
|
||||
// TODO: cross-reference.. this should be replaced by a real event-based system
|
||||
ui_input_nonblocking(TRUE);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -952,4 +954,4 @@ win_printline_nowrap(WINDOW *win, char *msg)
|
||||
waddnstr(win, msg, maxx);
|
||||
|
||||
wmove(win, cury+1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user