diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
index 6fd3e3a075cdf0710daba422862410cbe513a07e..d839ea79363e7e2df48412fd0a62d179e746afdd 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.cpp
@@ -85,7 +85,7 @@ PropertyEditor::NodeType::NodeType(PropertyEditor *propertyEditor) :
 {
     Q_ASSERT(QFileInfo(":/images/button_normal.png").exists());
 
-    m_view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
+    //m_view->setResizeMode(QDeclarativeView::SizeRootObjectToView);
     QDeclarativeContext *ctxt = m_view->rootContext();
     m_dummyPropertyEditorValue->setValue("#000000");
     ctxt->setContextProperty("dummyBackendValue", m_dummyPropertyEditorValue.data());
@@ -257,7 +257,6 @@ PropertyEditor::PropertyEditor(QWidget *parent) :
         m_updateShortcut(0),
         m_timerId(0),
         m_stackedWidget(new StackedWidget(parent)),
-        m_collapseButton(new CollapseButton(m_stackedWidget)),
         m_currentType(0),
         m_locked(false)
 {
@@ -269,11 +268,7 @@ PropertyEditor::PropertyEditor(QWidget *parent) :
     QString styleSheet = QLatin1String(file.readAll());
     m_stackedWidget->setStyleSheet(styleSheet);
     m_stackedWidget->setMinimumWidth(300);
-    m_collapseButton->raise();
-    m_collapseButton->show();
-    connect(m_collapseButton, SIGNAL(expand()), this, SLOT(expand()));
-    connect(m_collapseButton, SIGNAL(collapse()), this, SLOT(collapse()));
-    connect(m_stackedWidget, SIGNAL(resized()), this, SLOT(updateCollapseButton()));
+    connect(m_stackedWidget, SIGNAL(resized()), this, SLOT(updateSize()));
 
     m_stackedWidget->insertWidget(0, new QWidget(m_stackedWidget));
 
@@ -480,85 +475,13 @@ void PropertyEditor::changeExpression(const QString &name)
     }
 }
 
-
-void PropertyEditor::expand()
-{
-    m_stackedWidget->setMinimumWidth(300);
-    m_stackedWidget->setMaximumWidth(1000);
-    m_stackedWidget->parentWidget()->layout()->update();
-
-    QWidget * parentWidget = m_stackedWidget->parentWidget();
-    QWidget *childWidget = m_stackedWidget;
-
-    while (parentWidget) {
-        if (Core::SideBar *sideBar  = qobject_cast<Core::SideBar*>(parentWidget)) {
-            childWidget->setMaximumWidth(2000);
-            foreach (QObject* child, sideBar->children()) {
-                if (QWidget* otherWidget = qobject_cast<QWidget*>(child))
-                    if (otherWidget != childWidget && !qobject_cast<QComboBox*>(otherWidget))
-                    otherWidget->show();
-            }
-            QList<QComboBox*> list = sideBar->findChildren<QComboBox*>();
-            foreach (QComboBox* box, list) {
-                if (qobject_cast<QToolBar*>(box->parentWidget()))
-                    box->parentWidget()->show();
-            }
-            sideBar->refresh();
-            sideBar->update();
-            break;
-        }
-        childWidget = parentWidget;
-        parentWidget = parentWidget->parentWidget();
-    }
-    m_collapseButton->move(0, m_stackedWidget->height() - collapseButtonOffset);
-    resetView();
-}
-
-void PropertyEditor::collapse()
+void PropertyEditor::updateSize()
 {
-    m_stackedWidget->setCurrentIndex(0);
-    m_stackedWidget->setMinimumWidth(0);
-
-    QWidget * parentWidget = m_stackedWidget->parentWidget();
-    QWidget *childWidget = m_stackedWidget;
-
-    while (parentWidget) {
-        if (Core::SideBar *sideBar  = qobject_cast<Core::SideBar*>(parentWidget)) {
-            childWidget->setMaximumWidth(22);
-            foreach (QObject* child, sideBar->children()) {
-                if (QWidget* otherWidget = qobject_cast<QWidget*>(child))
-                    if (otherWidget != childWidget && !qobject_cast<QComboBox*>(otherWidget))
-                    otherWidget->hide();
-            }
-
-            QSplitter* parentSplitter = qobject_cast<QSplitter*>(sideBar->parentWidget());
-            QList<int> s = parentSplitter->sizes();
-            s.removeLast();
-            s.append(25);
-            parentSplitter->setSizes(s);
-            parentSplitter->refresh();
-            parentSplitter->update();
-            QApplication::processEvents();
-            QList<QComboBox*> list = sideBar->findChildren<QComboBox*>();
-            foreach (QComboBox* box, list) {
-                if (qobject_cast<QToolBar*>(box->parentWidget())) {
-                    box->parentWidget()->hide();
-                }
-            }
-            break;
-        }
-        childWidget = parentWidget;
-        parentWidget = parentWidget->parentWidget();
-    }
-    m_collapseButton->raise();
-    m_stackedWidget->parentWidget()->layout()->activate();
-    m_collapseButton->move(0, m_stackedWidget->height() - collapseButtonOffset + 20);
-}
-
-void PropertyEditor::updateCollapseButton()
-{
-    m_collapseButton->move(0, m_stackedWidget->height() - collapseButtonOffset + 20);
-    m_collapseButton->update();
+    if (!m_currentType)
+        return;
+    QWidget* frame = m_currentType->m_view->findChild<QWidget*>("propertyEditorFrame");
+    if (frame)
+        frame->resize(m_stackedWidget->size());
 }
 
 void PropertyEditor::otherPropertyChanged(const QmlObjectNode &fxObjectNode, const QString &propertyName)
