} ObMouseBinding;
#define CLIENT_CONTEXT(co, cl) ((cl && cl->type == OB_CLIENT_TYPE_DESKTOP) ? \
- co == OB_FRAME_CONTEXT_ROOT : \
+ co == OB_FRAME_CONTEXT_DESKTOP : \
co == OB_FRAME_CONTEXT_CLIENT)
/* Array of GSList*s of PointerBinding*s. */
act->data.showmenu.y = y;
}
- if (act->func == action_desktop_dir)
- {
- act->data.desktopdir.final = FALSE;
- act->data.desktopdir.cancel = FALSE;
- }
- if (act->func == action_send_to_desktop_dir)
- {
- act->data.sendtodir.final = FALSE;
- act->data.sendtodir.cancel = FALSE;
- }
-
- if (config_desktop_popup &&
- (act->func == action_desktop_dir ||
- act->func == action_send_to_desktop_dir))
- {
+ if (act->data.any.interactive) {
+ act->data.inter.cancel = FALSE;
+ act->data.inter.final = FALSE;
keyboard_interactive_grab(state, c, context, act);
}
static int px, py;
gboolean click = FALSE;
gboolean dclick = FALSE;
-
+
switch (e->type) {
case ButtonPress:
px = e->xbutton.x_root;
int junk1, junk2;
Window wjunk;
guint ujunk, b, w, h;
- Status s;
xerror_set_ignore(TRUE);
- s = XGetGeometry(ob_display, e->xbutton.window,
- &wjunk, &junk1, &junk2, &w, &h, &b, &ujunk);
+ junk1 = XGetGeometry(ob_display, e->xbutton.window,
+ &wjunk, &junk1, &junk2, &w, &h, &b, &ujunk);
xerror_set_ignore(FALSE);
- if (s == Success) {
+ if (junk1) {
if (e->xbutton.x >= (signed)-b &&
e->xbutton.y >= (signed)-b &&
e->xbutton.x < (signed)(w+b) &&
grab_all_clients(FALSE);
+ /* when there are no modifiers in the binding, then the action cannot
+ be interactive */
+ if (!state && action->data.any.interactive) {
+ action->data.any.interactive = FALSE;
+ action->data.inter.final = TRUE;
+ }
+
/* add the binding */
b = g_new0(ObMouseBinding, 1);
b->state = state;