From 8d5ef8109ed927d90b299e36639f4b71bdf3138f Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 20 Jul 2021 15:41:29 +0100 Subject: [PATCH] When pre-populating find text, also try current word and select the text --- qrenderdoc/Windows/ShaderViewer.cpp | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Windows/ShaderViewer.cpp b/qrenderdoc/Windows/ShaderViewer.cpp index 6dc9bff7d..b2e9ff9bf 100644 --- a/qrenderdoc/Windows/ShaderViewer.cpp +++ b/qrenderdoc/Windows/ShaderViewer.cpp @@ -1238,12 +1238,32 @@ void ShaderViewer::readonly_keyPressed(QKeyEvent *event) if(event->key() == Qt::Key_F && (event->modifiers() & Qt::ControlModifier)) { m_FindReplace->setReplaceMode(false); - on_findReplace_clicked(); ScintillaEdit *edit = qobject_cast(QObject::sender()); if(edit) - m_FindReplace->setFindText(QString::fromUtf8(edit->getSelText())); + { + // if there's a selection, fill the find prompt with that + if(!edit->getSelText().isEmpty()) + { + m_FindReplace->setFindText(QString::fromUtf8(edit->getSelText())); + } + else + { + // otherwise pick the word under the cursor, if there is one + sptr_t scintillaPos = edit->currentPos(); + + sptr_t start = edit->wordStartPosition(scintillaPos, true); + sptr_t end = edit->wordEndPosition(scintillaPos, true); + + QByteArray text = edit->textRange(start, end); + + if(!text.isEmpty()) + m_FindReplace->setFindText(QString::fromUtf8(text)); + } + } + + on_findReplace_clicked(); } if(event->key() == Qt::Key_F3)