summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorMikael Magnusson <mikachu@gmail.com>2011-08-04 18:34:54 +0200
committerMikael Magnusson <mikachu@gmail.com>2011-10-16 22:50:26 +0200
commitc885c9a676e4860a68f0bdce4b926902f6597ebb (patch)
tree9b40bfac3cc2f8c7140983ccfc85d3acb40c10cb /openbox
parent1d2da703ec19d5994e6c08f182ac5c0558a0564e (diff)
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.
Diffstat (limited to 'openbox')
-rw-r--r--openbox/config.c2
-rw-r--r--openbox/mouse.c12
2 files changed, 10 insertions, 4 deletions
diff --git a/openbox/config.c b/openbox/config.c
index debd9fba..8e0e5ac3 100644
--- a/openbox/config.c
+++ b/openbox/config.c
@@ -1070,7 +1070,7 @@ void config_startup(ObtXmlInst *i)
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;
diff --git a/openbox/mouse.c b/openbox/mouse.c
index ddf6851d..2f0c8f59 100644
--- a/openbox/mouse.c
+++ b/openbox/mouse.c
@@ -211,7 +211,7 @@ gboolean mouse_event(ObClient *client, XEvent *e)
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 @@ gboolean mouse_event(ObClient *client, XEvent *e)
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;