diff --git a/panels/dock/launcherItem/package/launcheritem.qml b/panels/dock/launcherItem/package/launcheritem.qml index 611e258b0..411892379 100644 --- a/panels/dock/launcherItem/package/launcheritem.qml +++ b/panels/dock/launcherItem/package/launcheritem.qml @@ -17,6 +17,30 @@ AppletItem { implicitWidth: useColumnLayout ? Panel.rootObject.dockSize : dockSize implicitHeight: useColumnLayout ? dockSize : Panel.rootObject.dockSize + onXChanged: updateLaunchpadPos() + onYChanged: updateLaunchpadPos() + Connections { + target: Panel.rootObject + function onDockCenterPartPosChanged() + { + updateLaunchpadPos() + } + } + + function updateLaunchpadPos() + { + var launchpad = DS.applet("org.deepin.ds.launchpad") + if (!launchpad) + return + + var lX = launcher.mapToGlobal(launcher.x + launcher.width / 2, 0).x + var lY = Panel.rootObject.y + launchpad.rootObject.windowedPos = Qt.point(lX, lY) + } + Component.onCompleted: { + updateLaunchpadPos() + } + D.ActionButton { anchors.centerIn: parent icon.name: Applet.iconName diff --git a/panels/dock/package/main.qml b/panels/dock/package/main.qml index e5c9fdcc3..b1124b2d8 100644 --- a/panels/dock/package/main.qml +++ b/panels/dock/package/main.qml @@ -22,6 +22,8 @@ Window { property int dockLeftSpaceForCenter: useColumnLayout ? (Screen.height - dockLeftPart.implicitHeight - dockRightPart.implicitHeight) : (Screen.width - dockLeftPart.implicitWidth - dockRightPart.implicitWidth) + // TODO + signal dockCenterPartPosChanged() property int dockCenterPartCount: dockCenterPartModel.count @@ -251,6 +253,9 @@ Window { id: dockCenterPart implicitWidth: centerLoader.implicitWidth implicitHeight: centerLoader.implicitHeight + onXChanged: dockCenterPartPosChanged() + onYChanged: dockCenterPartPosChanged() + OverflowContainer { id: centerLoader anchors.fill: parent