diff options
author | Jose Medrano <josmed@microsoft.com> | 2019-09-19 21:13:43 +0300 |
---|---|---|
committer | monojenkins <jo.shields+jenkins@xamarin.com> | 2019-10-23 21:16:17 +0300 |
commit | 6cef3c2aa354de010411e0461e77e12f68ef9994 (patch) | |
tree | 475030b4bf459651daa436d8ad6c0fdd1c604059 | |
parent | bca37fc2554b79a96576e944cc815aac82213d67 (diff) |
Fixes current alignment centering Extension and children to parent
Fixes VSTS #935546 - [Shell] Extensions screen is not well aligned to parent
Fixes VSTS #872599 - [Feedback] Extension manager cannot be closed if remote is unreachable
m--------- | main/external/mono-addins | 0 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs | 33 |
2 files changed, 30 insertions, 3 deletions
diff --git a/main/external/mono-addins b/main/external/mono-addins -Subproject 09ac97652bef24b2e043bc8fda7a024cf4dc7a4 +Subproject 124fd2d88fdabf54c378bdf5041584f9e06b681 diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs index 826fcc0a25..7955d219a7 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Updater/AddinsUpdateHandler.cs @@ -98,7 +98,35 @@ namespace MonoDevelop.Ide.Updater { if (args.Button == Xwt.PointerButton.Left) { HideAlert (); - AddinManagerWindow.Run (IdeApp.Workbench.RootWindow.Visible ? IdeApp.Workbench.RootWindow : null); + OpenAddinManagerWindow (); + } + } + + static void OpenAddinManagerWindow () + { + if (!IdeApp.Workbench.RootWindow.Visible && WelcomePage.WelcomePageService.WelcomeWindow.nativeWidget is AppKit.NSWindow parentNsWindow) { + var dlg = AddinManagerWindow.Create (); + + EventHandler shownEvent = null; + shownEvent = (s, e) => { + dlg.Shown -= shownEvent; + try { + var nativeWindow = Components.Mac.GtkMacInterop.GetNSWindow (dlg); + MessageService.CenterWindow (nativeWindow, parentNsWindow); + parentNsWindow.AddChildWindow (nativeWindow, AppKit.NSWindowOrderingMode.Above); + } catch (Exception ex) { + LoggingService.LogInternalError (ex); + } + }; + + dlg.Shown += shownEvent; + try { + dlg.Run (); + } finally { + dlg.Destroy (); + } + } else { + AddinManagerWindow.Run (IdeApp.Workbench.RootWindow); } } @@ -112,8 +140,7 @@ namespace MonoDevelop.Ide.Updater await t; } HideAlert (); - - AddinManagerWindow.Run (IdeApp.Workbench.RootWindow.Visible ? IdeApp.Workbench.RootWindow : null); + OpenAddinManagerWindow (); } public static void HideAlert () |