move some code around in the execute action
Dana Jansens danakj@orodu.net
1 files changed,
15 insertions(+),
10 deletions(-)
jump to
M
openbox/actions/execute.c
→
openbox/actions/execute.c
@@ -108,7 +108,7 @@
/* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { - GError *e = NULL; + GError *e; gchar **argv = NULL; gchar *cmd; Options *o = options;@@ -205,12 +205,14 @@ /* If there is a keyboard grab going on then we need to cancel
it so the application can grab things */ event_cancel_all_key_grabs(); + e = NULL; if (!g_shell_parse_argv(cmd, NULL, &argv, &e)) { g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message); g_error_free(e); } else { gchar *program = NULL; + gboolean ok; if (o->sn) { program = g_path_get_basename(argv[0]);@@ -221,18 +223,21 @@ /* launch it on the current desktop */
screen_desktop); } - if (!g_spawn_async(NULL, argv, NULL, - G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, - NULL, NULL, NULL, &e)) - { - g_message(_("Failed to execute \"%s\": %s"), o->cmd, e->message); + e = NULL; + ok = g_spawn_async(NULL, argv, NULL, + G_SPAWN_SEARCH_PATH | + G_SPAWN_DO_NOT_REAP_CHILD, + NULL, NULL, NULL, &e); + if (!ok) { + g_message(_("Failed to execute \"%s\": %s"), + o->cmd, e->message); g_error_free(e); + } - if (o->sn) - sn_spawn_cancel(); + if (o->sn) { + if (!ok) sn_spawn_cancel(); + unsetenv("DESKTOP_STARTUP_ID"); } - if (o->sn) - unsetenv("DESKTOP_STARTUP_ID"); g_free(program); g_strfreev(argv);