Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVsevolod Kukol <sevoku@microsoft.com>2019-04-09 19:35:43 +0300
committerxamarin-jenkins <jo.shields+jenkins@xamarin.com>2019-04-09 19:47:25 +0300
commit29a5415dc0765bb2cd600a3e99bb925e0fbecaa4 (patch)
treec6ec6a98671c19523552a6e7b277c5733e3ab9a7
parent06350243e589622e1b6a30edbbcbb4420574745f (diff)
[Ide] (Re)store Memento when hiding/showing the main IDE window
Fixes VSTS #827638 Fixes VSTS #835478 (when using close button)
-rw-r--r--main/src/addins/MacPlatform/MacPlatform.cs8
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs20
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs2
3 files changed, 22 insertions, 8 deletions
diff --git a/main/src/addins/MacPlatform/MacPlatform.cs b/main/src/addins/MacPlatform/MacPlatform.cs
index 7dfdbb217f..97a8063b12 100644
--- a/main/src/addins/MacPlatform/MacPlatform.cs
+++ b/main/src/addins/MacPlatform/MacPlatform.cs
@@ -622,16 +622,14 @@ namespace MonoDevelop.MacIntegration
ApplicationEvents.Reopen += delegate (object sender, ApplicationEventArgs e) {
if (Ide.WelcomePage.WelcomePageService.HasWindowImplementation && !(IdeApp.Workbench.RootWindow?.Visible ?? false)) {
if (IdeApp.Workbench.RootWindow != null) {
- IdeApp.Workbench.RootWindow.Visible = false;
+ IdeApp.Workbench.Hide ();
}
Ide.WelcomePage.WelcomePageService.ShowWelcomeWindow (new Ide.WelcomePage.WelcomeWindowShowOptions (true));
e.Handled = true;
} else if (IdeApp.Workbench != null && IdeApp.Workbench.RootWindow != null) {
IdeApp.Workbench.RootWindow.Deiconify ();
- IdeApp.Workbench.RootWindow.Visible = true;
-
- IdeApp.Workbench.RootWindow.Present ();
+ IdeApp.Workbench.Present ();
e.Handled = true;
}
};
@@ -765,7 +763,7 @@ namespace MonoDevelop.MacIntegration
{
args.RetVal = true;
if (await IdeApp.Workspace.Close ()) {
- IdeApp.Workbench.RootWindow.Visible = false;
+ IdeApp.Workbench.Hide ();
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
index 71b5ef3f78..e6adc00629 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs
@@ -125,13 +125,13 @@ namespace MonoDevelop.Ide.Gui
}
}
- internal void Realize (string workbenchMemento)
+ internal void Realize ()
{
Counters.Initialization.Trace ("Realizing Root Window");
RootWindow.Realize ();
Counters.Initialization.Trace ("Loading memento");
- var memento = PropertyService.Get (workbenchMemento, new Properties ());
+ var memento = IdeApp.Preferences.WorkbenchMemento.Value;
Counters.Initialization.Trace ("Setting memento");
workbench.Memento = memento;
@@ -155,6 +155,10 @@ namespace MonoDevelop.Ide.Gui
LayoutChanged (this, EventArgs.Empty);
hasEverBeenShown = true;
+ } else if (!RootWindow.Visible) {
+ // restore memento if the root window has been hidden before
+ var memento = IdeApp.Preferences.WorkbenchMemento.Value;
+ workbench.Memento = memento;
}
}
@@ -163,6 +167,18 @@ namespace MonoDevelop.Ide.Gui
if (!RootWindow.Visible)
Show ();
}
+
+ internal void Hide ()
+ {
+ if (RootWindow.Visible) {
+ IdeApp.Preferences.WorkbenchMemento.Value = (Properties)workbench.Memento;
+ // FIXME: On mac the window can not be hidden while in fullscreen, we should unllscreen first and then hide
+ if (Platform.IsMac && DesktopService.GetIsFullscreen (RootWindow)) {
+ return;
+ }
+ RootWindow.Hide ();
+ }
+ }
internal async Task<bool> Close ()
{
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
index 72127a6068..90452e195c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs
@@ -257,7 +257,7 @@ namespace MonoDevelop.Ide
monitor.Step (1);
Counters.Initialization.Trace ("Realizing Workbench Window");
- workbench.Realize ("SharpDevelop.Workbench.WorkbenchMemento");
+ workbench.Realize ();
monitor.Step (1);
MessageService.RootWindow = workbench.RootWindow;