From c9638bf5ea1787999a6574c98858fb737f8fdf64 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Mon, 14 Dec 2020 17:43:03 +0100 Subject: [PATCH] QmlDesigner: Also react to ModelManagerInterface::projectInfoUpdated If a new file is added to the project we have to react to projectInfoUpdated. Since the signal cannot be queued we use an indirection. Task-number: QDS-3113 Change-Id: I13e6a9623e3c51384435ee9dfd10576a77df3e35 Reviewed-by: Tim Jenssen --- .../qmldesigner/designercore/include/rewriterview.h | 4 ++++ .../qmldesigner/designercore/model/rewriterview.cpp | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/plugins/qmldesigner/designercore/include/rewriterview.h b/src/plugins/qmldesigner/designercore/include/rewriterview.h index f71b1a42510..c867b9a67d8 100644 --- a/src/plugins/qmldesigner/designercore/include/rewriterview.h +++ b/src/plugins/qmldesigner/designercore/include/rewriterview.h @@ -174,6 +174,9 @@ public: ModelNode getNodeForCanonicalIndex(int index); +signals: + void modelInterfaceProjectUpdated(); + protected: // functions void importAdded(const Import &import); void importRemoved(const Import &import); @@ -191,6 +194,7 @@ private: //variables ModelNode nodeAtTextCursorPositionHelper(const ModelNode &root, int cursorPosition) const; void setupCanonicalHashes() const; void handleLibraryInfoUpdate(); + void handleProjectUpdate(); TextModifier *m_textModifier = nullptr; int transactionLevel = 0; diff --git a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp index 44726c23e00..85e41d3b7e5 100644 --- a/src/plugins/qmldesigner/designercore/model/rewriterview.cpp +++ b/src/plugins/qmldesigner/designercore/model/rewriterview.cpp @@ -91,6 +91,10 @@ RewriterView::RewriterView(DifferenceHandling differenceHandling, QObject *paren QmlJS::ModelManagerInterface *modelManager = QmlJS::ModelManagerInterface::instance(); connect(modelManager, &QmlJS::ModelManagerInterface::libraryInfoUpdated, this, &RewriterView::handleLibraryInfoUpdate, Qt::QueuedConnection); + connect(modelManager, &QmlJS::ModelManagerInterface::projectInfoUpdated, + this, &RewriterView::handleProjectUpdate, Qt::DirectConnection); + connect(this, &RewriterView::modelInterfaceProjectUpdated, + this, &RewriterView::handleLibraryInfoUpdate, Qt::QueuedConnection); } RewriterView::~RewriterView() = default; @@ -832,6 +836,11 @@ void RewriterView::handleLibraryInfoUpdate() m_amendTimer.start(); } +void RewriterView::handleProjectUpdate() +{ + emit modelInterfaceProjectUpdated(); +} + ModelNode RewriterView::nodeAtTextCursorPosition(int cursorPosition) const { return nodeAtTextCursorPositionHelper(rootModelNode(), cursorPosition);