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/frame.h"
|
||||||
#include "../../kernel/grab.h"
|
#include "../../kernel/grab.h"
|
||||||
#include "../../kernel/engine.h"
|
#include "../../kernel/engine.h"
|
||||||
|
#include "../../kernel/config.h"
|
||||||
#include "translate.h"
|
#include "translate.h"
|
||||||
#include "mouse.h"
|
#include "mouse.h"
|
||||||
#include "mouserc_parse.h"
|
#include "mouserc_parse.h"
|
||||||
|
@ -13,10 +14,17 @@
|
||||||
|
|
||||||
void plugin_setup_config()
|
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. */
|
/* GData of GSList*s of PointerBinding*s. */
|
||||||
static GData *bound_contexts;
|
static GData *bound_contexts;
|
||||||
|
|
||||||
|
@ -190,10 +198,17 @@ static void event(ObEvent *e, void *foo)
|
||||||
static guint button = 0, lbutton = 0;
|
static guint button = 0, lbutton = 0;
|
||||||
static gboolean drag = FALSE, drag_used = FALSE;
|
static gboolean drag = FALSE, drag_used = FALSE;
|
||||||
static Corner corner = Corner_TopLeft;
|
static Corner corner = Corner_TopLeft;
|
||||||
|
ConfigValue doubleclicktime;
|
||||||
|
ConfigValue dragthreshold;
|
||||||
gboolean click = FALSE;
|
gboolean click = FALSE;
|
||||||
gboolean dclick = FALSE;
|
gboolean dclick = FALSE;
|
||||||
GQuark context;
|
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) {
|
switch (e->type) {
|
||||||
case Event_Client_Mapped:
|
case Event_Client_Mapped:
|
||||||
grab_for_client(e->data.c.client, TRUE);
|
grab_for_client(e->data.c.client, TRUE);
|
||||||
|
@ -264,7 +279,8 @@ static void event(ObEvent *e, void *foo)
|
||||||
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 &&
|
||||||
e->data.x.e->xbutton.time - 300 <= ltime) {
|
e->data.x.e->xbutton.time - doubleclicktime.integer <=
|
||||||
|
ltime) {
|
||||||
dclick = TRUE;
|
dclick = TRUE;
|
||||||
lbutton = 0;
|
lbutton = 0;
|
||||||
} else
|
} else
|
||||||
|
@ -294,7 +310,8 @@ static void event(ObEvent *e, void *foo)
|
||||||
dx = e->data.x.e->xmotion.x_root - px;
|
dx = e->data.x.e->xmotion.x_root - px;
|
||||||
dy = e->data.x.e->xmotion.y_root - py;
|
dy = e->data.x.e->xmotion.y_root - py;
|
||||||
if (!drag &&
|
if (!drag &&
|
||||||
(ABS(dx) >= drag_threshold || ABS(dy) >= drag_threshold))
|
(ABS(dx) >= dragthreshold.integer ||
|
||||||
|
ABS(dy) >= dragthreshold.integer))
|
||||||
drag = TRUE;
|
drag = TRUE;
|
||||||
if (drag) {
|
if (drag) {
|
||||||
context = engine_get_context(e->data.x.client,
|
context = engine_get_context(e->data.x.client,
|
||||||
|
|
Loading…
Reference in a new issue