Add GTK grab when opening GtkFileChooserNativeWin32

Implementation copied from gtkfilechoosernativeportal.c

Fixes https://gitlab.gnome.org/GNOME/gtk/-/issues/4582
This commit is contained in:
Luca Bacci 2022-01-03 14:39:17 +01:00
parent 728f0e13a8
commit d3f46bcb16
No known key found for this signature in database
GPG Key ID: 8E3C8D989C98883D

View File

@ -44,6 +44,8 @@
#include "gtkstylecontext.h"
#include "gtkheaderbar.h"
#include "gtklabel.h"
#include "gtkmain.h"
#include "gtkinvisible.h"
#include "gtkfilechooserentry.h"
#include "gtkfilefilterprivate.h"
@ -53,8 +55,10 @@
typedef struct {
GtkFileChooserNative *self;
IFileDialogEvents *events;
GtkWidget *grab_widget;
IFileDialogEvents *events;
HWND parent;
gboolean skip_response;
gboolean save;
@ -324,6 +328,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);
gtk_widget_destroy (data->grab_widget);
}
g_clear_object (&data->current_folder);
g_clear_object (&data->current_file);
g_free (data->current_name);
@ -972,6 +982,9 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self)
return FALSE;
}
data->grab_widget = gtk_invisible_new ();
gtk_grab_add (GTK_WIDGET (data->grab_widget));
return TRUE;
}