diff --git a/Pinta.Core/Extensions/Gtk/GtkExtensions.Dialog.cs b/Pinta.Core/Extensions/Gtk/GtkExtensions.Dialog.cs index 5c2ba8837b..bd0096499a 100644 --- a/Pinta.Core/Extensions/Gtk/GtkExtensions.Dialog.cs +++ b/Pinta.Core/Extensions/Gtk/GtkExtensions.Dialog.cs @@ -31,6 +31,15 @@ namespace Pinta.Core; partial class GtkExtensions { + private static void DisableFullscreenDialogOnMac (Gtk.Window window) + { + if (SystemManager.GetOperatingSystem () != OS.Mac) + return; + + if (window.TransientFor?.IsFullscreen () == true) + window.Unfullscreen (); + } + public static async Task OpenFileAsync ( this Gtk.FileDialog fileDialog, Gtk.Window parent) @@ -84,6 +93,9 @@ public static string RunBlocking (this Adw.MessageDialog dialog) string response = ""; var loop = GLib.MainLoop.New (null, false); + if (dialog is Gtk.Window window) + DisableFullscreenDialogOnMac (window); + if (!dialog.Modal) dialog.Modal = true; @@ -134,6 +146,8 @@ public static Gtk.ResponseType RunBlocking (this Gtk.Dialog dialog) Gtk.ResponseType response = Gtk.ResponseType.None; GLib.MainLoop loop = GLib.MainLoop.New (null, false); + DisableFullscreenDialogOnMac (dialog); + if (!dialog.Modal) dialog.Modal = true; @@ -174,6 +188,9 @@ public static Task RunAsync (this Adw.MessageDialog dialog) { TaskCompletionSource completionSource = new (); + if (dialog is Gtk.Window window) + DisableFullscreenDialogOnMac (window); + void ResponseCallback ( Adw.MessageDialog sender, Adw.MessageDialog.ResponseSignalArgs args) @@ -192,6 +209,8 @@ void ResponseCallback ( { TaskCompletionSource completionSource = new (); + DisableFullscreenDialogOnMac (dialog); + void ResponseCallback ( Gtk.Dialog sender, Gtk.Dialog.ResponseSignalArgs args) @@ -209,6 +228,7 @@ void ResponseCallback ( public static Task PresentAsync (this Gtk.Window window) { TaskCompletionSource completionSource = new (); + DisableFullscreenDialogOnMac (window); bool CloseRequestCallback ( Gtk.Window sender,