OSDN Git Service

QML Observer: Highlight selected items in Qt Creator on click
authorLasse Holmstedt <lasse.holmstedt@nokia.com>
Fri, 30 Jul 2010 15:19:28 +0000 (17:19 +0200)
committerLasse Holmstedt <lasse.holmstedt@nokia.com>
Fri, 30 Jul 2010 15:43:58 +0000 (17:43 +0200)
src/libs/qmljsdebugger/editor/subcomponenteditortool.cpp
src/libs/qmljsdebugger/editor/subcomponenteditortool.h
src/libs/qmljsdebugger/qdeclarativedesignview.cpp

index 67851cc..2a3069b 100644 (file)
@@ -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;
 }
 
 
index 63af50f..fdd4aed 100644 (file)
@@ -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();
index 9284ca3..29f6a1a 100644 (file)
@@ -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()