[openbox/f16: 3/4] increase doubleclick timeout (#727995)

Miroslav Lichvar mlichvar at fedoraproject.org
Fri Mar 30 13:46:19 UTC 2012


commit abc7304b39b529553d0061a0da530ae35b4a59f2
Author: Miroslav Lichvar <mlichvar at redhat.com>
Date:   Fri Mar 30 15:09:43 2012 +0200

    increase doubleclick timeout (#727995)

 openbox-doubleclick.patch |   97 +++++++++++++++++++++++++++++++++++++++++++++
 openbox.spec              |    2 +
 2 files changed, 99 insertions(+), 0 deletions(-)
---
diff --git a/openbox-doubleclick.patch b/openbox-doubleclick.patch
new file mode 100644
index 0000000..dc668dd
--- /dev/null
+++ b/openbox-doubleclick.patch
@@ -0,0 +1,97 @@
+commit c885c9a676e4860a68f0bdce4b926902f6597ebb
+Author: Mikael Magnusson <mikachu at 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;
diff --git a/openbox.spec b/openbox.spec
index df11ccf..83641cd 100644
--- a/openbox.spec
+++ b/openbox.spec
@@ -14,6 +14,7 @@ Source4:	openbox.desktop
 Source5:	terminals.menu
 Source6:	openbox.gnome-session
 
+Patch1:		openbox-doubleclick.patch
 Patch2:		openbox-3.4.11.2-gnomesession.patch
 
 BuildRoot:	%{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -95,6 +96,7 @@ KDE session.
 
 %prep
 %setup -q
+%patch1 -p1 -b .doubleclick
 %patch2 -p1 -b .gnome
 
 


More information about the scm-commits mailing list