aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2022-08-22 16:46:57 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2022-08-23 08:37:07 +0000
commit5817bdf87d940d4cfbb02ad62b3304ff12b1de39 (patch)
tree2e35a436b0d0888ea694b9ec6df6b183db38c152 /src/libs/3rdparty/cplusplus
parent13a9f6663b7d321c01075d5e1627bc3f5d7b1b88 (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.cpp10
-rw-r--r--src/libs/3rdparty/cplusplus/TranslationUnit.h6
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,