]> Dogcows Code - chaz/openbox/commitdiff
Change default doubleclick timeout to 500ms and keep track of where last click was
authorMikael Magnusson <mikachu@gmail.com>
Thu, 4 Aug 2011 16:34:54 +0000 (18:34 +0200)
committerMikael Magnusson <mikachu@gmail.com>
Sun, 16 Oct 2011 20:50:26 +0000 (22:50 +0200)
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.

data/rc.xml
doc/rc-mouse-focus.xml
openbox/config.c
openbox/mouse.c

index 7598a72ca300235cae281d9c9924f881c8f9f2df..209cc2dc9a9d416e0c04842060b7cb6f6dbb2be8 100644 (file)
 <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
index 06c3ce543ba000359270f4d2c38d3b03d0a5583a..dc7f2e9878d7631edf9103475b401235b9bd3fe6 100644 (file)
 <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">
index debd9fbae22d9cf1a294a2f1b46aef95782f6f86..8e0e5ac3877bf4e5e21337164531df229e0fa59a 100644 (file)
@@ -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;
 
index ddf6851d2424d57bc0a40ee166a4b4b4d3555af2..2f0c8f59f70e3f39bffbb6070595d08d53995274 100644 (file)
@@ -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;
This page took 0.033637 seconds and 4 git commands to generate.