[gnome-panel] menu: redo gp_menu_utils_app_info_launch



commit 6b3432247bf8dd9406720df4e52f7d5e3dbf47af
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Mon Feb 5 20:57:48 2018 +0200

    menu: redo gp_menu_utils_app_info_launch

 modules/menu/gp-menu-utils.c |   53 +++++++++++++++++++++++------------------
 1 files changed, 30 insertions(+), 23 deletions(-)
---
diff --git a/modules/menu/gp-menu-utils.c b/modules/menu/gp-menu-utils.c
index 7dd291d..4619b3f 100644
--- a/modules/menu/gp-menu-utils.c
+++ b/modules/menu/gp-menu-utils.c
@@ -287,39 +287,46 @@ pid_cb (GDesktopAppInfo *info,
   g_child_watch_add (pid, (GChildWatchFunc) g_spawn_close_pid, NULL);
 }
 
-void
-gp_menu_utils_app_info_launch (GDesktopAppInfo *app_info)
+static gboolean
+app_info_launch_uris (GDesktopAppInfo  *info,
+                      GList            *uris,
+                      GError          **error)
 {
   GSpawnFlags flags;
-  GError *error;
   gboolean ret;
 
   flags = G_SPAWN_SEARCH_PATH | G_SPAWN_DO_NOT_REAP_CHILD;
-  error = NULL;
-
-  ret = g_desktop_app_info_launch_uris_as_manager (app_info, NULL, NULL,
-                                                   flags, child_setup, app_info,
+  ret = g_desktop_app_info_launch_uris_as_manager (info, uris, NULL,
+                                                   flags, child_setup, info,
                                                    pid_cb, NULL,
-                                                   &error);
+                                                   error);
 
-  if (ret == FALSE)
-    {
-      const gchar *display_name;
-      GtkWidget *dialog;
+  return ret;
+}
 
-      display_name = g_app_info_get_display_name (G_APP_INFO (app_info));
-      dialog = gtk_message_dialog_new (NULL, 0,
-                                       GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
-                                       _("Could not launch '%s'"),
-                                       display_name);
+void
+gp_menu_utils_app_info_launch (GDesktopAppInfo *app_info)
+{
+  GError *error;
+  const gchar *display_name;
+  GtkWidget *dialog;
 
-      if (error != NULL)
-        gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
-                                                  "%s", error->message);
+  error = NULL;
+  if (app_info_launch_uris (app_info, NULL, &error))
+    return;
 
-      g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
-      gtk_window_present (GTK_WINDOW (dialog));
-    }
+  display_name = g_app_info_get_display_name (G_APP_INFO (app_info));
+  dialog = gtk_message_dialog_new (NULL, 0,
+                                   GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
+                                   _("Could not launch '%s'"),
+                                   display_name);
+
+  if (error != NULL)
+    gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+                                              "%s", error->message);
+
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_destroy), NULL);
+  gtk_window_present (GTK_WINDOW (dialog));
 
   g_clear_error (&error);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]