diff --git a/containment/package/contents/ui/editmode/ConfigOverlay.qml b/containment/package/contents/ui/editmode/ConfigOverlay.qml index faa01d1a9..172cdf044 100644 --- a/containment/package/contents/ui/editmode/ConfigOverlay.qml +++ b/containment/package/contents/ui/editmode/ConfigOverlay.qml @@ -155,9 +155,9 @@ MouseArea { if ((plasmoid.formFactor === PlasmaCore.Types.Vertical && posInItem.y < item.height/2) || (plasmoid.formFactor !== PlasmaCore.Types.Vertical && posInItem.x < item.width/2)) { - root.layoutManagerInsertBefore(item, placeHolder); + fastLayoutManager.insertBefore(item, placeHolder); } else { - root.layoutManagerInsertAfter(item, placeHolder); + fastLayoutManager.insertAfter(item, placeHolder); } } @@ -226,7 +226,7 @@ MouseArea { placeHolder.height = currentApplet.height; handle.width = currentApplet.width; handle.height = currentApplet.height; - root.layoutManagerInsertBefore(currentApplet, placeHolder); + fastLayoutManager.insertBefore(currentApplet, placeHolder); currentApplet.parent = root; currentApplet.x = root.isHorizontal ? lastX - currentApplet.width/2 : lastX-appletX; currentApplet.y = root.isVertical ? lastY - currentApplet.height/2 : lastY-appletY; @@ -253,7 +253,7 @@ MouseArea { configurationArea.isResizingLeft = false; configurationArea.isResizingRight = false; - root.layoutManagerInsertBefore(placeHolder, currentApplet); + fastLayoutManager.insertBefore(placeHolder, currentApplet); placeHolder.parent = configurationArea; currentApplet.z = 1; diff --git a/containment/plugin/layoutmanager.cpp b/containment/plugin/layoutmanager.cpp index 0b1c1004f..93d04855f 100644 --- a/containment/plugin/layoutmanager.cpp +++ b/containment/plugin/layoutmanager.cpp @@ -130,6 +130,27 @@ void LayoutManager::setMetrics(QQuickItem *metrics) //! Actions +void LayoutManager::insertBefore(QQuickItem *hoveredItem, QQuickItem *item) +{ + if (!hoveredItem || !item) { + return; + } + + item->setParentItem(hoveredItem->parentItem()); + item->stackBefore(hoveredItem); +} + +void LayoutManager::insertAfter(QQuickItem *hoveredItem, QQuickItem *item) +{ + if (!hoveredItem || !item) { + return; + } + + item->setParentItem(hoveredItem->parentItem()); + item->stackAfter(hoveredItem); +} + + bool LayoutManager::insertAtLayoutCoordinates(QQuickItem *layout, QQuickItem *item, int x, int y) { if (!layout || !item || !m_plasmoid) { diff --git a/containment/plugin/layoutmanager.h b/containment/plugin/layoutmanager.h index 903f2a927..928ca754b 100644 --- a/containment/plugin/layoutmanager.h +++ b/containment/plugin/layoutmanager.h @@ -64,6 +64,8 @@ public: public slots: Q_INVOKABLE void moveAppletsInJustifyAlignment(); + Q_INVOKABLE void insertBefore(QQuickItem *hoveredItem, QQuickItem *item); + Q_INVOKABLE void insertAfter(QQuickItem *hoveredItem, QQuickItem *item); Q_INVOKABLE void insertAtCoordinates(QQuickItem *item, const int &x, const int &y); signals: