diff options
author | Vsevolod Kukol <sevoku@microsoft.com> | 2019-07-03 23:27:10 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-03 23:27:10 +0300 |
commit | dc31a0df5fb7a741d77e09c24b686f8a834ee553 (patch) | |
tree | 4d4ace2ed6339b3928ad2c7240370a0efe8c7d43 /main | |
parent | f3ad1fdf474bd4941170eda2ecabcb0fbfaad2bb (diff) | |
parent | 0e4524548539788e786ed955a352b7531bf3b9a6 (diff) |
Merge pull request #8122 from mono/backport-pr-8087-to-release-8.2
[release-8.2] Fixes VSTS Bug 776934: TreeBuilderContext.GetTreeBuilder() null
Diffstat (limited to 'main')
2 files changed, 17 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs index 6d5c67b253..aa0a970ac5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs @@ -2159,8 +2159,11 @@ namespace MonoDevelop.Ide.Gui.Components SelectionChanged (this, EventArgs.Empty); } + public bool IsDestroyed { get; set; } + void Destroy () { + IsDestroyed = true; IdeApp.Preferences.CustomPadFont.Changed -= CustomFontPropertyChanged; if (pix_render != null) { pix_render.Destroy (); @@ -2175,11 +2178,6 @@ namespace MonoDevelop.Ide.Gui.Components text_render = null; } - if (store != null) { - Clear (); - store = null; - } - if (builders != null) { foreach (NodeBuilder nb in builders) { try { @@ -2190,6 +2188,12 @@ namespace MonoDevelop.Ide.Gui.Components } builders = null; } + + if (store != null) { + Clear (); + store = null; + } + builderChains.Clear (); } @@ -2229,6 +2233,8 @@ namespace MonoDevelop.Ide.Gui.Components public ITreeBuilder GetTreeBuilder () { + if (pad.IsDestroyed) + throw new InvalidOperationException ("TreeView is destroyed."); Gtk.TreeIter iter; if (!pad.store.GetIterFirst (out iter)) return pad.CreateBuilder (Gtk.TreeIter.Zero); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs index e77d0333d8..ac64371189 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs @@ -248,6 +248,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad void OnSystemFileAdded (object sender, FileEventArgs args) { + if (Context.Tree.IsDestroyed) + return; foreach (FileEventInfo e in args) { Project project = GetProjectForFile (e.FileName); if (project == null) return; @@ -263,6 +265,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad void OnSystemFileDeleted (object sender, FileEventArgs args) { + if (Context.Tree.IsDestroyed) + return; foreach (FileEventInfo e in args) { try { Project project = GetProjectForFile (e.FileName); @@ -298,6 +302,8 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad void OnSystemFileRenamed (object sender, FileCopyEventArgs args) { + if (Context.Tree.IsDestroyed) + return; foreach (FileEventInfo e in args) { Project project = GetProjectForFile (e.SourceFile); if (project == null) return; |