Browse Source

Fixed the project browser view state not being restored when a solution is opened by double-clicking it in Explorer or by passing its file name on the command line.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3458 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Christian Hornung 18 years ago
parent
commit
996abff0a4
  1. 41
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs
  2. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPanel.cs

41
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPad.cs

@ -84,7 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -84,7 +84,7 @@ namespace ICSharpCode.SharpDevelop.Project
WorkbenchSingleton.Workbench.ActiveContentChanged += ActiveContentChanged;
if (ProjectService.OpenSolution != null) {
ProjectServiceSolutionLoaded(null, new SolutionEventArgs(ProjectService.OpenSolution));
this.LoadSolution(ProjectService.OpenSolution);
}
ActiveContentChanged(null, null);
}
@ -101,12 +101,47 @@ namespace ICSharpCode.SharpDevelop.Project @@ -101,12 +101,47 @@ namespace ICSharpCode.SharpDevelop.Project
void ProjectServiceSolutionLoaded(object sender, SolutionEventArgs e)
{
projectBrowserPanel.ViewSolution(e.Solution);
projectBrowserPanel.ReadViewState(e.Solution.Preferences.Properties);
this.LoadSolution(e.Solution);
}
void LoadSolution(Solution solution)
{
if (!ProjectBrowserControl.TreeView.IsHandleCreated) {
LoggingService.Debug("ProjectBrowser: Attempt to load solution " + solution.ToString() + " before handle of ProjectBrowserControl.TreeView created");
this.solutionToLoadWhenHandleIsCreated = solution;
if (!this.treeViewHandleCreatedAttached) {
LoggingService.Debug("-> Attaching event handler to ProjectBrowserControl.TreeView.HandleCreated");
this.treeViewHandleCreatedAttached = true;
ProjectBrowserControl.TreeView.HandleCreated += this.ProjectBrowserTreeViewHandleCreated;
}
} else {
LoggingService.Debug("ProjectBrowser: Loading solution " + solution.ToString() + " into project tree view");
this.solutionToLoadWhenHandleIsCreated = null;
projectBrowserPanel.ViewSolution(solution);
projectBrowserPanel.ReadViewState(solution.Preferences.Properties);
}
}
bool treeViewHandleCreatedAttached;
Solution solutionToLoadWhenHandleIsCreated;
void ProjectBrowserTreeViewHandleCreated(object sender, EventArgs e)
{
TreeView treeView = (TreeView)sender;
this.treeViewHandleCreatedAttached = false;
treeView.HandleCreated -= this.ProjectBrowserTreeViewHandleCreated;
if (this.solutionToLoadWhenHandleIsCreated != null) {
LoggingService.Debug("ProjectBrowser: Tree view handle created, will load " + this.solutionToLoadWhenHandleIsCreated.ToString() + ".");
treeView.BeginInvoke(new Action<Solution>(this.LoadSolution), this.solutionToLoadWhenHandleIsCreated);
this.solutionToLoadWhenHandleIsCreated = null;
} else {
LoggingService.Debug("ProjectBrowser: Tree view handle created, no solution to load.");
}
}
void ProjectServiceSolutionClosed(object sender, EventArgs e)
{
this.solutionToLoadWhenHandleIsCreated = null;
projectBrowserPanel.Clear();
}

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/ProjectBrowserPanel.cs

@ -88,7 +88,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -88,7 +88,6 @@ namespace ICSharpCode.SharpDevelop.Project
public void StoreViewState(Properties memento)
{
projectBrowserControl.StoreViewState(memento);
memento.Set("ProjectBrowserState", TreeViewHelper.GetViewStateString(projectBrowserControl.TreeView));
}
/// <summary>
@ -97,7 +96,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -97,7 +96,6 @@ namespace ICSharpCode.SharpDevelop.Project
public void ReadViewState(Properties memento)
{
projectBrowserControl.ReadViewState(memento);
TreeViewHelper.ApplyViewStateString(memento.Get("ProjectBrowserState", ""), projectBrowserControl.TreeView);
}
public void Clear()

Loading…
Cancel
Save