From 97d72a09e2b1d41254159cc3ce17e67d03d0642d Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 8 May 2018 16:21:22 -0400 Subject: [PATCH] first attempt at an expandable tags region. Clearly an off by one error but it's a start --- lib/view.c | 12 +++++++++++- lib/x11.c | 7 ++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/view.c b/lib/view.c index 87b1389..e822022 100644 --- a/lib/view.c +++ b/lib/view.c @@ -77,7 +77,17 @@ void view_reload(View* view) { } size_t view_limitrows(View* view, size_t maxrows, size_t ncols) { - return 1; + size_t nrows = 0, bend = buf_end(&(view->buffer)); + for (size_t i = 0; i < view->nrows; nrows++, i++) { + Row* crow = view->rows[view->index + i]; + size_t last = (crow->len ? crow->off : crow->cols[crow->len-1].off); + if (last >= bend) + break; + } + printf("%lu %lu\n", nrows, bend); + view_resize(view, view->width, nrows); + view_update(view, 0, 0); + return nrows; } size_t rune_width(int c, size_t xpos, size_t width) { diff --git a/lib/x11.c b/lib/x11.c index e5cf3fa..a1b9e2e 100644 --- a/lib/x11.c +++ b/lib/x11.c @@ -291,6 +291,8 @@ static void draw_view(int i, size_t nrows, drawcsr* csr, int bg, int fg, int sel View* view = win_view(i); view_resize(view, (csr->w - csr->x), nrows); view_update(view, &csrx, &csry); + if (i == TAGS) + nrows = view_limitrows(view, nrows); draw_rect(bg, csr->x, csr->y, csr->w, (nrows * fheight) + 9); for (size_t i = 0; i < nrows; i++) { Row* row = view_getrow(view, i + view->index); @@ -493,12 +495,11 @@ static void xupdate(Job* job) { } /* determine the size of the regions */ drawcsr csr = { .w = X.width, .h = X.height }; - size_t maxtagrows = ((X.height - 2) / 4) / fheight; - size_t tagrows = 1; - size_t editrows = ((X.height - 7) / fheight) - tagrows; /* draw the regions to the window */ + size_t tagrows = ((X.height - 2) / 4) / fheight; draw_view(TAGS, tagrows, &csr, TagsBg, TagsFg, TagsSel); draw_hrule(&csr); + size_t editrows = ((X.height - csr.x) / fheight); draw_view(EDIT, editrows, &csr, EditBg, EditFg, EditSel); draw_scroll(&csr); /* flush to the server */ -- 2.49.0