diff --git a/src/libs/qmljsdebugger/editor/subcomponenteditortool.cpp b/src/libs/qmljsdebugger/editor/subcomponenteditortool.cpp index 67851cc14d2defa0f423c955d212ff6b99d33d83..2a3069b45953a77e6fc24f3af681ebf35c2901ea 100644 --- a/src/libs/qmljsdebugger/editor/subcomponenteditortool.cpp +++ b/src/libs/qmljsdebugger/editor/subcomponenteditortool.cpp @@ -282,18 +282,24 @@ void SubcomponentEditorTool::contextDestroyed(QObject *contextToDestroy) m_mask->setVisible(false); } -void SubcomponentEditorTool::setContext(int contextIndex) +QGraphicsObject *SubcomponentEditorTool::setContext(int contextIndex) { Q_ASSERT(contextIndex >= 0); // sometimes we have to delete the context while user was still clicking around, // so just bail out. if (contextIndex >= m_currentContext.size() -1) - return; + return 0; while (m_currentContext.size() - 1 > contextIndex) { popContext(); } + return m_currentContext.top(); +} + +int SubcomponentEditorTool::contextIndex() const +{ + return m_currentContext.size() - 1; } diff --git a/src/libs/qmljsdebugger/editor/subcomponenteditortool.h b/src/libs/qmljsdebugger/editor/subcomponenteditortool.h index 63af50ffb0935d29e4429de711ed8ffb44bf207a..fdd4aedfae2af53a9be183c9ddd94f47872a3f73 100644 --- a/src/libs/qmljsdebugger/editor/subcomponenteditortool.h +++ b/src/libs/qmljsdebugger/editor/subcomponenteditortool.h @@ -46,9 +46,8 @@ public: void pushContext(QGraphicsObject *contextItem); QGraphicsObject *popContext(); QGraphicsObject *currentRootItem() const; - -public slots: - void setContext(int contextIndex); + QGraphicsObject *setContext(int contextIndex); + int contextIndex() const; signals: void exitContextRequested(); diff --git a/src/libs/qmljsdebugger/qdeclarativedesignview.cpp b/src/libs/qmljsdebugger/qdeclarativedesignview.cpp index 9284ca396d3b896fbb478af8ef498d37c0615441..29f6a1aaec41c23e39f26f4cdd99c232fc2d1b89 100644 --- a/src/libs/qmljsdebugger/qdeclarativedesignview.cpp +++ b/src/libs/qmljsdebugger/qdeclarativedesignview.cpp @@ -114,7 +114,11 @@ QDeclarativeDesignView::~QDeclarativeDesignView() void QDeclarativeDesignView::setInspectorContext(int contextIndex) { - data->subcomponentEditorTool->setContext(contextIndex); + if (data->subcomponentEditorTool->contextIndex() != contextIndex) { + QGraphicsObject *object = data->subcomponentEditorTool->setContext(contextIndex); + if (object) + qmlDesignDebugServer()->setCurrentObjects(QList<QObject*>() << object); + } } void QDeclarativeDesignViewPrivate::_q_reloadView() @@ -184,7 +188,7 @@ void QDeclarativeDesignView::mouseReleaseEvent(QMouseEvent *event) data->cursorPos = event->pos(); data->currentTool->mouseReleaseEvent(event); - //qmlDesignDebugServer()->setCurrentObjects(AbstractFormEditorTool::toObjectList(selectedItems())); + qmlDesignDebugServer()->setCurrentObjects(AbstractFormEditorTool::toObjectList(selectedItems())); } void QDeclarativeDesignView::keyPressEvent(QKeyEvent *event) @@ -357,6 +361,7 @@ void QDeclarativeDesignViewPrivate::setSelectedItems(QList<QGraphicsItem *> item } } currentTool->updateSelectedItems(); + qmlDesignDebugServer()->setCurrentObjects(AbstractFormEditorTool::toObjectList(items)); } QList<QGraphicsItem *> QDeclarativeDesignViewPrivate::selectedItems()