You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
3.8 KiB
98 lines
3.8 KiB
13 years ago
|
commit c885c9a676e4860a68f0bdce4b926902f6597ebb
|
||
|
Author: Mikael Magnusson <mikachu@gmail.com>
|
||
|
Date: Thu Aug 4 18:34:54 2011 +0200
|
||
|
|
||
|
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.
|
||
|
|
||
|
diff --git a/data/rc.xml b/data/rc.xml
|
||
|
index 7598a72..209cc2d 100644
|
||
|
--- a/data/rc.xml
|
||
|
+++ b/data/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
|
||
|
diff --git a/doc/rc-mouse-focus.xml b/doc/rc-mouse-focus.xml
|
||
|
index 06c3ce5..dc7f2e9 100644
|
||
|
--- a/doc/rc-mouse-focus.xml
|
||
|
+++ b/doc/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">
|
||
|
diff --git a/openbox/config.c b/openbox/config.c
|
||
|
index debd9fb..8e0e5ac 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 ddf6851..2f0c8f5 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;
|