a = action_new(actionstrings[i].func, uact);
if (actionstrings[i].setup)
actionstrings[i].setup(&a, uact);
+ /* only key bindings can be interactive. thus saith the xor. */
+ if (uact != OB_USER_ACTION_KEYBOARD_KEY)
+ a->data.any.interactive = FALSE;
break;
}
if (!exist)
if (act->func == action_execute || act->func == action_restart) {
if ((n = parse_find_node("execute", node->xmlChildrenNode))) {
gchar *s = parse_string(doc, n);
- act->data.execute.path = ob_expand_tilde(s);
+ act->data.execute.path = parse_expand_tilde(s);
g_free(s);
}
} else if (act->func == action_showmenu) {
}
void action_run_full(ObAction *a, struct _ObClient *c,
- ObFrameContext context,
guint state, guint button, gint x, gint y,
gboolean cancel, gboolean done)
{
a->data.inter.cancel = cancel;
a->data.inter.final = done;
if (!(cancel || done))
- keyboard_interactive_grab(state, c, context, a);
+ keyboard_interactive_grab(state, c, a);
}
a->func(&a->data);
g_warning("failed to execute '%s': %s",
cmd, e->message);
}
+ g_free(cmd);
} else {
g_warning("failed to convert '%s' from utf8", data->execute.path);
}
void action_exit(union ActionData *data)
{
- ob_exit();
+ ob_exit(0);
}
void action_showmenu(union ActionData *data)
{
int x, y, width, height, dest;
ObClient *c = data->diraction.any.c;
- Rect *a = screen_area(c->desktop);
+ Rect *a;
if (!c)
return;
+ a = screen_area(c->desktop);
x = c->frame->area.x;
y = c->frame->area.y;
width = c->frame->area.width;