diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-08-22 16:46:57 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-08-23 08:37:07 +0000 |
commit | 5817bdf87d940d4cfbb02ad62b3304ff12b1de39 (patch) | |
tree | 2e35a436b0d0888ea694b9ec6df6b183db38c152 /src/libs/3rdparty/cplusplus | |
parent | 13a9f6663b7d321c01075d5e1627bc3f5d7b1b88 (diff) |
CppEditor: Consider selection when requesting quickfixes
If the user has a token selected, prefer that to the actual cursor
position.
Fixes: QTCREATORBUG-27886
Change-Id: Ib32e24676510bff42292fe23e4962720fcbac4ed
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/libs/3rdparty/cplusplus')
-rw-r--r-- | src/libs/3rdparty/cplusplus/TranslationUnit.cpp | 10 | ||||
-rw-r--r-- | src/libs/3rdparty/cplusplus/TranslationUnit.h | 6 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp index d5f299750e..0e396166ce 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.cpp +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.cpp @@ -26,6 +26,9 @@ #include "AST.h" #include "Literals.h" #include "DiagnosticClient.h" + +#include <utils/textutils.h> + #include <stack> #include <vector> #include <cstdarg> @@ -382,6 +385,13 @@ void TranslationUnit::getTokenPosition(int index, const StringLiteral **fileName) const { return getPosition(tokenAt(index).utf16charsBegin(), line, column, fileName); } +int TranslationUnit::getTokenPositionInDocument(int index, const QTextDocument *doc) const +{ + int line, column; + getTokenPosition(index, &line, &column); + return Utils::Text::positionInText(doc, line, column); +} + void TranslationUnit::getTokenStartPosition(int index, int *line, int *column, const StringLiteral **fileName) const diff --git a/src/libs/3rdparty/cplusplus/TranslationUnit.h b/src/libs/3rdparty/cplusplus/TranslationUnit.h index 7422885a7e..38c680994e 100644 --- a/src/libs/3rdparty/cplusplus/TranslationUnit.h +++ b/src/libs/3rdparty/cplusplus/TranslationUnit.h @@ -28,6 +28,10 @@ #include <unordered_map> #include <vector> +QT_BEGIN_NAMESPACE +class QTextDocument; +QT_END_NAMESPACE + namespace CPlusPlus { class CPLUSPLUS_EXPORT TranslationUnit @@ -124,6 +128,8 @@ public: int *column = nullptr, const StringLiteral **fileName = nullptr) const; + int getTokenPositionInDocument(int index, const QTextDocument *doc) const; + void pushLineOffset(int offset); void pushPreprocessorLine(int utf16charOffset, int line, |