diff options
author | David Schulz <david.schulz@qt.io> | 2019-01-24 06:39:20 +0100 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2019-01-25 06:13:11 +0000 |
commit | 7b7a2ad63083717ce92cfc6d2d871034d6dc43c3 (patch) | |
tree | f974dd852987a2a9e489f424b84b167331729391 /src/plugins/qmljseditor | |
parent | a420374976a691fee6483c9419e78250a3a30b28 (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.cpp | 33 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljseditor.h | 1 | ||||
-rw-r--r-- | src/plugins/qmljseditor/qmljseditorconstants.h | 2 |
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 |