diff --git a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
index 12ad311853b260e26e5f58723be95a15c08fb501..c954ee32b8acb85da9c9c1bd9ca79eb479e26bc6 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
+++ b/src/plugins/qmldesigner/components/formeditor/formeditor.qrc
@@ -10,4 +10,7 @@
         <file>snapping.png</file>
 	<file>boundingrect.png</file>
     </qresource>
+    <qresource prefix="/icon/selection">
+        <file>selectonlycontentitems.png</file>
+    </qresource>
 </RCC>
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
index c1a941e46f7984cc9496a6cfa29f79495b353c93..3f533bf789b61c9e17c02db3bc670d87383bdea7 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.cpp
@@ -68,6 +68,8 @@ FormEditorView::FormEditorView(QObject *parent)
 {
     connect(widget()->zoomAction(), SIGNAL(zoomLevelChanged(double)), SLOT(updateGraphicsIndicators()));
     connect(widget()->showBoundingRectAction(), SIGNAL(toggled(bool)), scene(), SLOT(setShowBoundingRects(bool)));
+    connect(widget()->selectOnlyContentItemsAction(), SIGNAL(toggled(bool)), this, SLOT(setSelectOnlyContentItemsAction(bool)));
+
 }
 
 FormEditorScene* FormEditorView::scene() const
@@ -519,6 +521,12 @@ void FormEditorView::updateGraphicsIndicators()
     m_currentTool->formEditorItemsChanged(scene()->allFormEditorItems());
 }
 
+
+void FormEditorView::setSelectOnlyContentItemsAction(bool selectOnlyContentItems)
+{
+    m_selectionTool->setSelectOnlyContentItems(selectOnlyContentItems);
+}
+
 void FormEditorView::updateItem(const QmlObjectNode &qmlObjectNode)
 {
 
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorview.h b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
index 82b6f18a75643724e9295fc7285144539878a415..6f8f7d43172b3899380bc3c7177d3e45ced4f531 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorview.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorview.h
@@ -118,6 +118,7 @@ protected:
 protected slots:
     QList<ModelNode> adjustStatesForModelNodes(const QList<ModelNode> &nodeList) const;
     void updateGraphicsIndicators();
+    void setSelectOnlyContentItemsAction(bool selectOnlyContentItems);
 
 private: //functions
     void setupFormEditorItemTree(const QmlItemNode &qmlItemNode);
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
index 6c5eddde2f232d5121d2022b42aa2077987af0ee..02ebd6e5a733732b11aceca4e4ff01730e344e5e 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.cpp
@@ -121,7 +121,20 @@ FormEditorWidget::FormEditorWidget(FormEditorView *view)
     connect(m_zoomAction.data(), SIGNAL(zoomLevelChanged(double)), SLOT(setZoomLevel(double)));
     addAction(m_zoomAction.data());
 
-    QAction *separatorAction = new QAction(toolActionGroup());
+    QAction *separatorAction = new QAction(this);
+    separatorAction->setSeparator(true);
+    addAction(separatorAction);
+
+    m_selectOnlyContentItemsAction = layoutActionGroup->addAction("Select Only Items with Content (Press Key T)");
+    m_selectOnlyContentItemsAction->setShortcut(Qt::Key_T);
+    m_selectOnlyContentItemsAction->setShortcutContext(Qt::WidgetWithChildrenShortcut);
+    m_selectOnlyContentItemsAction->setCheckable(true);
+    m_selectOnlyContentItemsAction->setChecked(true);
+    m_selectOnlyContentItemsAction->setIcon(QPixmap(":/icon/selection/selectonlycontentitems.png"));
+
+    addAction(m_selectOnlyContentItemsAction.data());
+
+    separatorAction = new QAction(toolActionGroup());
     separatorAction->setSeparator(true);
     addAction(separatorAction);
 
@@ -192,6 +205,11 @@ QAction *FormEditorWidget::showBoundingRectAction() const
     return m_showBoundingRectAction.data();
 }
 
