diff options
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 () |