1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Added SIGWINCH handler

This commit is contained in:
James Booth 2015-01-31 18:02:42 +00:00
parent fe10f2b2e3
commit e6f27de552
2 changed files with 18 additions and 3 deletions

View File

@ -41,6 +41,9 @@
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <sys/ioctl.h>
#include <unistd.h>
#ifdef HAVE_LIBXSS
#include <X11/extensions/scrnsaver.h>
#endif
@ -91,7 +94,6 @@ ui_init(void)
{
log_info("Initialising UI");
initscr();
raw();
keypad(stdscr, TRUE);
if (prefs_get_boolean(PREF_MOUSE)) {
mousemask(ALL_MOUSE_EVENTS, NULL);
@ -221,9 +223,13 @@ ui_input_nonblocking(gboolean reset)
void
ui_resize(void)
{
log_info("Resizing UI");
struct winsize w;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
erase();
resizeterm(w.ws_row, w.ws_col);
refresh();
log_info("Resizing UI");
title_bar_resize();
wins_resize_all();
status_bar_resize();

View File

@ -114,6 +114,12 @@ tab_handler(int count, int key)
return 0;
}
void
resize_signal_handler(int signal)
{
ui_resize();
}
void
create_input_window(void)
{
@ -127,10 +133,13 @@ create_input_window(void)
rl_callback_handler_install(NULL, cb_linehandler);
rl_bind_key('\t', tab_handler);
signal(SIGWINCH, resize_signal_handler);
inp_win = newpad(1, INP_WIN_MAX);
wbkgd(inp_win, theme_attrs(THEME_INPUT_TEXT));;
keypad(inp_win, TRUE);
wmove(inp_win, 0, 0);
_inp_win_update_virtual();
}
@ -233,7 +242,7 @@ inp_readline(void)
r = select(FD_SETSIZE, &fds, NULL, NULL, &p_rl_timeout);
if (r < 0) {
log_error("Readline failed.");
return false;
return TRUE;
}
if (FD_ISSET(fileno(rl_instream), &fds)) {