+QAction *FormEditorWidget::selectOnlyContentItemsAction() const
+{
+    return m_selectOnlyContentItemsAction.data();
+}
+
 void FormEditorWidget::setZoomLevel(double zoomLevel)
 {
     m_graphicsView->resetTransform();
diff --git a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
index 2f9089b8650366338f364381f5a54a63d7c9ed31..a3c0ec35f50dc7bf89d8a5e50b524b8796a9fa6e 100644
--- a/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
+++ b/src/plugins/qmldesigner/components/formeditor/formeditorwidget.h
@@ -54,6 +54,8 @@ public:
     QAction *anchorToolAction() const;
     QAction *transformToolAction() const;
     QAction *showBoundingRectAction() const;
+    QAction *selectOnlyContentItemsAction() const;
+
 
     void setScene(FormEditorScene *scene);
     ToolBox *toolBox() const;
@@ -85,6 +87,7 @@ private:
     QWeakPointer<NumberSeriesAction> m_snappingMarginAction;
     QWeakPointer<NumberSeriesAction> m_snappingSpacingAction;
     QWeakPointer<QAction> m_showBoundingRectAction;
+    QWeakPointer<QAction> m_selectOnlyContentItemsAction;
 };
 
 
diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
index 8dffee98d006ed33d0c9af5e37fd426ab9951e66..ab91ca57b662c5a86b8defc8a7dd32df1880e679 100644
--- a/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.cpp
@@ -49,8 +49,8 @@ SelectionTool::SelectionTool(FormEditorView *editorView)
     m_rubberbandSelectionManipulator(editorView->scene()->manipulatorLayerItem(), editorView),
     m_singleSelectionManipulator(editorView),
     m_selectionIndicator(editorView->scene()->manipulatorLayerItem()),
-    m_resizeIndicator(editorView->scene()->manipulatorLayerItem())
-
+    m_resizeIndicator(editorView->scene()->manipulatorLayerItem()),
+    m_selectOnlyContentItems(true)
 {
 //    view()->setCursor(Qt::CrossCursor);
 }
@@ -69,21 +69,21 @@ void SelectionTool::mousePressEvent(const QList<QGraphicsItem*> &itemList,
         m_singleSelectionManipulator.begin(event->scenePos());
 
         if (event->modifiers().testFlag(Qt::ControlModifier))
-            m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection);
+            m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection, m_selectOnlyContentItems);
         else if (event->modifiers().testFlag(Qt::ShiftModifier))
-            m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection);
+            m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection, m_selectOnlyContentItems);
         else
-            m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection);
+            m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection, m_selectOnlyContentItems);
     } else {
         if (event->modifiers().testFlag(Qt::AltModifier)) {
             m_singleSelectionManipulator.begin(event->scenePos());
 
             if (event->modifiers().testFlag(Qt::ControlModifier))
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection, m_selectOnlyContentItems);
             else if (event->modifiers().testFlag(Qt::ShiftModifier))
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection, m_selectOnlyContentItems);
             else
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection, m_selectOnlyContentItems);
 
             m_singleSelectionManipulator.end(event->scenePos());
             view()->changeToMoveTool(event->scenePos());
@@ -149,11 +149,11 @@ void SelectionTool::mouseReleaseEvent(const QList<QGraphicsItem*> &/*itemList*/,
             m_singleSelectionManipulator.begin(event->scenePos());
 
             if (event->modifiers().testFlag(Qt::ControlModifier))
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection, m_selectOnlyContentItems);
             else if (event->modifiers().testFlag(Qt::ShiftModifier))
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection, m_selectOnlyContentItems);
             else
-                m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection);
+                m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection, m_selectOnlyContentItems);
 
             m_singleSelectionManipulator.end(event->scenePos());
         } else {
@@ -226,6 +226,11 @@ void SelectionTool::pasteClipBoard()
     // QClipboard *clipboard = QApplication::clipboard();
 }
 
