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:
parent
728f0e13a8
commit
d3f46bcb16
@ -44,6 +44,8 @@
|
|||||||
#include "gtkstylecontext.h"
|
#include "gtkstylecontext.h"
|
||||||
#include "gtkheaderbar.h"
|
#include "gtkheaderbar.h"
|
||||||
#include "gtklabel.h"
|
#include "gtklabel.h"
|
||||||
|
#include "gtkmain.h"
|
||||||
|
#include "gtkinvisible.h"
|
||||||
#include "gtkfilechooserentry.h"
|
#include "gtkfilechooserentry.h"
|
||||||
#include "gtkfilefilterprivate.h"
|
#include "gtkfilefilterprivate.h"
|
||||||
|
|
||||||
@ -53,8 +55,10 @@
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
GtkFileChooserNative *self;
|
GtkFileChooserNative *self;
|
||||||
IFileDialogEvents *events;
|
|
||||||
|
|
||||||
|
GtkWidget *grab_widget;
|
||||||
|
|
||||||
|
IFileDialogEvents *events;
|
||||||
HWND parent;
|
HWND parent;
|
||||||
gboolean skip_response;
|
gboolean skip_response;
|
||||||
gboolean save;
|
gboolean save;
|
||||||
@ -324,6 +328,12 @@ filechooser_win32_thread_data_free (FilechooserWin32ThreadData *data)
|
|||||||
if (data->events)
|
if (data->events)
|
||||||
IFileDialogEvents_Release (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_folder);
|
||||||
g_clear_object (&data->current_file);
|
g_clear_object (&data->current_file);
|
||||||
g_free (data->current_name);
|
g_free (data->current_name);
|
||||||
@ -972,6 +982,9 @@ gtk_file_chooser_native_win32_show (GtkFileChooserNative *self)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->grab_widget = gtk_invisible_new ();
|
||||||
|
gtk_grab_add (GTK_WIDGET (data->grab_widget));
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user