diff options
Diffstat (limited to 'plugins/mouse')
| -rw-r--r-- | plugins/mouse/mouse.c | 21 | ||||
| -rw-r--r-- | plugins/mouse/mouseparse.c | 2 |
2 files changed, 18 insertions, 5 deletions
diff --git a/plugins/mouse/mouse.c b/plugins/mouse/mouse.c index 45559e5c..2a0b4ecc 100644 --- a/plugins/mouse/mouse.c +++ b/plugins/mouse/mouse.c @@ -105,7 +105,7 @@ static void clearall() } static void fire_button(MouseAction a, Context context, Client *c, guint state, - guint button) + guint button, int x, int y) { GSList *it; MouseBinding *b; @@ -124,6 +124,11 @@ static void fire_button(MouseAction a, Context context, Client *c, guint state, g_assert(!(b->action[a]->func == action_move || b->action[a]->func == action_resize)); + if (b->action[a]->func == action_showmenu) { + b->action[a]->data.showmenu.x = x; + b->action[a]->data.showmenu.y = y; + } + b->action[a]->func(&b->action[a]->data); } } @@ -245,7 +250,8 @@ static void event(ObEvent *e, void *foo) fire_button(MouseAction_Press, context, e->data.x.client, e->data.x.e->xbutton.state, - e->data.x.e->xbutton.button); + e->data.x.e->xbutton.button, + e->data.x.e->xbutton.x_root, e->data.x.e->xbutton.y_root); if (context == Context_Client) { /* Replay the event, so it goes to the client*/ @@ -295,15 +301,20 @@ static void event(ObEvent *e, void *foo) } fire_button(MouseAction_Release, context, e->data.x.client, e->data.x.e->xbutton.state, - e->data.x.e->xbutton.button); + e->data.x.e->xbutton.button, + e->data.x.e->xbutton.x_root, e->data.x.e->xbutton.y_root); if (click) fire_button(MouseAction_Click, context, e->data.x.client, e->data.x.e->xbutton.state, - e->data.x.e->xbutton.button); + e->data.x.e->xbutton.button, + e->data.x.e->xbutton.x_root, + e->data.x.e->xbutton.y_root); if (dclick) fire_button(MouseAction_DClick, context, e->data.x.client, e->data.x.e->xbutton.state, - e->data.x.e->xbutton.button); + e->data.x.e->xbutton.button, + e->data.x.e->xbutton.x_root, + e->data.x.e->xbutton.y_root); break; case Event_X_MotionNotify: diff --git a/plugins/mouse/mouseparse.c b/plugins/mouse/mouseparse.c index d2039dd8..099dbaa8 100644 --- a/plugins/mouse/mouseparse.c +++ b/plugins/mouse/mouseparse.c @@ -99,6 +99,8 @@ void mouseparse(ParseToken *token) /* these use the argument */ if (action->func == action_execute || action->func == action_restart) action->data.execute.path = g_strdup(arg_str); + else if (action->func == action_showmenu) + action->data.showmenu.name = g_strdup(arg_str); if ((action->func == action_desktop || action->func == action_send_to_desktop) && arg_int) |
