]> git.mdlowis.com Git - projs/tide.git/commitdiff
implemented scrollbar with left/right mouse button
authorMichael D. Lowis <mike@mdlowis.com>
Sun, 26 Feb 2017 00:59:10 +0000 (19:59 -0500)
committerMichael D. Lowis <mike@mdlowis.com>
Sun, 26 Feb 2017 00:59:10 +0000 (19:59 -0500)
inc/win.h
lib/win.c
term.c
xedit.c

index 0bdf419f4679a23a7a3e3e1ffc368b37bfa8caed..fa7b94b88c6912ad95e69e83a5307300e720103b 100644 (file)
--- a/inc/win.h
+++ b/inc/win.h
@@ -46,9 +46,7 @@ WinRegion win_getregion(void);
 void win_setregion(WinRegion id);\r
 \r
 void onupdate(void);\r
-void mouse_left(WinRegion id, size_t count, size_t row, size_t col);\r
-void mouse_middle(WinRegion id, size_t count, size_t row, size_t col);\r
-void mouse_right(WinRegion id, size_t count, size_t row, size_t col);\r
-\r
-\r
+void onmouseleft(WinRegion id, size_t count, size_t row, size_t col);\r
+void onmousemiddle(WinRegion id, size_t count, size_t row, size_t col);\r
+void onmouseright(WinRegion id, size_t count, size_t row, size_t col);\r
 \r
index 7588d104806f405cb8574fa118df5de78d5e2c0a..45a1062dc9aa2221e3ca30461e32ec9d7d044fab 100644 (file)
--- a/lib/win.c
+++ b/lib/win.c
@@ -20,6 +20,9 @@ static void onmouse(MouseAct act, MouseBtn btn, int x, int y);
 static void onshutdown(void);
 static void mouse_wheelup(WinRegion id, size_t count, size_t row, size_t col);
 static void mouse_wheeldn(WinRegion id, size_t count, size_t row, size_t col);
+static void mouse_left(WinRegion id, size_t count, size_t row, size_t col);
+static void mouse_middle(WinRegion id, size_t count, size_t row, size_t col);
+static void mouse_right(WinRegion id, size_t count, size_t row, size_t col);
 
 static XFont Font;
 static XConfig Config = {
@@ -252,6 +255,27 @@ static void mouse_wheeldn(WinRegion id, size_t count, size_t row, size_t col) {
     view_scroll(win_view(id), +ScrollLines);
 }
 
+static void mouse_left(WinRegion id, size_t count, size_t row, size_t col) {
+    if (id == SCROLL)
+        view_scroll(win_view(EDIT), row);
+    else
+        onmouseleft(id,count,row,col);
+}
+
+static void mouse_middle(WinRegion id, size_t count, size_t row, size_t col) {
+    if (id == SCROLL)
+        printf("scroll row: %lu\n", row);
+    else
+        onmousemiddle(id,count,row,col);
+}
+
+static void mouse_right(WinRegion id, size_t count, size_t row, size_t col) {
+    if (id == SCROLL)
+        view_scroll(win_view(EDIT), row - (win_view(EDIT)->nrows-1));
+    else
+        onmouseright(id,count,row,col);
+}
+
 /*****************************************************************************/
 
 static void draw_glyphs(size_t x, size_t y, UGlyph* glyphs, size_t rlen, size_t ncols) {
diff --git a/term.c b/term.c
index 3b96313ead625125d1dffb2acc09503d5494218f..73c58d2b91ad1ae727e31159a6d3642334857e11 100644 (file)
--- a/term.c
+++ b/term.c
@@ -7,25 +7,25 @@
 
 /* Mouse Handling
  *****************************************************************************/
-void mouse_left(WinRegion id, size_t count, size_t row, size_t col) {
+void onmouseleft(WinRegion id, size_t count, size_t row, size_t col) {
 
 }
 
-void mouse_middle(WinRegion id, size_t count, size_t row, size_t col) {
+void onmousemiddle(WinRegion id, size_t count, size_t row, size_t col) {
 
 }
 
-void mouse_right(WinRegion id, size_t count, size_t row, size_t col) {
+void onmouseright(WinRegion id, size_t count, size_t row, size_t col) {
 
 }
 
-MouseConfig* MouseHandlers[NREGIONS] = {
-    [EDIT] = &(MouseConfig){
-        .left   = mouse_left,
-        .middle = mouse_middle,
-        .right  = mouse_right
-    }
-};
+//MouseConfig* MouseHandlers[NREGIONS] = {
+//    [EDIT] = &(MouseConfig){
+//        .left   = mouse_left,
+//        .middle = mouse_middle,
+//        .right  = mouse_right
+//    }
+//};
 
 /* Keyboard Handling
  *****************************************************************************/
diff --git a/xedit.c b/xedit.c
index 774de5928e2123f57ab222a6f88c4d3cff3bc092..b012d51730afcde03911411af50092973f1434cc 100644 (file)
--- a/xedit.c
+++ b/xedit.c
@@ -150,7 +150,7 @@ static void save(void) {
 
 /* Mouse Handling
  *****************************************************************************/
-void mouse_left(WinRegion id, size_t count, size_t row, size_t col) {
+void onmouseleft(WinRegion id, size_t count, size_t row, size_t col) {
     if (count == 1) {
         if (x11_keymodsset(ModShift))
             view_selext(win_view(id), row, col);
@@ -163,7 +163,7 @@ void mouse_left(WinRegion id, size_t count, size_t row, size_t col) {
     }
 }
 
-void mouse_middle(WinRegion id, size_t count, size_t row, size_t col) {
+void onmousemiddle(WinRegion id, size_t count, size_t row, size_t col) {
     if (win_btnpressed(MOUSE_BTN_LEFT)) {
         cut();
     } else {
@@ -173,7 +173,7 @@ void mouse_middle(WinRegion id, size_t count, size_t row, size_t col) {
     }
 }
 
-void mouse_right(WinRegion id, size_t count, size_t row, size_t col) {
+void onmouseright(WinRegion id, size_t count, size_t row, size_t col) {
     if (win_btnpressed(MOUSE_BTN_LEFT)) {
         paste();
     } else {