From dff5809c59c0b708044be8ee6a695fb2fd182ef7 Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Wed, 24 Mar 2021 18:01:58 +0100 Subject: [PATCH] better management of dragging to new pages --- .../package/contents/ui/launcher/AppDrawer.qml | 2 ++ .../package/contents/ui/launcher/FlickablePages.qml | 11 +++++++---- containments/homescreen/package/contents/ui/main.qml | 6 ++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/containments/homescreen/package/contents/ui/launcher/AppDrawer.qml b/containments/homescreen/package/contents/ui/launcher/AppDrawer.qml index 9be734fc..07cba518 100644 --- a/containments/homescreen/package/contents/ui/launcher/AppDrawer.qml +++ b/containments/homescreen/package/contents/ui/launcher/AppDrawer.qml @@ -14,6 +14,7 @@ import org.kde.plasma.components 3.0 as PC3 import org.kde.kirigami 2.10 as Kirigami import org.kde.plasma.private.nanoshell 2.0 as NanoShell +import org.kde.plasma.private.mobileshell 1.0 as MobileShell import org.kde.phone.homescreen 1.0 @@ -194,6 +195,7 @@ Item { } oldContentY = contentY; root.offset = contentY + view.originY + view.height*2 + MobileShell.HomeScreenControls.homeScreenPosition = contentY } onMovementEnded: root.snapDrawerStatus() onFlickEnded: movementEnded() diff --git a/containments/homescreen/package/contents/ui/launcher/FlickablePages.qml b/containments/homescreen/package/contents/ui/launcher/FlickablePages.qml index 6b7db30e..39999cd2 100644 --- a/containments/homescreen/package/contents/ui/launcher/FlickablePages.qml +++ b/containments/homescreen/package/contents/ui/launcher/FlickablePages.qml @@ -27,6 +27,9 @@ Flickable { property AppDrawer appDrawer + readonly property int totalPages: Math.ceil(contentWidth / width) + property int currentIndex: 0 + opacity: 1 - appDrawer.openFactor transform: Translate { y: -mainFlickable.height/10 * appDrawer.openFactor @@ -34,7 +37,6 @@ Flickable { scale: (3 - appDrawer.openFactor) /3 //bottomMargin: favoriteStrip.height - contentWidth: appletsLayout.width contentHeight: height //interactive: !plasmoid.editMode && !launcherDragManager.active interactive: false @@ -45,10 +47,11 @@ Flickable { onFlickStarted: cancelEditModeForItemsRequested() onFlickEnded: cancelEditModeForItemsRequested() - onContentYChanged: MobileShell.HomeScreenControls.homeScreenPosition = contentY + onCurrentIndexChanged: contentX = width * currentIndex; + onContentXChanged: mainFlickable.currentIndex = Math.floor(contentX / width) - //Autoscroll related functions + //Autoscroll related functions function scrollLeft() { if (mainFlickable.atXBeginning) { return; @@ -124,7 +127,7 @@ Flickable { PlasmaCore.ColorScope.inherit: false PlasmaCore.ColorScope.colorGroup: PlasmaCore.Theme.ComplementaryColorGroup parent: mainFlickable - count: Math.ceil(dropArea.width / mainFlickable.width) + count: mainFlickable.totalPages visible: count > 1 currentIndex: Math.round(mainFlickable.contentX / mainFlickable.width) } diff --git a/containments/homescreen/package/contents/ui/main.qml b/containments/homescreen/package/contents/ui/main.qml index aa1987d9..aad6e80b 100644 --- a/containments/homescreen/package/contents/ui/main.qml +++ b/containments/homescreen/package/contents/ui/main.qml @@ -114,12 +114,14 @@ FocusScope { } appDrawer: appDrawer + contentWidth: Math.max(width, width * Math.ceil(appletsLayout.childrenRect.width/width)) + (launcherDragManager.active ? width : 0) // TODO: span on multiple pages DragDrop.DropArea { id: dropArea - width: Math.max(mainFlickable.width, mainFlickable.width * Math.ceil(appletsLayout.childrenRect.width/mainFlickable.width)) - height: mainFlickable.height + favoriteStrip.height + width: mainFlickable.width * 100 + //width: Math.max(mainFlickable.width, mainFlickable.width * Math.ceil(appletsLayout.childrenRect.width/mainFlickable.width)) + height: mainFlickable.height + favoriteStrip.height + units.gridUnit onDragEnter: { event.accept(event.proposedAction);