aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuXu <oliver_lew@outlook.com>2021-11-04 12:20:28 +0800
committerGitHub <noreply@github.com>2021-11-04 04:20:28 +0000
commit36f42081d0d3e6f401e18bf84f6796ca8f8bcfb5 (patch)
tree0cca3a0880cd47fb1e21d8d16ff291e83337ec20
parentabf316a066ed19e2f6c1a38c7faaa594de7287c4 (diff)
make width of navigation area configurable (#155)
this allows users to configure navigation width from config.h. it also allows disabling the navigation function entirely by using a 0 width. one extra functionality this adds is being able to define an absolute width (in pixels) instead of just percentage via `NAV_IS_REL`. Co-authored-by: NRK <nrk@disroot.org>
-rw-r--r--commands.c4
-rw-r--r--config.def.h5
-rw-r--r--main.c19
3 files changed, 22 insertions, 6 deletions
diff --git a/commands.c b/commands.c
index cab44ee..f44cee1 100644
--- a/commands.c
+++ b/commands.c
@@ -29,7 +29,7 @@ void load_image(int);
bool mark_image(int, bool);
void close_info(void);
void open_info(void);
-int ptr_third_x(void);
+int nav_button(void);
void redraw(void);
void reset_cursor(void);
void animate(void);
@@ -286,7 +286,7 @@ bool ci_navigate(arg_t n)
bool ci_cursor_navigate(arg_t _)
{
- return ci_navigate(ptr_third_x() - 1);
+ return ci_navigate(nav_button() - 1);
}
bool ci_alternate(arg_t _)
diff --git a/config.def.h b/config.def.h
index 75c5eed..1ccf5a4 100644
--- a/config.def.h
+++ b/config.def.h
@@ -173,6 +173,11 @@ static const button_t buttons[] = {
{ 0, 5, g_zoom, -1 },
};
+/* true means NAV_WIDTH is relative (33%), false means absolute (33 pixels) */
+static const bool NAV_IS_REL = true;
+/* width of navigation area, 0 disables cursor navigation, */
+static const unsigned int NAV_WIDTH = 33;
+
/* mouse cursor on left, middle and right part of the window */
static const cursor_t imgcursor[3] = {
CURSOR_LEFT, CURSOR_ARROW, CURSOR_RIGHT
diff --git a/main.c b/main.c
index 4cd9a33..2643cad 100644
--- a/main.c
+++ b/main.c
@@ -392,12 +392,23 @@ void update_info(void)
}
}
-int ptr_third_x(void)
+int nav_button(void)
{
- int x, y;
+ int x, y, nw;
+
+ if (NAV_WIDTH == 0)
+ return 1;
win_cursor_pos(&win, &x, &y);
- return MAX(0, MIN(2, (x / (win.w * 0.33))));
+ nw = NAV_IS_REL ? win.w * NAV_WIDTH / 100 : NAV_WIDTH;
+ nw = MIN(nw, (win.w + 1) / 2);
+
+ if (x < nw)
+ return 0;
+ else if (x < win.w-nw)
+ return 1;
+ else
+ return 2;
}
void redraw(void)
@@ -431,7 +442,7 @@ void reset_cursor(void)
for (i = 0; i < ARRLEN(timeouts); i++) {
if (timeouts[i].handler == reset_cursor) {
if (timeouts[i].active) {
- c = ptr_third_x();
+ c = nav_button();
c = MAX(fileidx > 0 ? 0 : 1, c);
c = MIN(fileidx + 1 < filecnt ? 2 : 1, c);
cursor = imgcursor[c];