Skip to content

Commit

Permalink
fix: find jumps to wrong location.
Browse files Browse the repository at this point in the history
After successfully finding matches and setting the cursor to them, the screen would jump to the original window location upon closing the window.

The error was caused by the wrong assumption that the scroll location should be restored when window is closed. Instead, the right ammount of scrolling needs to be calculated to account for the window no longer covering part of the text editor. Unused variable was discarded.

Another unrelated error is that the history of search names cannot be accessed which will be addressed at a later PR.
  • Loading branch information
paxcut committed Jan 7, 2025
1 parent 803cb33 commit 794a48f
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 6 deletions.
1 change: 0 additions & 1 deletion lib/third_party/imgui/ColorTextEditor/include/TextEditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -629,7 +629,6 @@ class TextEditor
uint64_t mStartTime = 0;
std::vector<std::string> mDefines;
TextEditor *mSourceCodeEditor = nullptr;
float mSavedScrollY = 0;
float mShiftedScrollY = 0;
float mScrollY = 0;
float mScrollYIncrement = 0.0F;
Expand Down
6 changes: 1 addition & 5 deletions lib/third_party/imgui/ColorTextEditor/source/TextEditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1179,8 +1179,6 @@ void TextEditor::RenderText(const char *aTitle, const ImVec2 &lineNumbersStartPo

if (mTopMarginChanged) {
mTopMarginChanged = false;
if (mTopMargin == 0)
mSavedScrollY = ImGui::GetScrollY();
auto window = ImGui::GetCurrentWindow();
auto maxScroll = window->ScrollMax.y;
if (maxScroll > 0) {
Expand All @@ -1196,10 +1194,8 @@ void TextEditor::RenderText(const char *aTitle, const ImVec2 &lineNumbersStartPo

if (mNewTopMargin > mTopMargin)
mShiftedScrollY = oldScrollY + pixelCount;
else if (mNewTopMargin > 0)
mShiftedScrollY = oldScrollY - pixelCount;
else
mShiftedScrollY = mSavedScrollY;
mShiftedScrollY = oldScrollY - pixelCount;
ImGui::SetScrollY(mShiftedScrollY);
mTopMargin = mNewTopMargin;
}
Expand Down

0 comments on commit 794a48f

Please sign in to comment.