diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index eb8700e8..34f2fd9d 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -6914,7 +6914,15 @@ namespace IDE int recentFileIdx = -1; if (sourceViewPanel != null) { - sourceViewPanel.Dispose(); + if (sourceViewPanel.[Friend]NeedsPostRemoveUpdate) + { + sourceViewPanel.[Friend]mDeleteAfterPostRemoveUpdate = true; + tabButton.mContent.RemoveSelf(); + tabButton.mContent = null; + } + else + sourceViewPanel.Dispose(); + if (sourceViewPanel.mFilePath != null) recentFileIdx = GetRecentFilesIdx(sourceViewPanel.mFilePath); } @@ -14167,6 +14175,8 @@ namespace IDE //Debug.WriteLine("Removing sourceViewPanel from mPostRemoveUpdatePanel {0} from IDEApp.Update", sourceViewPanel); sourceViewPanel.[Friend]mInPostRemoveUpdatePanels = false; @sourceViewPanel.Remove(); + if (sourceViewPanel.[Friend]mDeleteAfterPostRemoveUpdate) + DeferDelete(sourceViewPanel); } } diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 66266a98..1987a97b 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -489,6 +489,7 @@ namespace IDE.ui int32 mResolveJobCount; bool mWantsParserCleanup; bool mInPostRemoveUpdatePanels; + bool mDeleteAfterPostRemoveUpdate; // For multi-view files... PersistentTextPosition mTrackCursorPos;