[gtk/gapplication-quartz-open] quartz: added open capability to gtk_application
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gapplication-quartz-open] quartz: added open capability to gtk_application
- Date: Tue, 16 Jun 2020 16:44:08 +0000 (UTC)
commit d468ea3efa4847d310143654472c0829a53b879d
Author: Friedrich Beckmann <friedrich beckmann gmx de>
Date: Tue Jun 16 16:59:06 2020 +0200
quartz: added open capability to gtk_application
This patch implements the openFiles delegate which is required
to open files which are associated with an application via the
Finder or via open on the command line. The patch has been
proposed by jessevdk gmail com.
See: https://gitlab.gnome.org/GNOME/gtk/-/issues/463
I tested the patch with the GNU pspp application on MacOS with
the quartz backend.
gtk/gtkapplication-quartz.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
---
diff --git a/gtk/gtkapplication-quartz.c b/gtk/gtkapplication-quartz.c
index 38131f4be0..90ab1705f0 100644
--- a/gtk/gtkapplication-quartz.c
+++ b/gtk/gtkapplication-quartz.c
@@ -64,6 +64,7 @@ G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_A
- (id)initWithImpl:(GtkApplicationImplQuartz*)impl;
- (NSApplicationTerminateReply) applicationShouldTerminate:(NSApplication *)sender;
+- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames;
@end
@implementation GtkApplicationQuartzDelegate
@@ -84,6 +85,35 @@ G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_A
*/
return quartz->quit_inhibit == 0 ? NSTerminateNow : NSTerminateCancel;
}
+
+-(void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames
+{
+ GFile **files;
+ gint i;
+ GApplicationFlags flags;
+
+ flags = g_application_get_flags (G_APPLICATION (quartz->impl.application));
+
+ if (~flags & G_APPLICATION_HANDLES_OPEN)
+ {
+ [theApplication replyToOpenOrPrint:NSApplicationDelegateReplyFailure];
+ return;
+ }
+
+ files = g_new (GFile *, [filenames count]);
+
+ for (i = 0; i < [filenames count]; i++)
+ files[i] = g_file_new_for_path ([(NSString *)[filenames objectAtIndex:i] UTF8String]);
+
+ g_application_open (G_APPLICATION (quartz->impl.application), files, [filenames count], "");
+
+ for (i = 0; i < [filenames count]; i++)
+ g_object_unref (files[i]);
+
+ g_free (files);
+
+ [theApplication replyToOpenOrPrint:NSApplicationDelegateReplySuccess];
+}
@end
/* these exist only for accel handling */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]