[gtk/gtk-3-24: 1/2] quartz: gtk-application - inhibit openFiles events from cmdline



commit 7d9a939f9957ab089c98d91bdf68ec7b4a577588
Author: Friedrich Beckmann <friedrich beckmann gmx de>
Date:   Thu Jun 18 21:08:28 2020 +0200

    quartz: gtk-application - inhibit openFiles events from cmdline
    
    When an application is started via cmdline, then openFiles events
    from MacOS are generated although gtkapplication already interprets
    the cmdline arguments and opens suitable arguments as files. So they
    would be opened twice. Depending on the exact situation the
    openFiles event can also be issued before the startup signal
    is given. Depending on the application this can result in a crash
    due to unexpected behaviour. I took this idea from the
    gedit-app-osx.m file. Also from Jesse van den Kieboom.
    
    See:
    https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/2098#note_842975
    https://gitlab.gnome.org/GNOME/gtk/-/commit/a3ad7fa80f764fb7bcbe
    https://gitlab.gnome.org/GNOME/gedit/-/blob/master/gedit/gedit-app-osx.m#L592

 gtk/gtkapplication-quartz.c | 7 +++++++
 1 file changed, 7 insertions(+)
---
diff --git a/gtk/gtkapplication-quartz.c b/gtk/gtkapplication-quartz.c
index 7abea53a5d..fec5025496 100644
--- a/gtk/gtkapplication-quartz.c
+++ b/gtk/gtkapplication-quartz.c
@@ -337,6 +337,13 @@ gtk_application_impl_quartz_is_inhibited (GtkApplicationImpl         *impl,
 static void
 gtk_application_impl_quartz_init (GtkApplicationImplQuartz *quartz)
 {
+  /* This is required so that Cocoa is not going to parse the
+     command line arguments by itself and generate OpenFile events.
+     We already parse the command line ourselves, so this is needed
+     to prevent opening files twice, etc. */
+  [[NSUserDefaults standardUserDefaults] setObject:@"NO"
+                                            forKey:@"NSTreatUnknownArgumentsAsOpen"];
+
   quartz->combined = g_menu_new ();
 }
 


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