X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmouse.c;h=ee14935417acf4430b2a40924c7cda53d26f0be9;hb=3bd4397b6ec5212bfe53a36892746962dc45dbeb;hp=b5d97336c90dc87d1ee3f9d18fa5bc09fc2d5134;hpb=97de73776708d7c75b42c8fcf33342541d721c83;p=chaz%2Fopenbox diff --git a/openbox/mouse.c b/openbox/mouse.c index b5d97336..ee149354 100644 --- a/openbox/mouse.c +++ b/openbox/mouse.c @@ -37,12 +37,6 @@ typedef struct { GSList *actions[OB_NUM_MOUSE_ACTIONS]; /* lists of Action pointers */ } ObMouseBinding; -#define FRAME_CONTEXT(co, cl) ((cl && cl->type != OB_CLIENT_TYPE_DESKTOP) ? \ - co == OB_FRAME_CONTEXT_FRAME : FALSE) -#define CLIENT_CONTEXT(co, cl) ((cl && cl->type == OB_CLIENT_TYPE_DESKTOP) ? \ - co == OB_FRAME_CONTEXT_DESKTOP : \ - co == OB_FRAME_CONTEXT_CLIENT) - /* Array of GSList*s of ObMouseBinding*s. */ static GSList *bound_contexts[OB_FRAME_NUM_CONTEXTS]; /* TRUE when we have a grab on the pointer and need to replay the pointer event @@ -211,12 +205,13 @@ void mouse_replay_pointer(void) } } -void mouse_event(ObClient *client, XEvent *e) +gboolean mouse_event(ObClient *client, XEvent *e) { static Time ltime; static guint button = 0, state = 0, lbutton = 0; static Window lwindow = None; static gint px, py, pwx = -1, pwy = -1; + gboolean used = FALSE; ObFrameContext context; gboolean click = FALSE; @@ -252,10 +247,10 @@ void mouse_event(ObClient *client, XEvent *e) if (CLIENT_CONTEXT(context, client)) replay_pointer_needed = TRUE; - fire_binding(OB_MOUSE_ACTION_PRESS, context, - client, e->xbutton.state, - e->xbutton.button, - e->xbutton.x_root, e->xbutton.y_root); + used = fire_binding(OB_MOUSE_ACTION_PRESS, context, + client, e->xbutton.state, + e->xbutton.button, + e->xbutton.x_root, e->xbutton.y_root) || used; /* if the bindings grab the pointer, there won't be a ButtonRelease event for us */ @@ -317,23 +312,23 @@ void mouse_event(ObClient *client, XEvent *e) state = 0; ltime = e->xbutton.time; } - fire_binding(OB_MOUSE_ACTION_RELEASE, context, - client, e->xbutton.state, - e->xbutton.button, - e->xbutton.x_root, - e->xbutton.y_root); + used = fire_binding(OB_MOUSE_ACTION_RELEASE, context, + client, e->xbutton.state, + e->xbutton.button, + e->xbutton.x_root, + e->xbutton.y_root) || used; if (click) - fire_binding(OB_MOUSE_ACTION_CLICK, context, - client, e->xbutton.state, - e->xbutton.button, - e->xbutton.x_root, - e->xbutton.y_root); + used = fire_binding(OB_MOUSE_ACTION_CLICK, context, + client, e->xbutton.state, + e->xbutton.button, + e->xbutton.x_root, + e->xbutton.y_root) || used; if (dclick) - fire_binding(OB_MOUSE_ACTION_DOUBLE_CLICK, context, - client, e->xbutton.state, - e->xbutton.button, - e->xbutton.x_root, - e->xbutton.y_root); + used = fire_binding(OB_MOUSE_ACTION_DOUBLE_CLICK, context, + client, e->xbutton.state, + e->xbutton.button, + e->xbutton.x_root, + e->xbutton.y_root) || used; break; case MotionNotify: @@ -353,8 +348,8 @@ void mouse_event(ObClient *client, XEvent *e) context == OB_FRAME_CONTEXT_CLOSE) break; - fire_binding(OB_MOUSE_ACTION_MOTION, context, - client, state, button, px, py); + used = fire_binding(OB_MOUSE_ACTION_MOTION, context, + client, state, button, px, py); button = 0; state = 0; } @@ -364,6 +359,7 @@ void mouse_event(ObClient *client, XEvent *e) default: g_assert_not_reached(); } + return used; } gboolean mouse_bind(const gchar *buttonstr, const gchar *contextstr,