aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmljseditor
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2019-01-24 06:39:20 +0100
committerDavid Schulz <david.schulz@qt.io>2019-01-25 06:13:11 +0000
commit7b7a2ad63083717ce92cfc6d2d871034d6dc43c3 (patch)
treef974dd852987a2a9e489f424b84b167331729391 /src/plugins/qmljseditor
parenta420374976a691fee6483c9419e78250a3a30b28 (diff)
TextEditor: Use callback in refactoring markers
Allows to trigger actions without adding specific handling into the editor. Change-Id: Ia63d65d3feca37bcefca1b6322ade039027a92d8 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins/qmljseditor')
-rw-r--r--src/plugins/qmljseditor/qmljseditor.cpp33
-rw-r--r--src/plugins/qmljseditor/qmljseditor.h1
-rw-r--r--src/plugins/qmljseditor/qmljseditorconstants.h2
3 files changed, 12 insertions, 24 deletions
diff --git a/src/plugins/qmljseditor/qmljseditor.cpp b/src/plugins/qmljseditor/qmljseditor.cpp
index ee3f30b2fe3..458cb55b6ef 100644
--- a/src/plugins/qmljseditor/qmljseditor.cpp
+++ b/src/plugins/qmljseditor/qmljseditor.cpp
@@ -269,23 +269,10 @@ void QmlJSEditorWidget::updateOutlineIndexNow()
} // namespace Internal
} // namespace QmlJSEditor
-class QtQuickToolbarMarker {};
-Q_DECLARE_METATYPE(QtQuickToolbarMarker)
namespace QmlJSEditor {
namespace Internal {
-template <class T>
-static QList<RefactorMarker> removeMarkersOfType(const QList<RefactorMarker> &markers)
-{
- QList<RefactorMarker> result;
- foreach (const RefactorMarker &marker, markers) {
- if (!marker.data.canConvert<T>())
- result += marker;
- }
- return result;
-}
-
void QmlJSEditorWidget::updateContextPane()
{
const SemanticInfo info = m_qmlJsEditorDocument->semanticInfo();
@@ -299,7 +286,8 @@ void QmlJSEditorWidget::updateContextPane()
if (m_contextPane->isAvailable(this, info.document, newNode) &&
!m_contextPane->widget()->isVisible()) {
- QList<RefactorMarker> markers = removeMarkersOfType<QtQuickToolbarMarker>(refactorMarkers());
+ QList<RefactorMarker> markers = RefactorMarker::filterOutType(
+ refactorMarkers(), Constants::QT_QUICK_TOOLBAR_MARKER_ID);
if (UiObjectMember *m = newNode->uiObjectMemberCast()) {
const int start = qualifiedTypeNameId(m)->identifierToken.begin();
for (UiQualifiedId *q = qualifiedTypeNameId(m); q; q = q->next) {
@@ -311,7 +299,10 @@ void QmlJSEditorWidget::updateContextPane()
tc.setPosition(end);
marker.cursor = tc;
marker.tooltip = tr("Show Qt Quick ToolBar");
- marker.data = QVariant::fromValue(QtQuickToolbarMarker());
+ marker.type = Constants::QT_QUICK_TOOLBAR_MARKER_ID;
+ marker.callback = [this](TextEditorWidget *) {
+ showContextPane();
+ };
markers.append(marker);
}
}
@@ -319,7 +310,8 @@ void QmlJSEditorWidget::updateContextPane()
}
setRefactorMarkers(markers);
} else if (oldNode != newNode) {
- setRefactorMarkers(removeMarkersOfType<QtQuickToolbarMarker>(refactorMarkers()));
+ setRefactorMarkers(RefactorMarker::filterOutType(
+ refactorMarkers(), Constants::QT_QUICK_TOOLBAR_MARKER_ID));
}
m_oldCursorPosition = position();
@@ -820,7 +812,8 @@ void QmlJSEditorWidget::showContextPane()
&scopeChain,
newNode, false, true);
m_oldCursorPosition = position();
- setRefactorMarkers(removeMarkersOfType<QtQuickToolbarMarker>(refactorMarkers()));
+ setRefactorMarkers(RefactorMarker::filterOutType(
+ refactorMarkers(), Constants::QT_QUICK_TOOLBAR_MARKER_ID));
}
}
@@ -939,12 +932,6 @@ void QmlJSEditorWidget::semanticInfoUpdated(const SemanticInfo &semanticInfo)
updateUses();
}
-void QmlJSEditorWidget::onRefactorMarkerClicked(const RefactorMarker &marker)
-{
- if (marker.data.canConvert<QtQuickToolbarMarker>())
- showContextPane();
-}
-
QModelIndex QmlJSEditorWidget::indexForPosition(unsigned cursorPosition, const QModelIndex &rootIndex) const
{
QModelIndex lastIndex = rootIndex;
diff --git a/src/plugins/qmljseditor/qmljseditor.h b/src/plugins/qmljseditor/qmljseditor.h
index 251ab2a8177..7b6b6c096b2 100644
--- a/src/plugins/qmljseditor/qmljseditor.h
+++ b/src/plugins/qmljseditor/qmljseditor.h
@@ -108,7 +108,6 @@ protected:
bool resolveTarget = true,
bool inNextSplit = false) override;
QString foldReplacementText(const QTextBlock &block) const override;
- void onRefactorMarkerClicked(const TextEditor::RefactorMarker &marker) override;
private:
void setSelectedElements();
diff --git a/src/plugins/qmljseditor/qmljseditorconstants.h b/src/plugins/qmljseditor/qmljseditorconstants.h
index ac13c9add5a..61624bf1ff2 100644
--- a/src/plugins/qmljseditor/qmljseditorconstants.h
+++ b/src/plugins/qmljseditor/qmljseditorconstants.h
@@ -60,5 +60,7 @@ const char QML_UI_FILE_WARNING[] = "QmlJSEditor.QmlUiFileWarning";
const char AUTO_FORMAT_ON_SAVE[] = "QmlJSEditor.AutoFormatOnSave";
const char AUTO_FORMAT_ONLY_CURRENT_PROJECT[] = "QmlJSEditor.AutoFormatOnlyCurrentProject";
+const char QT_QUICK_TOOLBAR_MARKER_ID[] = "QtQuickToolbarMarkerId";
+
} // namespace Constants
} // namespace QmlJSEditor