1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-09-22 19:45:54 -04:00

Added win_resize() function

This commit is contained in:
James Booth 2015-06-15 18:08:47 +01:00
parent a849b200b3
commit 989dde77cd
3 changed files with 35 additions and 29 deletions

View File

@ -465,6 +465,39 @@ win_clear(ProfWin *window)
win_update_virtual(window);
}
void
win_resize(ProfWin *window)
{
int subwin_cols = 0;
int cols = getmaxx(stdscr);
if (window->layout->type == LAYOUT_SPLIT) {
ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout;
if (layout->subwin) {
if (window->type == WIN_CONSOLE) {
subwin_cols = win_roster_cols();
} else if (window->type == WIN_MUC) {
subwin_cols = win_occpuants_cols();
}
wresize(layout->base.win, PAD_SIZE, cols - subwin_cols);
wresize(layout->subwin, PAD_SIZE, subwin_cols);
if (window->type == WIN_CONSOLE) {
rosterwin_roster();
} else if (window->type == WIN_MUC) {
ProfMucWin *mucwin = (ProfMucWin *)window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
occupantswin_occupants(mucwin->roomjid);
}
} else {
wresize(layout->base.win, PAD_SIZE, cols);
}
} else {
wresize(window->layout->win, PAD_SIZE, cols);
}
win_redraw(window);
}
void
win_mouse(ProfWin *window, const wint_t ch, const int result)
{

View File

@ -193,6 +193,7 @@ int win_unread(ProfWin *window);
gboolean win_has_active_subwin(ProfWin *window);
void win_clear(ProfWin *window);
void win_resize(ProfWin *window);
void win_page_up(ProfWin *window);
void win_page_down(ProfWin *window);

View File

@ -464,39 +464,11 @@ wins_get_total_unread(void)
void
wins_resize_all(void)
{
int cols = getmaxx(stdscr);
GList *values = g_hash_table_get_values(windows);
GList *curr = values;
while (curr) {
ProfWin *window = curr->data;
int subwin_cols = 0;
if (window->layout->type == LAYOUT_SPLIT) {
ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout;
if (layout->subwin) {
if (window->type == WIN_CONSOLE) {
subwin_cols = win_roster_cols();
} else if (window->type == WIN_MUC) {
subwin_cols = win_occpuants_cols();
}
wresize(layout->base.win, PAD_SIZE, cols - subwin_cols);
wresize(layout->subwin, PAD_SIZE, subwin_cols);
if (window->type == WIN_CONSOLE) {
rosterwin_roster();
} else if (window->type == WIN_MUC) {
ProfMucWin *mucwin = (ProfMucWin *)window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
occupantswin_occupants(mucwin->roomjid);
}
} else {
wresize(layout->base.win, PAD_SIZE, cols);
}
} else {
wresize(window->layout->win, PAD_SIZE, cols);
}
win_redraw(window);
win_resize(window);
curr = g_list_next(curr);
}
g_list_free(values);