+void SelectionTool::setSelectOnlyContentItems(bool selectOnlyContentItems)
+{
+    m_selectOnlyContentItems = selectOnlyContentItems;
+}
+
 void SelectionTool::itemsAboutToRemoved(const QList<FormEditorItem*> &/*itemList*/)
 {
 
@@ -270,11 +275,11 @@ void SelectionTool::selectUnderPoint(QGraphicsSceneMouseEvent *event)
     m_singleSelectionManipulator.begin(event->scenePos());
 
     if (event->modifiers().testFlag(Qt::ControlModifier))
-        m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection);
+        m_singleSelectionManipulator.select(SingleSelectionManipulator::RemoveFromSelection, m_selectOnlyContentItems);
     else if (event->modifiers().testFlag(Qt::ShiftModifier))
-        m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection);
+        m_singleSelectionManipulator.select(SingleSelectionManipulator::AddToSelection, m_selectOnlyContentItems);
     else
-        m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection);
+        m_singleSelectionManipulator.select(SingleSelectionManipulator::InvertSelection, m_selectOnlyContentItems);
 
     m_singleSelectionManipulator.end(event->scenePos());
 }
diff --git a/src/plugins/qmldesigner/components/formeditor/selectiontool.h b/src/plugins/qmldesigner/components/formeditor/selectiontool.h
index 062eb20fbc9ae8489f45a912f268497d73332b16..6af700daec9a75024454e5c6e8687fe111711e00 100644
--- a/src/plugins/qmldesigner/components/formeditor/selectiontool.h
+++ b/src/plugins/qmldesigner/components/formeditor/selectiontool.h
@@ -81,12 +81,16 @@ public:
     void copySelectedNodeToClipBoard();
     void cutSelectedNodeToClipBoard();
     void pasteClipBoard();
+
+    void setSelectOnlyContentItems(bool selectOnlyContentItems);
+
 private:
     RubberBandSelectionManipulator m_rubberbandSelectionManipulator;
     SingleSelectionManipulator m_singleSelectionManipulator;
     SelectionIndicator m_selectionIndicator;
     ResizeIndicator m_resizeIndicator;
     QTime m_mousePressTimer;
+    bool m_selectOnlyContentItems;
 };
 
 }
diff --git a/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png b/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png
new file mode 100644
index 0000000000000000000000000000000000000000..1af42301e947ddf4f58bc337b3bcd8f5ecbc9343
Binary files /dev/null and b/src/plugins/qmldesigner/components/formeditor/selectonlycontentitems.png differ
diff --git a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
index 43625eb9550420e1de57ce83bb0a635c1eca1d49..c7765558d25386b3a5e0c966b74a75b02b56ef68 100644
--- a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
+++ b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.cpp
@@ -69,7 +69,7 @@ void SingleSelectionManipulator::end(const QPointF &/*updatePoint*/)
     m_isActive = false;
 }
 
-void SingleSelectionManipulator::select(SelectionType selectionType)
+void SingleSelectionManipulator::select(SelectionType selectionType, bool selectOnlyContentItems)
 {
     QList<QGraphicsItem*> itemList = m_editorView->scene()->items(m_beginPoint);
 
@@ -81,7 +81,7 @@ void SingleSelectionManipulator::select(SelectionType selectionType)
 
         if (formEditorItem
            && !formEditorItem->qmlItemNode().isRootNode()
-           && (formEditorItem->qmlItemNode().hasShowContent()))
+           && (formEditorItem->qmlItemNode().hasShowContent() || !selectOnlyContentItems))
         {
             selectedNode = formEditorItem->qmlItemNode();
             break;
diff --git a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.h b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.h
index a97abaa14532a08fdd5eb10ab1f45fbcac15b204..af541305c6d2eb0b90aa9245e7b916b93580284f 100644
--- a/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.h
+++ b/src/plugins/qmldesigner/components/formeditor/singleselectionmanipulator.h
@@ -53,7 +53,7 @@ public:
     void update(const QPointF& updatePoint);
     void end(const QPointF& updatePoint);
 
-    void select(SelectionType selectionType);
+    void select(SelectionType selectionType, bool selectOnlyContentItems);
 
     void clear();