]> git.mdlowis.com Git - projs/tide.git/commitdiff
Fixed scrolling and view sizing issue
authorMichael D. Lowis <mike.lowis@gentex.com>
Wed, 16 Nov 2016 14:58:01 +0000 (09:58 -0500)
committerMichael D. Lowis <mike.lowis@gentex.com>
Wed, 16 Nov 2016 14:58:01 +0000 (09:58 -0500)
config.mk
libedit/view.c
xedit.c

index b9996f606944e2f6cf85416100c5e09e4cfd7cde..4dac5a50c115e2f12c66542484d1a3afd1d9fe47 100644 (file)
--- a/config.mk
+++ b/config.mk
@@ -2,7 +2,7 @@
 
 # Compiler Setup
 CC = c99
-CFLAGS = -O0 $(INCS)
+CFLAGS = -g -O0 $(INCS)
 
 # Linker Setup
 LD = $(CC)
index 856f7aaed78d20c18747164032eda31ea891aae6..3b5f8ffba337b8ef03ce09bbff3793dc9c366d30 100644 (file)
@@ -98,12 +98,17 @@ static void scroll_up(View* view, unsigned csr, unsigned first) {
 static void scroll_dn(View* view, unsigned csr, unsigned last) {
     while (csr > last) {
         /* delete the first row and shift the others */
-        free(view->rows[0]);
-        memmove(&view->rows[0], &view->rows[1], sizeof(Row*) * (view->nrows-1));
-        view->rows[view->nrows-1] = calloc(1, sizeof(Row) + (view->ncols * sizeof(UGlyph)));
-        view->rows[view->nrows-1]->off = (view->rows[view->nrows-2]->off + view->rows[view->nrows-2]->rlen);
-        /* fill in row content */
-        fill_row(view, view->nrows-1, view->rows[view->nrows-1]->off);
+        if (view->nrows > 1) {
+            free(view->rows[0]);
+            memmove(&view->rows[0], &view->rows[1], sizeof(Row*) * (view->nrows-1));
+            view->rows[view->nrows-1] = calloc(1, sizeof(Row) + (view->ncols * sizeof(UGlyph)));
+            view->rows[view->nrows-1]->off = (view->rows[view->nrows-2]->off + view->rows[view->nrows-2]->rlen);
+            /* fill in row content */
+            fill_row(view, view->nrows-1, view->rows[view->nrows-1]->off);
+        } else {
+            view->rows[0]->off += view->rows[0]->rlen;
+            fill_row(view, 0, view->rows[0]->off);
+        }
         last = view->rows[view->nrows-1]->off + view->rows[view->nrows-1]->rlen - 1;
     }
 }
@@ -171,6 +176,7 @@ void view_resize(View* view, size_t nrows, size_t ncols) {
 void view_update(View* view, size_t* csrx, size_t* csry) {
     size_t csr = view->selection.end;
     /* scroll the view and reflow the screen lines */
+    sync_view(view, view->selection.end);
     reflow(view);
     /* find the cursor on the new screen */
     for (size_t y = 0; y < view->nrows; y++) {
@@ -236,7 +242,7 @@ void view_insert(View* view, Rune rune) {
     }
     view->selection.beg = view->selection.end;
     view->selection.col = buf_getcol(&(view->buffer), view->selection.end);
-    //sync_view(view, view->selection.end);
+    sync_view(view, view->selection.end);
 }
 
 void view_delete(View* view) {
diff --git a/xedit.c b/xedit.c
index ede08dad471aaed90ecea5b1d313fe030fb68645..bac9c00ebc400c9b2739e241cfeab2351bacdd02 100644 (file)
--- a/xedit.c
+++ b/xedit.c
@@ -92,23 +92,29 @@ static void mouse_left(enum RegionId id, size_t count, size_t row, size_t col) {
     if (count == 1) {
         view_setcursor(getview(id), row, col);
     } else if (count == 2) {
+        puts("select");
         //view_select(getview(id), row, col);
     } else if (count == 3) {
+        puts("select bigword");
         //view_selword(getview(id), row, col);
     }
 }
 
 static void mouse_middle(enum RegionId id, size_t count, size_t row, size_t col) {
-    //if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+    if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+        puts("cut");
     //    cut();
-    //else
+    else
+        puts("exec");
     //    view_exec(getview(id), row, col);
 }
 
 static void mouse_right(enum RegionId id, size_t count, size_t row, size_t col) {
-    //if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+    if (MouseBtns[MOUSE_BTN_LEFT].pressed)
+        puts("paste");
     //    paste();
-    //else
+    else
+        puts("find");
     //    view_find(getview(id), row, col);
 }
 
@@ -300,7 +306,7 @@ static void layout(int width, int height) {
     view_resize(getview(TAGS), tagrows, Regions[TAGS].width / fwidth);
     /* Place the edit region relative to status */
     Regions[EDIT].y      = 5 + Regions[TAGS].y + Regions[TAGS].height;
-    Regions[EDIT].height = fheight * ((height - Regions[EDIT].y - 5) / 4);
+    Regions[EDIT].height = (height - Regions[EDIT].y - 5);
     view_resize(getview(EDIT), Regions[EDIT].height / fheight, Regions[EDIT].width / fwidth);
 }