1
1
mirror of https://github.com/profanity-im/profanity.git synced 2025-01-03 14:57:42 -05:00

Replace input on resize

This commit is contained in:
James Booth 2012-04-17 23:28:21 +01:00
parent 32e025f5cd
commit 2101f29e06
4 changed files with 26 additions and 14 deletions

View File

@ -131,6 +131,15 @@ void inp_put_back(void)
wrefresh(inp_win); wrefresh(inp_win);
} }
void inp_win_write(const char * const new_input, const int size)
{
int i;
inp_clear();
for (i = 0; i < size; i++)
waddch(inp_win, new_input[i]);
}
/* /*
* Deal with command editing, return 1 if ch was an edit * Deal with command editing, return 1 if ch was an edit
* key press: up, down, left, right or backspace * key press: up, down, left, right or backspace

View File

@ -49,6 +49,9 @@ void profanity_run(void)
jabber_process_events(); jabber_process_events();
inp_get_char(&ch, inp, &size); inp_get_char(&ch, inp, &size);
win_handle_special_keys(&ch); win_handle_special_keys(&ch);
if (ch == KEY_RESIZE) {
gui_resize(ch, inp, size);
}
} }
inp[size++] = '\0'; inp[size++] = '\0';

View File

@ -57,7 +57,6 @@ static void _cons_show_incoming_message(const char * const short_from,
const int win_index); const int win_index);
static void _win_handle_switch(const int * const ch); static void _win_handle_switch(const int * const ch);
static void _win_handle_page(const int * const ch); static void _win_handle_page(const int * const ch);
static void _win_handle_resize(const int * const ch);
void gui_init(void) void gui_init(void)
{ {
@ -107,6 +106,16 @@ void gui_close(void)
endwin(); endwin();
} }
void gui_resize(const int ch, const char * const input, const int size)
{
create_title_bar();
create_status_bar();
create_input_window();
inp_win_write(input, size);
_current_window_refresh();
dirty = TRUE;
}
int win_close_win(void) int win_close_win(void)
{ {
if (win_in_chat()) { if (win_in_chat()) {
@ -317,7 +326,6 @@ void win_handle_special_keys(const int * const ch)
{ {
_win_handle_switch(ch); _win_handle_switch(ch);
_win_handle_page(ch); _win_handle_page(ch);
_win_handle_resize(ch);
} }
void win_page_off(void) void win_page_off(void)
@ -514,17 +522,6 @@ static void _win_handle_switch(const int * const ch)
} }
} }
static void _win_handle_resize(const int * const ch)
{
if (*ch == KEY_RESIZE) {
create_title_bar();
create_status_bar();
create_input_window();
_current_window_refresh();
dirty = TRUE;
}
}
static void _win_handle_page(const int * const ch) static void _win_handle_page(const int * const ch)
{ {
int rows, cols, y, x; int rows, cols, y, x;

View File

@ -33,10 +33,12 @@ struct prof_win {
int paged; int paged;
}; };
// gui startup and shutdown // gui startup and shutdown, resize
void gui_init(void); void gui_init(void);
void gui_refresh(void); void gui_refresh(void);
void gui_close(void); void gui_close(void);
void gui_resize(const int ch, const char * const input,
const int size);
// create windows // create windows
void create_title_bar(void); void create_title_bar(void);
@ -92,5 +94,6 @@ void inp_put_back(void);
void inp_non_block(void); void inp_non_block(void);
void inp_block(void); void inp_block(void);
void inp_get_password(char *passwd); void inp_get_password(char *passwd);
void inp_win_write(const char * const new_input, const int size);
#endif #endif