X-Git-Url: https://plomlompom.com/repos/feed.xml?a=blobdiff_plain;f=windows.c;h=31da8333d91c35cd4b3b8671cc37676e99c2a796;hb=47ba3228624b18452e47de53e33ac8c3095319a5;hp=01981e5e883cd6372b5e90c404d164587798695f;hpb=b076502bbd602e544bd58e7b33fb76cf3c43b624;p=plomrogue diff --git a/windows.c b/windows.c index 01981e5..31da833 100644 --- a/windows.c +++ b/windows.c @@ -7,8 +7,8 @@ struct WinMeta init_win_meta (WINDOW * screen) { // Create and populate WinMeta struct with sane default values. struct WinMeta win_meta; win_meta.screen = screen; - win_meta.height = screen->_maxy + 1; - win_meta.width = screen->_maxx + 1; + win_meta.height = getmaxy(screen); + win_meta.width = getmaxx(screen); win_meta.chain_start = 0; win_meta.chain_end = 0; win_meta.pad_offset = 0; @@ -121,10 +121,11 @@ void draw_window_borders (struct Win * win, char active) { mvwaddch(wgetparent(win->curses_win), getbegy(win->curses_win) - 1, x, '-'); mvwaddch(wgetparent(win->curses_win), getbegy(win->curses_win) + win->height, x, '-'); } char min_title_length_visible = 3; // 1 char minimal, plus 2 chars for decoration left/right of title - if (win->width > min_title_length_visible) { - int title_length = strlen(win->title); - int title_offset = (((win->width) - (title_length + 2)) / 2); // + 2 is for decoration - int length_visible = strnlen(win->title, win->width - min_title_length_visible); + if (win->width >= min_title_length_visible) { + int title_offset = 0; + if (win->width > strlen(win->title) + 2) + title_offset = (win->width - (strlen(win->title) + 2)) / 2; // + 2 is for decoration + int length_visible = strnlen(win->title, win->width - 2); char title[length_visible + 3]; char decoration = ' '; if (1 == active) @@ -151,14 +152,9 @@ void draw_windows_borders (struct Win * win, struct Win * win_active, struct Cor if (0 != win->next) { draw_windows_borders (win->next, win_active, corners, ccount + 1); } } -void draw_window(struct Win * win) { -// Draw window content if visible. - if (win->height > 1 && win->width > 1) ; - win->draw(win); } - void draw_windows (struct Win * win) { // Draw contents of all windows in window chain from win on. - draw_window(win); + win->draw(win); if (0 != win->next) { draw_windows (win->next); } }