diff options
Diffstat (limited to 'mate-panel/libpanel-util/panel-launch.c')
-rw-r--r-- | mate-panel/libpanel-util/panel-launch.c | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/mate-panel/libpanel-util/panel-launch.c b/mate-panel/libpanel-util/panel-launch.c index 59ca900a..0f4d7033 100644 --- a/mate-panel/libpanel-util/panel-launch.c +++ b/mate-panel/libpanel-util/panel-launch.c @@ -95,9 +95,10 @@ gather_pid_callback (GDesktopAppInfo *gapp, } gboolean -panel_app_info_launch_uris (GAppInfo *appinfo, +panel_app_info_launch_uris (GDesktopAppInfo *appinfo, GList *uris, GdkScreen *screen, + const gchar *action, guint32 timestamp, GError **error) { @@ -115,23 +116,28 @@ panel_app_info_launch_uris (GAppInfo *appinfo, gdk_app_launch_context_set_timestamp (context, timestamp); local_error = NULL; - retval = g_desktop_app_info_launch_uris_as_manager ((GDesktopAppInfo*)appinfo, uris, - (GAppLaunchContext *) context, + if (action == NULL) { + retval = g_desktop_app_info_launch_uris_as_manager (appinfo, uris, + G_APP_LAUNCH_CONTEXT (context), G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD, NULL, NULL, gather_pid_callback, appinfo, &local_error); + } else { + g_desktop_app_info_launch_action (appinfo, action, G_APP_LAUNCH_CONTEXT (context)); + retval = TRUE; + } g_object_unref (context); if ((local_error == NULL) && (retval == TRUE)) return TRUE; - return _panel_launch_handle_error (g_app_info_get_name ((GAppInfo*) appinfo), + return _panel_launch_handle_error (g_app_info_get_name (G_APP_INFO(appinfo)), screen, local_error, error); } gboolean -panel_app_info_launch_uri (GAppInfo *appinfo, +panel_app_info_launch_uri (GDesktopAppInfo *appinfo, const gchar *uri, GdkScreen *screen, guint32 timestamp, @@ -149,7 +155,7 @@ panel_app_info_launch_uri (GAppInfo *appinfo, uris = g_list_prepend (uris, (gpointer) uri); retval = panel_app_info_launch_uris (appinfo, uris, - screen, timestamp, error); + screen, NULL, timestamp, error); g_list_free (uris); @@ -157,30 +163,23 @@ panel_app_info_launch_uri (GAppInfo *appinfo, } gboolean -panel_launch_key_file (GKeyFile *keyfile, +panel_app_info_launch (GDesktopAppInfo *appinfo, GList *uri_list, GdkScreen *screen, + const gchar *action, GError **error) { - GDesktopAppInfo *appinfo; gboolean retval; - g_return_val_if_fail (keyfile != NULL, FALSE); + g_return_val_if_fail (appinfo != NULL, FALSE); g_return_val_if_fail (GDK_IS_SCREEN (screen), FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - appinfo = g_desktop_app_info_new_from_keyfile (keyfile); - - if (appinfo == NULL) - return FALSE; - - retval = panel_app_info_launch_uris (G_APP_INFO (appinfo), - uri_list, screen, + retval = panel_app_info_launch_uris (appinfo, + uri_list, screen, action, gtk_get_current_event_time (), error); - g_object_unref (appinfo); - return retval; } @@ -213,7 +212,7 @@ panel_launch_desktop_file (const char *desktop_file, if (appinfo == NULL) return FALSE; - retval = panel_app_info_launch_uris (G_APP_INFO (appinfo), NULL, screen, + retval = panel_app_info_launch_uris (appinfo, NULL, screen, NULL, gtk_get_current_event_time (), error); |