From de4269bf32ee1185e8fa645b23ac7ad1888f9164 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Sat, 30 Jul 2022 17:43:55 -0400 Subject: [PATCH] Keep saved collapse data from collapsing around the cursor --- IDE/src/ui/SourceEditWidgetContent.bf | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/IDE/src/ui/SourceEditWidgetContent.bf b/IDE/src/ui/SourceEditWidgetContent.bf index cf125e14..33a78b7c 100644 --- a/IDE/src/ui/SourceEditWidgetContent.bf +++ b/IDE/src/ui/SourceEditWidgetContent.bf @@ -6078,7 +6078,7 @@ namespace IDE.ui wantOpen = !wantOpen; if (collapseEntry.mIsOpen != wantOpen) - SetCollapseOpen(@collapseEntry.Index, wantOpen, true); + SetCollapseOpen(@collapseEntry.Index, wantOpen, true, true); } mCollapseAwaitingDB = false; @@ -6387,18 +6387,27 @@ namespace IDE.ui } - public void SetCollapseOpen(int collapseIdx, bool wantOpen, bool immediate = false) + public void SetCollapseOpen(int collapseIdx, bool wantOpen, bool immediate = false, bool keepCursorVisible = false) { var entry = mOrderedCollapseEntries[collapseIdx]; + var cursorLineAndColumn = CursorLineAndColumn; + + if ((!wantOpen) && (keepCursorVisible) && (cursorLineAndColumn.mLine >= entry.mStartLine) && (cursorLineAndColumn.mLine <= entry.mEndLine)) + { + if (CursorTextPos < entry.mEndIdx) + { + // Ignore close + return; + } + } + entry.mIsOpen = wantOpen; if (immediate) entry.mOpenPct = entry.mIsOpen ? 1.0f : 0.0f; mCollapseNeedsUpdate = true; mCollapseDBDirty = true; - var cursorLineAndColumn = CursorLineAndColumn; - if (wantOpen) { if (mEmbeds.GetValue(entry.mAnchorLine) case .Ok(let embed))