+ mvwaddch(frame->curses_win, pos, q, symbol); }
+ free(scrolldsc); }
+
+extern void draw_all_windows (struct WinMeta * win_meta) {
+// Draw pad with all windows and their borders, plus scrolling hints.
+ erase();
+ wnoutrefresh(win_meta->screen);
+ werase(win_meta->pad.curses_win);
+ if (win_meta->chain_start) {
+ uint16_t n_wins = 1;
+ struct Win * win_p = win_meta->chain_start;
+ while (0 != win_p->next) {
+ win_p = win_p->next;
+ n_wins++; }
+ struct Corners * all_corners = malloc(sizeof(struct Corners) * n_wins);
+ draw_windows (win_meta->chain_start);
+ draw_windows_borders (win_meta->chain_start, win_meta->active, all_corners, 0);
+ uint16_t i;
+ for (i = 0; i < n_wins; i++) {
+ mvwaddch(win_meta->pad.curses_win, all_corners[i].tl.y, all_corners[i].tl.x, '+');
+ mvwaddch(win_meta->pad.curses_win, all_corners[i].tr.y, all_corners[i].tr.x, '+');
+ mvwaddch(win_meta->pad.curses_win, all_corners[i].bl.y, all_corners[i].bl.x, '+');
+ mvwaddch(win_meta->pad.curses_win, all_corners[i].br.y, all_corners[i].br.x, '+'); }
+ free(all_corners);
+ uint16_t y;
+ if (win_meta->pad_offset > 0)
+ draw_scroll_hint(&win_meta->pad, win_meta->pad_offset, win_meta->pad_offset + 1, '<');
+ if (win_meta->pad_offset + win_meta->pad.size.x < getmaxx(win_meta->pad.curses_win) - 1)
+ for (y = 0; y < win_meta->pad.size.y; y++)
+ draw_scroll_hint(&win_meta->pad, win_meta->pad_offset + win_meta->pad.size.x - 1,
+ getmaxx(win_meta->pad.curses_win) - (win_meta->pad_offset + win_meta->pad.size.x),
+ '>');
+ pnoutrefresh(win_meta->pad.curses_win, 0, win_meta->pad_offset, 0, 0, win_meta->pad.size.y,
+ win_meta->pad.size.x - 1); }
+ doupdate(); }
+
+extern void resize_active_window (struct WinMeta * win_meta, uint16_t height, uint16_t width) {
+// Grow or shrink currently active window. Correct its geometry and that of its followers.
+ if (0 != win_meta->active && width > 0 && height > 0 && height < win_meta->pad.size.y) {
+ win_meta->active->frame.size.y = height;
+ win_meta->active->frame.size.x = width;
+ update_windows(win_meta, win_meta->chain_start); } }