diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
index 6f0d2724e66d10aa2b97cc6b4890835f7b42b35e..f6e075020e5e27463ec1e19d7a0c6b528fdab68a 100644
--- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
+++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.cpp
@@ -72,12 +72,36 @@ QList<ServerNodeInstance> GraphicsObjectNodeInstance::childItems() const
         QGraphicsObject *childObject = item->toGraphicsObject();
         if (childObject && nodeInstanceServer()->hasInstanceForObject(childObject)) {
             instanceList.append(nodeInstanceServer()->instanceForObject(childObject));
+        } else { //there might be an item in between the parent instance
+                 //and the child instance.
+                 //Popular example is flickable which has a viewport item between
+                 //the flickable item and the flickable children
+            instanceList.append(childItemsForChild(item)); //In such a case we go deeper inside the item and
+                                                           //search for child items with instances.
         }
     }
 
     return instanceList;
 }
 
+QList<ServerNodeInstance> GraphicsObjectNodeInstance::childItemsForChild(QGraphicsItem *childItem) const
+{
+    QList<ServerNodeInstance> instanceList;
+    if (childItem) {
+
+        foreach(QGraphicsItem *item, childItem->childItems())
+        {
+            QGraphicsObject *childObject = item->toGraphicsObject();
+            if (childObject && nodeInstanceServer()->hasInstanceForObject(childObject)) {
+                instanceList.append(nodeInstanceServer()->instanceForObject(childObject));
+            } else {
+                instanceList.append(childItemsForChild(item));
+            }
+        }
+    }
+    return instanceList;
+}
+
 void GraphicsObjectNodeInstance::setHasContent(bool hasContent)
 {
     m_hasContent = hasContent;
diff --git a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h
index 333d0ceaabace9da279a2709b4ae91c20d95aef2..e6fa5060c918c336291beb01244e5e4f14fb0d9d 100644
--- a/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h
+++ b/src/plugins/qmldesigner/designercore/instances/graphicsobjectnodeinstance.h
@@ -76,6 +76,7 @@ public:
     bool hasContent() const;
 
     QList<ServerNodeInstance> childItems() const;
+    QList<ServerNodeInstance> childItemsForChild(QGraphicsItem *childItem) const;
 
     void paintUpdate();