summaryrefslogtreecommitdiff
path: root/mate-panel/libpanel-util/panel-launch.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-panel/libpanel-util/panel-launch.c')
-rw-r--r--mate-panel/libpanel-util/panel-launch.c37
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);