@@ -669,9 +592,6 @@ void PropertyEditor::resetView()
     if (model() == 0)
         return;
 
-    if (m_collapseButton->isCollapsed())
-        return;
-
     m_locked = true;
 
     if (debug)
@@ -737,8 +657,6 @@ void PropertyEditor::resetView()
 
     m_stackedWidget->setCurrentWidget(type->m_view);
 
-    m_collapseButton->raise();
-    m_collapseButton->move(0, m_stackedWidget->height() - collapseButtonOffset);
 
     QDeclarativeContext *ctxt = type->m_view->rootContext();
     ctxt->setContextProperty("finishedNotify", QVariant(true));
@@ -752,6 +670,8 @@ void PropertyEditor::resetView()
 
     if (m_timerId)
         m_timerId = 0;
+
+    updateSize();
 }
 
 void PropertyEditor::selectedNodesChanged(const QList<ModelNode> &selectedNodeList,
@@ -781,10 +701,10 @@ void PropertyEditor::modelAttached(Model *model)
 
     m_locked = true;
 
-    setupPane("Qt/Rectangle");
+    /*setupPane("Qt/Rectangle");
     setupPane("Qt/Text");
     setupPane("Qt/TextInput");
-    setupPane("Qt/TextEdit");
+    setupPane("Qt/TextEdit");*/
     resetView();
 
     m_locked = false;
@@ -971,45 +891,6 @@ QString PropertyEditor::locateQmlFile(const QString &relativePath) const
     return QString();
 }
 
