}
void action_run_list(GSList *acts, ObClient *c, ObFrameContext context,
- guint state, gint button, gint x, gint y, Time time,
+ guint state, guint button, gint x, gint y, Time time,
gboolean cancel, gboolean done)
{
GSList *it;
cmd, e->message);
g_error_free(e);
} else if (data->execute.startupnotify) {
- gchar **env, *program;
+ gchar *program;
program = g_path_get_basename(argv[0]);
- env = sn_get_spawn_environment(program,
- data->execute.name,
- data->execute.icon_name,
- /* launch it on the current
- desktop */
- screen_desktop,
- data->execute.any.time);
- if (!g_spawn_async(NULL, argv, env, G_SPAWN_SEARCH_PATH |
+ /* sets up the environment */
+ sn_setup_spawn_environment(program,
+ data->execute.name,
+ data->execute.icon_name,
+ /* launch it on the current
+ desktop */
+ screen_desktop,
+ data->execute.any.time);
+ if (!g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH |
G_SPAWN_DO_NOT_REAP_CHILD,
NULL, NULL, NULL, &e)) {
g_warning("failed to execute '%s': %s",
g_error_free(e);
sn_spawn_cancel();
}
- g_strfreev(env);
+ unsetenv("DESKTOP_STARTUP_ID");
g_free(program);
g_strfreev(argv);
} else {
moving on us */
event_halt_focus_delay();
- if (client_validate(data->client.any.c))
- client_focus(data->client.any.c);
+ client_focus(data->client.any.c);
}
}
void action_showmenu(union ActionData *data)
{
if (data->showmenu.name) {
- gint x, y;
- ObClient *c = data->showmenu.any.c;
- if (data->any.button == -1 && c) {
- x = c->frame->area.x + c->frame->size.left;
- y = c->frame->area.y + c->frame->size.top;
- } else {
- x = data->any.x;
- y = data->any.y;
- }
- menu_show(data->showmenu.name, x, y, c);
+ menu_show(data->showmenu.name, data->any.x, data->any.y,
+ data->showmenu.any.c);
}
}