diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ui/window.c | 26 | ||||
-rw-r--r-- | src/ui/window.h | 1 | ||||
-rw-r--r-- | src/ui/windows.c | 31 |
3 files changed, 40 insertions, 18 deletions
diff --git a/src/ui/window.c b/src/ui/window.c index dbb3a25c..13b84b73 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -54,6 +54,7 @@ #define CEILING(X) (X-(int)(X) > 0 ? (int)(X+1) : (int)(X)) static int roster_win_percent = 20; +static int occupants_win_percent = 20; static void _win_print(ProfWin *window, const char show_char, const char * const date_fmt, int flags, int attrs, const char * const from, const char * const message); @@ -66,6 +67,13 @@ win_roster_cols(void) return CEILING( (((double)cols) / 100) * roster_win_percent); } +int +win_occpuants_cols(void) +{ + int cols = getmaxx(stdscr); + return CEILING( (((double)cols) / 100) * occupants_win_percent); +} + ProfWin* win_create(const char * const title, win_type_t type) { @@ -74,7 +82,7 @@ win_create(const char * const title, win_type_t type) int cols = getmaxx(stdscr); if (type == WIN_MUC && prefs_get_boolean(PREF_OCCUPANTS)) { - int subwin_cols = win_roster_cols(); + int subwin_cols = win_occpuants_cols(); new_win->win = newpad(PAD_SIZE, cols - subwin_cols); wbkgd(new_win->win, COLOUR_TEXT); @@ -121,7 +129,12 @@ win_show_subwin(ProfWin *window) { if (!window->subwin) { int cols = getmaxx(stdscr); - int subwin_cols = win_roster_cols(); + int subwin_cols = 0; + if (window->type == WIN_CONSOLE) { + subwin_cols = win_roster_cols(); + } else if (window->type == WIN_MUC) { + subwin_cols = win_occpuants_cols(); + } window->subwin = newpad(PAD_SIZE, subwin_cols); wbkgd(window->subwin, COLOUR_TEXT); @@ -149,9 +162,14 @@ win_update_virtual(ProfWin *window) { int rows, cols; getmaxyx(stdscr, rows, cols); - int subwin_cols = win_roster_cols(); - if (((window->type == WIN_MUC) || (window->type == WIN_CONSOLE)) && (window->subwin)) { + if (window->subwin) { + int subwin_cols = 0; + if (window->type == WIN_MUC) { + subwin_cols = win_occpuants_cols(); + } else if (window->type == WIN_CONSOLE) { + subwin_cols = win_roster_cols(); + } pnoutrefresh(window->win, window->y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); pnoutrefresh(window->subwin, window->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); } else { diff --git a/src/ui/window.h b/src/ui/window.h index e635f221..b512c521 100644 --- a/src/ui/window.h +++ b/src/ui/window.h @@ -105,6 +105,7 @@ void win_redraw(ProfWin *window); void win_hide_subwin(ProfWin *window); void win_show_subwin(ProfWin *window); int win_roster_cols(void); +int win_occpuants_cols(void); void win_printline_nowrap(WINDOW *win, char *msg); #endif diff --git a/src/ui/windows.c b/src/ui/windows.c index 81e02965..643118af 100644 --- a/src/ui/windows.c +++ b/src/ui/windows.c @@ -285,20 +285,23 @@ wins_get_total_unread(void) void wins_resize_all(void) { - int rows, cols; - getmaxyx(stdscr, rows, cols); - int roster_cols = win_roster_cols(); + int cols = getmaxx(stdscr); GList *values = g_hash_table_get_values(windows); GList *curr = values; while (curr != NULL) { ProfWin *window = curr->data; if (((window->type == WIN_MUC) || (window->type == WIN_CONSOLE)) && (window->subwin)) { - wresize(window->win, PAD_SIZE, cols - roster_cols); - wresize(window->subwin, PAD_SIZE, roster_cols); + int subwin_cols = 0; if (window->type == WIN_MUC) { + subwin_cols = win_occpuants_cols(); + wresize(window->win, PAD_SIZE, cols - subwin_cols); + wresize(window->subwin, PAD_SIZE, subwin_cols); ui_muc_roster(window->from); } else if (window->type == WIN_CONSOLE) { + subwin_cols = win_roster_cols(); + wresize(window->win, PAD_SIZE, cols - subwin_cols); + wresize(window->subwin, PAD_SIZE, subwin_cols); ui_roster(); } } else { @@ -310,12 +313,7 @@ wins_resize_all(void) g_list_free(values); ProfWin *current_win = wins_get_current(); - if (((current_win->type == WIN_MUC) || (current_win->type == WIN_CONSOLE)) && (current_win->subwin)) { - pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, (cols-roster_cols)-1); - pnoutrefresh(current_win->subwin, current_win->sub_y_pos, 0, 1, (cols-roster_cols), rows-3, cols-1); - } else { - pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, cols-1); - } + win_update_virtual(current_win); } void @@ -337,14 +335,19 @@ wins_show_subwin(ProfWin *window) { int rows, cols; getmaxyx(stdscr, rows, cols); - int roster_cols = win_roster_cols(); + int subwin_cols = 0; win_show_subwin(window); ProfWin *current_win = wins_get_current(); + if (current_win->type == WIN_MUC) { + subwin_cols = win_occpuants_cols(); + } else if (current_win->type == WIN_CONSOLE) { + subwin_cols = win_roster_cols(); + } if ((current_win->type == WIN_MUC) || (current_win->type == WIN_CONSOLE)) { - pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, (cols-roster_cols)-1); - pnoutrefresh(current_win->subwin, current_win->sub_y_pos, 0, 1, (cols-roster_cols), rows-3, cols-1); + pnoutrefresh(current_win->win, current_win->y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); + pnoutrefresh(current_win->subwin, current_win->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); } } |