[gtk+/gtk-3-22] GtkFileChooserNativeQuartz: restore parent focus after closing dialog
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-22] GtkFileChooserNativeQuartz: restore parent focus after closing dialog
- Date: Wed, 23 Aug 2017 14:46:33 +0000 (UTC)
commit b9b46847401ff26e19a79399790614450b9442ea
Author: Tom Schoonjans <Tom Schoonjans diamond ac uk>
Date: Mon Jul 31 21:28:42 2017 +0100
GtkFileChooserNativeQuartz: restore parent focus after closing dialog
Tested for both modal and non-modal dialogs
https://bugzilla.gnome.org/show_bug.cgi?id=785306
gtk/gtkfilechoosernativequartz.c | 24 +++++++++++++++++++++---
1 files changed, 21 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkfilechoosernativequartz.c b/gtk/gtkfilechoosernativequartz.c
index f210c1d..65f2579 100644
--- a/gtk/gtkfilechoosernativequartz.c
+++ b/gtk/gtkfilechoosernativequartz.c
@@ -48,6 +48,7 @@ typedef struct {
NSSavePanel *panel;
NSWindow *parent;
+ NSWindow *key_window;
gboolean skip_response;
gboolean save;
gboolean folder;
@@ -350,6 +351,16 @@ filechooser_quartz_launch (FileChooserQuartzData *data)
self->mode_data = NULL;
+ if (data->parent)
+ {
+ [data->panel orderOut:nil];
+ [data->parent makeKeyAndOrderFront:nil];
+ }
+ else
+ {
+ [data->key_window makeKeyAndOrderFront:nil];
+ }
+
if (!data->skip_response)
{
g_slist_free_full (self->custom_files, g_object_unref);
@@ -365,12 +376,10 @@ filechooser_quartz_launch (FileChooserQuartzData *data)
if (data->parent != NULL && data->modal)
{
- [data->panel setLevel:NSModalPanelWindowLevel];
[data->panel beginSheetModalForWindow:data->parent completionHandler:handler];
}
else
{
- [data->panel setLevel:NSModalPanelWindowLevel];
[data->panel beginWithCompletionHandler:handler];
}
@@ -543,6 +552,8 @@ gtk_file_chooser_native_quartz_show (GtkFileChooserNative *self)
data->current_name = g_strdup (self->current_name);
}
+ data->key_window = [NSApp keyWindow];
+
return filechooser_quartz_launch(data);
}
@@ -560,8 +571,15 @@ gtk_file_chooser_native_quartz_hide (GtkFileChooserNative *self)
[data->panel orderBack:nil];
[data->panel close];
+
if (data->parent)
- [data->parent orderFront:nil];
+ {
+ [data->parent makeKeyAndOrderFront:nil];
+ }
+ else
+ {
+ [data->key_window makeKeyAndOrderFront:nil];
+ }
data->panel = NULL;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]