summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Bacci <luca.bacci982@gmail.com>2022-01-04 13:59:08 +0000
committerLuca Bacci <luca.bacci982@gmail.com>2022-01-04 13:59:08 +0000
commit063e6baa0a255d8eb0548405199de592a9a566d8 (patch)
tree630f47d7031daa02fe1b97d19ddab613264eff8c
parentfa9b634d8f932e4677096425868bd295d1d0b54d (diff)
parentc138aaabf376d8a995a8275e2219f22b9580c48c (diff)
downloadgtk+-063e6baa0a255d8eb0548405199de592a9a566d8.tar.gz
Merge branch 'gtk-grab-file-chooser-native-win32' into 'main'
GTK grab for GtkFileChooserNativeWin32 Closes #4582 See merge request GNOME/gtk!4329
-rw-r--r--gtk/gtkfilechoosernativewin32.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c
index 505e0b07f0..bd08939e86 100644
--- a/gtk/gtkfilechoosernativewin32.c
+++ b/gtk/gtkfilechoosernativewin32.c
@@ -41,6 +41,7 @@
#include "gtktogglebutton.h"
#include "gtkheaderbar.h"
#include "gtklabel.h"
+#include "gtkmain.h"
#include "gtkfilefilterprivate.h"
#include "gtknative.h"
@@ -50,6 +51,9 @@
typedef struct {
GtkFileChooserNative *self;
+
+ GtkWidget *grab_widget;
+
IFileDialogEvents *events;
HWND parent;
@@ -318,6 +322,12 @@ filechooser_win32_thread_data_free (FilechooserWin32ThreadData *data)
if (data->events)
IFileDialogEvents_Release (data->events);
+ if (data->grab_widget)
+ {
+ gtk_grab_remove (data->grab_widget);
+ g_object_unref (data->grab_widget);
+ }
+
g_clear_object (&data->current_folder);
g_clear_object (&data->current_file);
g_free (data->current_name);
@@ -969,6 +979,12 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self)
return FALSE;
}
+ if (data->modal)
+ {
+ data->grab_widget = g_object_ref_sink (gtk_label_new (""));
+ gtk_grab_add (GTK_WIDGET (data->grab_widget));
+ }
+
return TRUE;
}