From edbfd96d4bcfc2eee5f5cbe0b8568543b2e1dccd Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 16 Jun 2025 15:22:07 +0200 Subject: [PATCH] DiffEditor: fix jumping to selected file from toolbar dropdown Change-Id: I968ddc798c6f66072947031bab2dd3855a99bdee Reviewed-by: Alessandro Portale --- src/libs/utils/plaintextedit/plaintextedit.cpp | 5 +++++ src/libs/utils/plaintextedit/plaintextedit.h | 1 + src/plugins/diffeditor/sidebysidediffeditorwidget.cpp | 2 +- src/plugins/diffeditor/unifieddiffeditorwidget.cpp | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/libs/utils/plaintextedit/plaintextedit.cpp b/src/libs/utils/plaintextedit/plaintextedit.cpp index 833bf70226f..f5f9b6ba3f2 100644 --- a/src/libs/utils/plaintextedit/plaintextedit.cpp +++ b/src/libs/utils/plaintextedit/plaintextedit.cpp @@ -2973,6 +2973,11 @@ bool PlainTextEdit::find(const QRegularExpression &exp, QTextDocument::FindFlags } #endif +void PlainTextEdit::setTopBlock(const QTextBlock &block) +{ + d->setTopBlock(block.firstLineNumber(), 0, 0); +} + /*! \fn void PlainTextEdit::copyAvailable(bool yes) diff --git a/src/libs/utils/plaintextedit/plaintextedit.h b/src/libs/utils/plaintextedit/plaintextedit.h index d822ae64462..da4ed0050f2 100644 --- a/src/libs/utils/plaintextedit/plaintextedit.h +++ b/src/libs/utils/plaintextedit/plaintextedit.h @@ -111,6 +111,7 @@ public: inline QString toPlainText() const { return document()->toPlainText(); } + void setTopBlock(const QTextBlock &block); void ensureCursorVisible(); virtual QVariant loadResource(int type, const QUrl &name); diff --git a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp index a340af435f8..ffc512c5e78 100644 --- a/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp +++ b/src/plugins/diffeditor/sidebysidediffeditorwidget.cpp @@ -834,7 +834,7 @@ void SideBySideDiffEditorWidget::setCurrentDiffFileIndex(int diffFileIndex) QTextCursor cursor = editor->textCursor(); cursor.setPosition(block.position()); editor->setTextCursor(cursor); - editor->verticalScrollBar()->setValue(blockNumber); + editor->setTopBlock(block); } } diff --git a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp index f0591e7519f..7e1148cd59f 100644 --- a/src/plugins/diffeditor/unifieddiffeditorwidget.cpp +++ b/src/plugins/diffeditor/unifieddiffeditorwidget.cpp @@ -578,7 +578,7 @@ void UnifiedDiffEditorWidget::setCurrentDiffFileIndex(int diffFileIndex) QTextCursor cursor = textCursor(); cursor.setPosition(block.position()); setTextCursor(cursor); - verticalScrollBar()->setValue(blockNumber); + setTopBlock(block); } } // namespace DiffEditor::Internal