summaryrefslogtreecommitdiff
path: root/plugins/mouse
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-04-02 08:02:10 +0000
committerDana Jansens <danakj@orodu.net>2003-04-02 08:02:10 +0000
commit51ef6e3b558898ebb30f34ae94def50dac86fe58 (patch)
tree2755368e01ef5bece2c53b59ee57c31e6c980134 /plugins/mouse
parent71c8b0b7b2cf2fa79ac4c81b7756f2b230f2de7a (diff)
make the drag threshold and double click time into rc options
Diffstat (limited to 'plugins/mouse')
-rw-r--r--plugins/mouse/mouse.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/plugins/mouse/mouse.c b/plugins/mouse/mouse.c
index 1ef0ee87..4c19d243 100644
--- a/plugins/mouse/mouse.c
+++ b/plugins/mouse/mouse.c
@@ -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,9 +198,16 @@ 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:
@@ -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,