all repos — openbox @ 51ef6e3b558898ebb30f34ae94def50dac86fe58

openbox fork - make it a bit more like ryudo

make the drag threshold and double click time into rc options
Dana Jansens danakj@orodu.net
commit

51ef6e3b558898ebb30f34ae94def50dac86fe58

parent

71c8b0b7b2cf2fa79ac4c81b7756f2b230f2de7a

1 files changed, 21 insertions(+), 4 deletions(-)

jump to
M plugins/mouse/mouse.cplugins/mouse/mouse.c

@@ -6,6 +6,7 @@ #include "../../kernel/client.h"

#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,9 +14,16 @@ #include <glib.h>

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 int px, py, cx, cy, cw, ch, dx, dy;

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 @@ e->data.x.e->xbutton.y < (signed)(h+b)) {

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 @@ if (button) {

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,