From 65da1c19413008eedcd228bb9cbda416ca269aae Mon Sep 17 00:00:00 2001 From: 0xACE <0xACE@users.noreply.github.com> Date: Tue, 5 May 2020 14:32:42 +0200 Subject: [PATCH] Double click only works on same item (#555) This patch disables accidental triggering of double clicking when you are just single clicking on multiple objects fast. --- src/nnn.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/nnn.c b/src/nnn.c index 789e80d1..13d9815c 100644 --- a/src/nnn.c +++ b/src/nnn.c @@ -5190,6 +5190,7 @@ static bool browse(char *ipath, const char *session) #ifndef NOMOUSE MEVENT event; struct timespec mousetimings[2] = {{.tv_sec = 0, .tv_nsec = 0}, {.tv_sec = 0, .tv_nsec = 0} }; + int mousedent[2] = {-1, -1}; bool currentmouse = 1; bool rightclicksel = 0; #endif @@ -5423,13 +5424,16 @@ nochange: CLOCK_REALTIME, #endif &mousetimings[currentmouse]); + mousedent[currentmouse] = cur; - /*Single click just selects, double click also opens */ - if (((_ABSSUB(mousetimings[0].tv_sec, mousetimings[1].tv_sec) << 30) - + (mousetimings[0].tv_nsec - mousetimings[1].tv_nsec)) - > DOUBLECLICK_INTERVAL_NS) + /* Single click just selects, double click falls through to SEL_GOIN */ + if ((mousedent[0] != mousedent[1]) || + (((_ABSSUB(mousetimings[0].tv_sec, mousetimings[1].tv_sec) << 30) + + (_ABSSUB(mousetimings[0].tv_nsec, mousetimings[1].tv_nsec))) + > DOUBLECLICK_INTERVAL_NS)) break; mousetimings[currentmouse].tv_sec = 0; + mousedent[currentmouse] = -1; } else { if (cfg.filtermode || filterset()) presel = FILTER;