[gnome-photos] Create a GAppLaunchContext even if a GtkWidget isn't around



commit 781f8b632fc3183c9303768be63baaa6e9c8d1df
Author: Debarshi Ray <debarshir gnome org>
Date:   Thu Jan 18 14:12:48 2018 +0100

    Create a GAppLaunchContext even if a GtkWidget isn't around

 src/photos-share-point-email.c |  6 +++++-
 src/photos-utils.c             | 20 +++++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/src/photos-share-point-email.c b/src/photos-share-point-email.c
index a5ac56bf..f2de54ff 100644
--- a/src/photos-share-point-email.c
+++ b/src/photos-share-point-email.c
@@ -92,6 +92,7 @@ static void
 photos_share_point_email_share_save_to_dir (GObject *source_object, GAsyncResult *res, gpointer user_data)
 {
   PhotosSharePointEmail *self;
+  GAppLaunchContext *ctx = NULL;
   GError *error;
   GFile *file = NULL;
   GTask *task = G_TASK (user_data);
@@ -114,8 +115,10 @@ photos_share_point_email_share_save_to_dir (GObject *source_object, GAsyncResult
   escaped_path = g_uri_escape_string (path, G_URI_RESERVED_CHARS_ALLOWED_IN_PATH, FALSE);
   uri = g_strconcat ("mailto:?attach=";, escaped_path, NULL);
 
+  ctx = photos_utils_new_app_launch_context_from_widget (NULL);
+
   error = NULL;
-  if (!photos_glib_app_info_launch_uri (self->default_app, uri, NULL, &error))
+  if (!photos_glib_app_info_launch_uri (self->default_app, uri, ctx, &error))
     {
       g_task_return_error (task, error);
       goto out;
@@ -127,6 +130,7 @@ photos_share_point_email_share_save_to_dir (GObject *source_object, GAsyncResult
   g_free (escaped_path);
   g_free (path);
   g_free (uri);
+  g_clear_object (&ctx);
   g_clear_object (&file);
   g_object_unref (task);
 }
diff --git a/src/photos-utils.c b/src/photos-utils.c
index 08625a2b..923dea49 100644
--- a/src/photos-utils.c
+++ b/src/photos-utils.c
@@ -1280,21 +1280,23 @@ photos_utils_new_app_launch_context_from_widget (GtkWidget *widget)
 {
   GAppLaunchContext *ret_val = NULL;
   g_autoptr (GdkAppLaunchContext) ctx = NULL;
-  GdkDisplay *display;
-  GdkScreen *screen;
+  GdkDisplay *display = NULL;
+  GdkScreen *screen = NULL;
 
-  if (widget == NULL)
-    goto out;
+  if (widget != NULL)
+    {
+      screen = gtk_widget_get_screen (widget);
+      display = gdk_screen_get_display (screen);
+    }
 
-  screen = gtk_widget_get_screen (widget);
-  display = gdk_screen_get_display (screen);
+  if (display == NULL)
+    display = gdk_display_get_default ();
 
   ctx = gdk_display_get_app_launch_context (display);
-  gdk_app_launch_context_set_screen (ctx, screen);
+  if (screen != NULL)
+    gdk_app_launch_context_set_screen (ctx, screen);
 
   ret_val = G_APP_LAUNCH_CONTEXT (g_steal_pointer (&ctx));
-
- out:
   return ret_val;
 }
 


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