diff options
author | Luca Bacci <luca.bacci982@gmail.com> | 2022-01-04 10:44:54 +0100 |
---|---|---|
committer | Luca Bacci <luca.bacci982@gmail.com> | 2022-01-04 10:46:20 +0100 |
commit | c138aaabf376d8a995a8275e2219f22b9580c48c (patch) | |
tree | 867d9a75f1c349f10cdd9bde7f3059c10fbc6170 /gtk/gtkfilechoosernativewin32.c | |
parent | 7cef454c86ad62100c52203aa87bcf9f91f6a6bc (diff) | |
download | gtk+-c138aaabf376d8a995a8275e2219f22b9580c48c.tar.gz |
Use a GTK grab when showing a modal GtkFileChooserNativeWin32
Diffstat (limited to 'gtk/gtkfilechoosernativewin32.c')
-rw-r--r-- | gtk/gtkfilechoosernativewin32.c | 16 |
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; } |