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.
This commit is contained in:
parent
1d2da703ec
commit
c885c9a676
4 changed files with 12 additions and 6 deletions
|
@ -313,7 +313,7 @@
|
||||||
<mouse>
|
<mouse>
|
||||||
<dragThreshold>1</dragThreshold>
|
<dragThreshold>1</dragThreshold>
|
||||||
<!-- number of pixels the mouse must move before a drag begins -->
|
<!-- number of pixels the mouse must move before a drag begins -->
|
||||||
<doubleClickTime>200</doubleClickTime>
|
<doubleClickTime>500</doubleClickTime>
|
||||||
<!-- in milliseconds (1000 = 1 second) -->
|
<!-- in milliseconds (1000 = 1 second) -->
|
||||||
<screenEdgeWarpTime>400</screenEdgeWarpTime>
|
<screenEdgeWarpTime>400</screenEdgeWarpTime>
|
||||||
<!-- Time before changing desktops when the pointer touches the edge of the
|
<!-- Time before changing desktops when the pointer touches the edge of the
|
||||||
|
|
|
@ -226,7 +226,7 @@
|
||||||
<mouse>
|
<mouse>
|
||||||
<dragThreshold>8</dragThreshold>
|
<dragThreshold>8</dragThreshold>
|
||||||
<!-- number of pixels the mouse must move before a drag begins -->
|
<!-- number of pixels the mouse must move before a drag begins -->
|
||||||
<doubleClickTime>200</doubleClickTime>
|
<doubleClickTime>500</doubleClickTime>
|
||||||
<!-- in milliseconds (1000 = 1 second) -->
|
<!-- in milliseconds (1000 = 1 second) -->
|
||||||
|
|
||||||
<context name="Frame">
|
<context name="Frame">
|
||||||
|
|
|
@ -1070,7 +1070,7 @@ void config_startup(ObtXmlInst *i)
|
||||||
obt_xml_register(i, "keyboard", parse_keyboard, NULL);
|
obt_xml_register(i, "keyboard", parse_keyboard, NULL);
|
||||||
|
|
||||||
config_mouse_threshold = 8;
|
config_mouse_threshold = 8;
|
||||||
config_mouse_dclicktime = 200;
|
config_mouse_dclicktime = 500;
|
||||||
config_mouse_screenedgetime = 400;
|
config_mouse_screenedgetime = 400;
|
||||||
config_mouse_screenedgewarp = FALSE;
|
config_mouse_screenedgewarp = FALSE;
|
||||||
|
|
||||||
|
|
|
@ -211,7 +211,7 @@ gboolean mouse_event(ObClient *client, XEvent *e)
|
||||||
static Time ltime;
|
static Time ltime;
|
||||||
static guint button = 0, state = 0, lbutton = 0;
|
static guint button = 0, state = 0, lbutton = 0;
|
||||||
static Window lwindow = None;
|
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;
|
gboolean used = FALSE;
|
||||||
|
|
||||||
ObFrameContext context;
|
ObFrameContext context;
|
||||||
|
@ -290,18 +290,24 @@ gboolean mouse_event(ObClient *client, XEvent *e)
|
||||||
if (e->xbutton.x >= (signed)-b &&
|
if (e->xbutton.x >= (signed)-b &&
|
||||||
e->xbutton.y >= (signed)-b &&
|
e->xbutton.y >= (signed)-b &&
|
||||||
e->xbutton.x < (signed)(w+b) &&
|
e->xbutton.x < (signed)(w+b) &&
|
||||||
e->xbutton.y < (signed)(h+b)) {
|
e->xbutton.y < (signed)(h+b))
|
||||||
|
{
|
||||||
click = TRUE;
|
click = TRUE;
|
||||||
/* double clicks happen if there were 2 in a row! */
|
/* double clicks happen if there were 2 in a row! */
|
||||||
if (lbutton == button &&
|
if (lbutton == button &&
|
||||||
lwindow == e->xbutton.window &&
|
lwindow == e->xbutton.window &&
|
||||||
e->xbutton.time - config_mouse_dclicktime <=
|
e->xbutton.time - config_mouse_dclicktime <=
|
||||||
ltime) {
|
ltime &&
|
||||||
|
ABS(e->xbutton.x - lx) < 8 &&
|
||||||
|
ABS(e->xbutton.y - ly) < 8)
|
||||||
|
{
|
||||||
dclick = TRUE;
|
dclick = TRUE;
|
||||||
lbutton = 0;
|
lbutton = 0;
|
||||||
} else {
|
} else {
|
||||||
lbutton = button;
|
lbutton = button;
|
||||||
lwindow = e->xbutton.window;
|
lwindow = e->xbutton.window;
|
||||||
|
lx = e->xbutton.x;
|
||||||
|
ly = e->xbutton.y;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
lbutton = 0;
|
lbutton = 0;
|
||||||
|
|
Loading…
Reference in a new issue