diff options
author | James Booth <boothj5@gmail.com> | 2015-06-15 20:39:17 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2015-06-15 20:39:17 +0100 |
commit | c76692516a65af35249e93071a6478fd9d799fff (patch) | |
tree | 33cc0f7c7ec700e86a4ee81a2588ff8ba06ad60f /src/ui/window.c | |
parent | b52de6869a2d22426eb77ae62c17514fb8520308 (diff) | |
parent | 5cdd69f478e6bbd4b8b0ca03daab56e6206c3ab2 (diff) | |
download | profani-tty-c76692516a65af35249e93071a6478fd9d799fff.tar.gz |
Merge branch 'master' into openpgp
Diffstat (limited to 'src/ui/window.c')
-rw-r--r-- | src/ui/window.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/ui/window.c b/src/ui/window.c index 95b5e996..92db25fa 100644 --- a/src/ui/window.c +++ b/src/ui/window.c @@ -459,6 +459,46 @@ win_sub_page_up(ProfWin *window) } void +win_clear(ProfWin *window) +{ + werase(window->layout->win); + 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) { int rows = getmaxy(stdscr); @@ -531,6 +571,37 @@ win_update_virtual(ProfWin *window) } void +win_refresh_without_subwin(ProfWin *window) +{ + int rows, cols; + getmaxyx(stdscr, rows, cols); + + if ((window->type == WIN_MUC) || (window->type == WIN_CONSOLE)) { + pnoutrefresh(window->layout->win, window->layout->y_pos, 0, 1, 0, rows-3, cols-1); + } +} + +void +win_refresh_with_subwin(ProfWin *window) +{ + int rows, cols; + getmaxyx(stdscr, rows, cols); + int subwin_cols = 0; + + if (window->type == WIN_MUC) { + ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; + subwin_cols = win_occpuants_cols(); + pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); + pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); + } else if (window->type == WIN_CONSOLE) { + ProfLayoutSplit *layout = (ProfLayoutSplit*)window->layout; + subwin_cols = win_roster_cols(); + pnoutrefresh(layout->base.win, layout->base.y_pos, 0, 1, 0, rows-3, (cols-subwin_cols)-1); + pnoutrefresh(layout->subwin, layout->sub_y_pos, 0, 1, (cols-subwin_cols), rows-3, cols-1); + } +} + +void win_move_to_end(ProfWin *window) { window->layout->paged = 0; |