diff options
author | Vsevolod Kukol <sevoku@microsoft.com> | 2019-04-25 18:23:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-25 18:23:25 +0300 |
commit | 475b11ccbe0a7b37b43368ae71d321582e1b7d5d (patch) | |
tree | 5ca4b19199dca458922361b6eeeca563541ddb31 | |
parent | 173ff1c7bfff6ebaefd0cd89d9c51b907dbe8cf6 (diff) | |
parent | 88f9406685b4d792a8e31d89645cf4e635e2a138 (diff) |
Merge pull request #624 from xamarin/release-8.0-fix849568-startup-error-reporting-crash
[release-8.0] [Mac] Fix Alert Dialog crash on startup
-rw-r--r-- | main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs | 6 | ||||
-rw-r--r-- | main/src/addins/MacPlatform/MacPlatform.cs | 23 |
2 files changed, 26 insertions, 3 deletions
diff --git a/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs b/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs index fee1dc7dce..8112ef22f4 100644 --- a/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs +++ b/main/src/addins/MacPlatform/Dialogs/MacAlertDialogHandler.cs @@ -1,4 +1,4 @@ -// +// // MacAlertFileDialogHandler.cs // // Author: @@ -182,7 +182,9 @@ namespace MonoDevelop.MacIntegration int response = -1000; - var parent = data.TransientFor ?? IdeApp.Workbench.RootWindow; + var parent = data.TransientFor; + if (parent == null && IdeApp.Workbench?.RootWindow?.Visible == true) + parent = IdeApp.Workbench?.RootWindow; NSWindow nativeParent; try { nativeParent = parent; diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs index 97a8063b12..10672960c5 100644 --- a/main/src/addins/MacPlatform/MacPlatform.cs +++ b/main/src/addins/MacPlatform/MacPlatform.cs @@ -993,7 +993,28 @@ namespace MonoDevelop.MacIntegration public override Window GetParentForModalWindow () { - return NSApplication.SharedApplication.ModalWindow ?? NSApplication.SharedApplication.KeyWindow ?? NSApplication.SharedApplication.MainWindow; + try { + var window = NSApplication.SharedApplication.ModalWindow; + if (window != null) + return window; + } catch (Exception e) { + LoggingService.LogInternalError ("Getting SharedApplication.ModalWindow failed", e); + } + try { + var window = NSApplication.SharedApplication.KeyWindow; + if (window != null) + return window; + } catch (Exception e) { + LoggingService.LogInternalError ("Getting SharedApplication.KeyWindow failed", e); + } + try { + var window = NSApplication.SharedApplication.MainWindow; + if (window != null) + return window; + } catch (Exception e) { + LoggingService.LogInternalError ("Getting SharedApplication.MainWindow failed", e); + } + return null; } bool HasAnyDockWindowFocused () |