make the drag threshold and double click time into rc options
This commit is contained in:
parent
71c8b0b7b2
commit
51ef6e3b55
1 changed files with 21 additions and 4 deletions
|
@ -6,6 +6,7 @@
|
|||
#include "../../kernel/frame.h"
|
||||
#include "../../kernel/grab.h"
|
||||
#include "../../kernel/engine.h"
|
||||
#include "../../kernel/config.h"
|
||||
#include "translate.h"
|
||||
#include "mouse.h"
|
||||
#include "mouserc_parse.h"
|
||||
|
@ -13,10 +14,17 @@
|
|||
|
||||
void plugin_setup_config()
|
||||
{
|
||||
config_def_set(config_def_new("mouse.dragThreshold", Config_Integer,
|
||||
"Drag Threshold",
|
||||
"The drag threshold in pixels before a Drag "
|
||||
"event starts."));
|
||||
config_def_set(config_def_new("mouse.doubleClickTime", Config_Integer,
|
||||
"Double Click Interval",
|
||||
"The amount of time (in milliseconds) in "
|
||||
"which two clicks must occur to cause a "
|
||||
"DoubleClick event."));
|
||||
}
|
||||
|
||||
static int drag_threshold = 3;
|
||||
|
||||
/* GData of GSList*s of PointerBinding*s. */
|
||||
static GData *bound_contexts;
|
||||
|
||||
|
@ -190,10 +198,17 @@ static void event(ObEvent *e, void *foo)
|
|||
static guint button = 0, lbutton = 0;
|
||||
static gboolean drag = FALSE, drag_used = FALSE;
|
||||
static Corner corner = Corner_TopLeft;
|
||||
ConfigValue doubleclicktime;
|
||||
ConfigValue dragthreshold;
|
||||
gboolean click = FALSE;
|
||||
gboolean dclick = FALSE;
|
||||
GQuark context;
|
||||
|
||||
if (!config_get("mouse.dragThreshold", Config_Integer, &dragthreshold))
|
||||
dragthreshold.integer = 3; /* default */
|
||||
if (!config_get("mouse.doubleClickTime", Config_Integer, &doubleclicktime))
|
||||
doubleclicktime.integer = 200; /* default */
|
||||
|
||||
switch (e->type) {
|
||||
case Event_Client_Mapped:
|
||||
grab_for_client(e->data.c.client, TRUE);
|
||||
|
@ -264,7 +279,8 @@ static void event(ObEvent *e, void *foo)
|
|||
click = TRUE;
|
||||
/* double clicks happen if there were 2 in a row! */
|
||||
if (lbutton == button &&
|
||||
e->data.x.e->xbutton.time - 300 <= ltime) {
|
||||
e->data.x.e->xbutton.time - doubleclicktime.integer <=
|
||||
ltime) {
|
||||
dclick = TRUE;
|
||||
lbutton = 0;
|
||||
} else
|
||||
|
@ -294,7 +310,8 @@ static void event(ObEvent *e, void *foo)
|
|||
dx = e->data.x.e->xmotion.x_root - px;
|
||||
dy = e->data.x.e->xmotion.y_root - py;
|
||||
if (!drag &&
|
||||
(ABS(dx) >= drag_threshold || ABS(dy) >= drag_threshold))
|
||||
(ABS(dx) >= dragthreshold.integer ||
|
||||
ABS(dy) >= dragthreshold.integer))
|
||||
drag = TRUE;
|
||||
if (drag) {
|
||||
context = engine_get_context(e->data.x.client,
|
||||
|
|
Loading…
Reference in a new issue