]> git.mdlowis.com Git - projs/tide.git/commitdiff
first attempt at an expandable tags region. Clearly an off by one error but it's...
authorMichael D. Lowis <mike.lowis@gentex.com>
Tue, 8 May 2018 20:21:22 +0000 (16:21 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Tue, 8 May 2018 20:21:22 +0000 (16:21 -0400)
lib/view.c
lib/x11.c

index 87b138937ed99d2fa2d7026aede4e801243759e8..e8220221843ef5ee4e0d2f3fdb9c6a6cfaf38c64 100644 (file)
@@ -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) {
index e5cf3faef097b8725317c72305dac1f14cdacc14..a1b9e2e4ddc1a4294a0928212d9c78f1ea22c8bc 100644 (file)
--- 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 */