all repos — openbox @ c885c9a676e4860a68f0bdce4b926902f6597ebb

openbox fork - make it a bit more like ryudo

Change default doubleclick timeout to 500ms and keep track of where last click was

Bug #5152 - "mouse double-click time is too low by default - 200ms"

We only use the doubleclick in one place in the default configuration,
for doubleclicking titlebars to maximize windows, so any negative impact
of increasing the timeout should be minimal, especially with the
addition of requiring the two clicks to be in the same place.

Doubleclicks are hardcoded to occur within 8 pixels for now, it doesn't
seem worth it to add a config until someone complains. A possibility is
using the drag threshold, but some people have that set very low so it
could be hard to doubleclick then.
Mikael Magnusson mikachu@gmail.com
commit

c885c9a676e4860a68f0bdce4b926902f6597ebb

parent

1d2da703ec19d5994e6c08f182ac5c0558a0564e

4 files changed, 12 insertions(+), 6 deletions(-)

jump to
M data/rc.xmldata/rc.xml

@@ -313,7 +313,7 @@

<mouse> <dragThreshold>1</dragThreshold> <!-- number of pixels the mouse must move before a drag begins --> - <doubleClickTime>200</doubleClickTime> + <doubleClickTime>500</doubleClickTime> <!-- in milliseconds (1000 = 1 second) --> <screenEdgeWarpTime>400</screenEdgeWarpTime> <!-- Time before changing desktops when the pointer touches the edge of the
M doc/rc-mouse-focus.xmldoc/rc-mouse-focus.xml

@@ -226,7 +226,7 @@

<mouse> <dragThreshold>8</dragThreshold> <!-- number of pixels the mouse must move before a drag begins --> - <doubleClickTime>200</doubleClickTime> + <doubleClickTime>500</doubleClickTime> <!-- in milliseconds (1000 = 1 second) --> <context name="Frame">
M openbox/config.copenbox/config.c

@@ -1070,7 +1070,7 @@

obt_xml_register(i, "keyboard", parse_keyboard, NULL); config_mouse_threshold = 8; - config_mouse_dclicktime = 200; + config_mouse_dclicktime = 500; config_mouse_screenedgetime = 400; config_mouse_screenedgewarp = FALSE;
M openbox/mouse.copenbox/mouse.c

@@ -211,7 +211,7 @@ {

static Time ltime; static guint button = 0, state = 0, lbutton = 0; static Window lwindow = None; - static gint px, py, pwx = -1, pwy = -1; + static gint px, py, pwx = -1, pwy = -1, lx = -10, ly = -10; gboolean used = FALSE; ObFrameContext context;

@@ -290,18 +290,24 @@ if (junk1) {

if (e->xbutton.x >= (signed)-b && e->xbutton.y >= (signed)-b && e->xbutton.x < (signed)(w+b) && - e->xbutton.y < (signed)(h+b)) { + e->xbutton.y < (signed)(h+b)) + { click = TRUE; /* double clicks happen if there were 2 in a row! */ if (lbutton == button && lwindow == e->xbutton.window && e->xbutton.time - config_mouse_dclicktime <= - ltime) { + ltime && + ABS(e->xbutton.x - lx) < 8 && + ABS(e->xbutton.y - ly) < 8) + { dclick = TRUE; lbutton = 0; } else { lbutton = button; lwindow = e->xbutton.window; + lx = e->xbutton.x; + ly = e->xbutton.y; } } else { lbutton = 0;