aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2012-08-03 20:12:00 +0800
committerXavier Claessens <xavier.claessens@collabora.co.uk>2012-08-15 20:08:45 +0800
commitdd60d75a6811d1a728c290b45de343c84e298a6d (patch)
tree000eff2e29ebbe22b42e2b042e196ca143353e2a /src
parentf4fc6c6be76bb4cdfb4ebda9ca7de6758f2f18d1 (diff)
downloadgsoc2013-empathy-dd60d75a6811d1a728c290b45de343c84e298a6d.tar.gz
gsoc2013-empathy-dd60d75a6811d1a728c290b45de343c84e298a6d.tar.zst
gsoc2013-empathy-dd60d75a6811d1a728c290b45de343c84e298a6d.zip
empathy_launch_external_app: allow to pass arguments
https://bugzilla.gnome.org/show_bug.cgi?id=680778
Diffstat (limited to 'src')
-rw-r--r--src/empathy-accounts-dialog.c61
1 files changed, 6 insertions, 55 deletions
diff --git a/src/empathy-accounts-dialog.c b/src/empathy-accounts-dialog.c
index a4096b86f..1023bac15 100644
--- a/src/empathy-accounts-dialog.c
+++ b/src/empathy-accounts-dialog.c
@@ -640,28 +640,6 @@ account_dialog_create_edit_params_dialog (EmpathyAccountsDialog *dialog)
}
static void
-start_external_app (GAppInfo *app_info)
-{
- GError *error = NULL;
- GdkAppLaunchContext *context = NULL;
- GdkDisplay *display;
-
- display = gdk_display_get_default ();
- context = gdk_display_get_app_launch_context (display);
-
- if (!g_app_info_launch (app_info, NULL, (GAppLaunchContext *) context,
- &error))
- {
- g_critical ("Failed to launch %s: %s",
- g_app_info_get_display_name (app_info),
- error->message);
- g_clear_error (&error);
- }
-
- tp_clear_object (&context);
-}
-
-static void
use_external_storage_provider (EmpathyAccountsDialog *self,
TpAccount *account)
{
@@ -670,47 +648,20 @@ use_external_storage_provider (EmpathyAccountsDialog *self,
provider = tp_account_get_storage_provider (account);
if (!tp_strdiff (provider, "com.meego.libsocialweb"))
{
- GDesktopAppInfo *desktop_info;
- gchar *cmd;
- GAppInfo *app_info;
- GError *error = NULL;
-
- desktop_info = g_desktop_app_info_new ("gnome-control-center.desktop");
- if (desktop_info == NULL)
- {
- g_critical ("Could not locate 'gnome-control-center.desktop'");
- return;
- }
-
- /* glib doesn't have API to start a desktop file with args... (#637875) */
- cmd = g_strdup_printf ("%s bisho.desktop", g_app_info_get_commandline (
- (GAppInfo *) desktop_info));
-
- app_info = g_app_info_create_from_commandline (cmd, NULL, 0, &error);
-
- if (app_info == NULL)
- {
- DEBUG ("Failed to create app info: %s", error->message);
- g_error_free (error);
- }
- else
- {
- start_external_app (app_info);
- g_object_unref (app_info);
- }
-
- g_object_unref (desktop_info);
- g_free (cmd);
+ empathy_launch_external_app ("gnome-control-center.desktop",
+ "bisho.desktop", NULL);
return;
}
else if (!tp_strdiff (provider, EMPATHY_GOA_PROVIDER))
{
- empathy_launch_external_app ("gnome-online-accounts-panel.desktop", NULL);
+ empathy_launch_external_app ("gnome-online-accounts-panel.desktop",
+ NULL, NULL);
return;
}
else if (!tp_strdiff (provider, EMPATHY_UOA_PROVIDER))
{
- empathy_launch_external_app ("gnome-credentials-panel.desktop", NULL);
+ empathy_launch_external_app ("gnome-credentials-panel.desktop",
+ NULL, NULL);
return;
}
else