-CollapseButton::CollapseButton(QWidget *parent) : QWidget(parent), m_collapsed(false), m_hovered(false),
-                                  m_pixmap_normal(":/qmldesigner/images/collapse-button-normal.png"),
-                                  m_pixmap_hover(":/qmldesigner/images/collapse-button-hover.png"),
-                                  m_pixmap_normal_mirrored(":/qmldesigner/images/collapse-button-normal-mirrored.png"),
-                                  m_pixmap_hover_mirrored(":/qmldesigner/images/collapse-button-hover-mirrored.png")
-{
-    setFixedWidth(20);
-    setFixedHeight(81);
-    setMouseTracking(true);
-    setAttribute(Qt::WA_TranslucentBackground, true);
-    QGraphicsOpacityEffect* graphicsOpacityEffect = new QGraphicsOpacityEffect(this);
-    setGraphicsEffect(graphicsOpacityEffect);
-    graphicsOpacityEffect->setOpacity(0.4);
-    setToolTip(QLatin1String("Properties"));
-}
-
-
-void CollapseButton::setOpacity(qreal opacity)
-{
-    qobject_cast<QGraphicsOpacityEffect*>(graphicsEffect())->setOpacity(opacity);
-}
-
-void CollapseButton::paintEvent(QPaintEvent *event)
-{
-    QWidget::paintEvent(event);
-    QPainter p(this);
-
-    if (m_hovered) {
-        if (m_collapsed)
-            p.drawPixmap(0,0, m_pixmap_hover_mirrored);
-        else
-            p.drawPixmap(0,0, m_pixmap_hover);
-    } else {
-        if (m_collapsed)
-            p.drawPixmap(0,0, m_pixmap_normal_mirrored);
-        else
-            p.drawPixmap(0,0, m_pixmap_normal);
-    }
-}
 
 } //QmlDesigner
 
diff --git a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
index a0760f0acd4726a760a8cf433fb1f088fff1e2a1..211d790e435197409c5f2ea556e857a2d8ba75f9 100644
--- a/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
+++ b/src/plugins/qmldesigner/components/propertyeditor/propertyeditor.h
@@ -37,6 +37,8 @@
 #include <QStackedWidget>
 
 #include "qmlanchorbindingproxy.h"
+#include "designerpropertymap.h"
+#include "propertyeditorvalue.h"
 
 QT_BEGIN_NAMESPACE
 class QShortcut;
@@ -66,7 +68,7 @@ class PropertyEditor: public QmlModelView
 
         QDeclarativeView *m_view;
         Internal::QmlAnchorBindingProxy m_backendAnchorBinding;
-        QDeclarativePropertyMap m_backendValuesPropertyMap;
+        DesignerPropertyMap<PropertyEditorValue> m_backendValuesPropertyMap;
         QScopedPointer<PropertyEditorTransaction> m_propertyEditorTransaction;
         QScopedPointer<PropertyEditorValue> m_dummyPropertyEditorValue;
     };
@@ -111,9 +113,7 @@ private slots:
     void reloadQml();
     void changeValue(const QString &name);
     void changeExpression(const QString &name);
-    void expand();
-    void collapse();
-    void updateCollapseButton();
+    void updateSize();
 
 private: //functions
     QString qmlFileName(const NodeMetaInfo &nodeInfo) const;
@@ -132,7 +132,6 @@ private: //variables
     QShortcut *m_updateShortcut;
     int m_timerId;
     StackedWidget* m_stackedWidget;
-    CollapseButton *m_collapseButton;
     QString m_qmlDir;
     QHash<QString, NodeType *> m_typeHash;
     NodeType *m_currentType;
@@ -156,61 +155,6 @@ protected:
         emit resized();
     }
 };
-
-class CollapseButton : public QWidget
-{
-Q_OBJECT
-
-public:
-
-    CollapseButton(QWidget *parent = 0);
-    bool isCollapsed() const
-    { return m_collapsed; }
-
-signals:
-    void expand();
-    void collapse();
-
-protected:
-    void paintEvent(QPaintEvent *event);
-
-    void mouseReleaseEvent(QMouseEvent *)
-    {
-        if (m_collapsed) {
-            m_collapsed = false;
-            emit expand();
-        } else {
-            m_collapsed = true;
-            emit collapse();
-        }
-        update();
-    }
-
-    void enterEvent ( QEvent *)
-    {
-         m_hovered = true;
-         setOpacity(0.9);
-         update();
-    }
-
-    void leaveEvent ( QEvent *)
-    {
-        m_hovered = false;
-        setOpacity(0.4);
-        update();
-    }
-
-    void setOpacity(qreal opacity);
-
-private:
-    bool m_collapsed;
-    bool m_hovered;
-    QPixmap m_pixmap_normal;
-    QPixmap m_pixmap_hover;
-    QPixmap m_pixmap_normal_mirrored;
-    QPixmap m_pixmap_hover_mirrored;
-};
-
 }
 
 #endif // QmlPropertyView_h