fix mouse actions that don't depend on a position in a pane - sfeed_curses - sf… | |
git clone git://git.codemadness.org/sfeed_curses | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 39fe4803fb3595e9425efae568c2e9a53f143a4c | |
parent 64f10e20f6dce1cdf6ee517ab9ce12b39a192d5f | |
Author: Hiltjo Posthuma <[email protected]> | |
Date: Wed, 24 Mar 2021 18:15:14 +0100 | |
fix mouse actions that don't depend on a position in a pane | |
- Fix forward and backward if the position is not in a pane (like the | |
statusbar, linebar or scrollbar). | |
- Add ctrl+scroll to change the sidebar size. | |
Diffstat: | |
M sfeed_curses.1 | 6 ++++++ | |
M sfeed_curses.c | 38 +++++++++++++++++++----------… | |
2 files changed, 30 insertions(+), 14 deletions(-) | |
--- | |
diff --git a/sfeed_curses.1 b/sfeed_curses.1 | |
@@ -165,6 +165,12 @@ Items pane: pipe the item. | |
Scroll one page up. | |
.It SCROLL DOWN | |
Scroll one page down. | |
+.It CTRL+SCROLL UP | |
+Use a fixed sidebar size for the current layout and decrease the fixed width or | |
+height by 1 column. | |
+.It CTRL+SCROLL DOWN | |
+Use a fixed sidebar size for the current layout and increase the fixed width or | |
+height by 1 column. | |
.It FORWARD | |
Switch to the items pane. | |
.It BACKWARD | |
diff --git a/sfeed_curses.c b/sfeed_curses.c | |
@@ -1684,6 +1684,30 @@ mousereport(int button, int release, int keymask, int x,… | |
if (p->hidden || !p->width || !p->height) | |
continue; | |
+ /* these button actions are done regardless of the position */ | |
+ switch (button) { | |
+ case 3: /* ctrl+scroll up */ | |
+ case 4: /* ctrl+scroll down */ | |
+ if ((keymask & 16)) | |
+ adjustsidebarsize(button == 3 ? -1 : +1); | |
+ return; | |
+ case 7: /* side-button: backward */ | |
+ if (selpane == PaneFeeds) | |
+ return; | |
+ selpane = PaneFeeds; | |
+ if (layout == LayoutMonocle) | |
+ updategeom(); | |
+ return; | |
+ case 8: /* side-button: forward */ | |
+ if (selpane == PaneItems) | |
+ return; | |
+ selpane = PaneItems; | |
+ if (layout == LayoutMonocle) | |
+ updategeom(); | |
+ return; | |
+ } | |
+ | |
+ /* check if mouse position is in pane */ | |
if (!(x >= p->x && x < p->x + p->width && | |
y >= p->y && y < p->y + p->height)) | |
continue; | |
@@ -1739,20 +1763,6 @@ mousereport(int button, int release, int keymask, int x,… | |
case 4: /* scroll down */ | |
pane_scrollpage(p, button == 3 ? -1 : +1); | |
break; | |
- case 7: /* side-button: backward */ | |
- if (selpane == PaneFeeds) | |
- break; | |
- selpane = PaneFeeds; | |
- if (layout == LayoutMonocle) | |
- updategeom(); | |
- break; | |
- case 8: /* side-button: forward */ | |
- if (selpane == PaneItems) | |
- break; | |
- selpane = PaneItems; | |
- if (layout == LayoutMonocle) | |
- updategeom(); | |
- break; | |
} | |
return; /* do not bubble events */ | |
} |