From 30180ac8bb125e4cae03c415201f796863d4c80b Mon Sep 17 00:00:00 2001 From: James Booth Date: Wed, 4 Feb 2015 23:35:28 +0000 Subject: Move SIGWINCH handling to ui/core.c, ignore signal whilst resizing --- src/ui/core.c | 15 +++++++++++++++ src/ui/inputwin.c | 9 --------- src/ui/ui.h | 1 + 3 files changed, 16 insertions(+), 9 deletions(-) (limited to 'src/ui') diff --git a/src/ui/core.c b/src/ui/core.c index de3bafd2..add80dff 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -79,6 +79,8 @@ static char *win_title; static int inp_size; +static gboolean perform_resize = FALSE; + #ifdef HAVE_LIBXSS static Display *display; #endif @@ -120,6 +122,12 @@ ui_init(void) win_update_virtual(window); } +void +ui_sigwinch_handler(int sig) +{ + perform_resize = TRUE; +} + void ui_update(void) { @@ -137,6 +145,13 @@ ui_update(void) status_bar_update_virtual(); inp_put_back(); doupdate(); + + if (perform_resize) { + signal(SIGWINCH, SIG_IGN); + ui_resize(); + perform_resize = FALSE; + signal(SIGWINCH, ui_sigwinch_handler); + } } void diff --git a/src/ui/inputwin.c b/src/ui/inputwin.c index f29b5318..1e78bbcc 100644 --- a/src/ui/inputwin.c +++ b/src/ui/inputwin.c @@ -79,7 +79,6 @@ static gboolean cmd_result = TRUE; static void _inp_win_update_virtual(void); static int _inp_printable(const wint_t ch); static void _inp_win_handle_scroll(void); -static void _inp_resize_signal_handler(int signal); static int _inp_offset_to_col(char *str, int offset); static void _inp_write(char *line, int offset); @@ -125,8 +124,6 @@ create_input_window(void) rl_startup_hook = _inp_rl_startup_hook; rl_callback_handler_install(NULL, _inp_rl_linehandler); - signal(SIGWINCH, _inp_resize_signal_handler); - inp_win = newpad(1, INP_WIN_MAX); wbkgd(inp_win, theme_attrs(THEME_INPUT_TEXT));; keypad(inp_win, TRUE); @@ -311,12 +308,6 @@ _inp_offset_to_col(char *str, int offset) return col; } -static void -_inp_resize_signal_handler(int signal) -{ - ui_resize(); -} - static void _inp_win_handle_scroll(void) { diff --git a/src/ui/ui.h b/src/ui/ui.h index 5008593f..92f570d5 100644 --- a/src/ui/ui.h +++ b/src/ui/ui.h @@ -62,6 +62,7 @@ GSList* ui_get_chat_recipients(void); gboolean ui_switch_win(const int i); void ui_next_win(void); void ui_previous_win(void); +void ui_sigwinch_handler(int sig); void ui_gone_secure(const char * const barejid, gboolean trusted); void ui_gone_insecure(const char * const barejid); -- cgit 1.4.1-2-gfad0