Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions qml/FolderGridViewPopup.qml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2024-2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand Down Expand Up @@ -541,9 +541,15 @@ Popup {
}

component DelegateDropArea: DropArea {
property bool isDragHover: false

onEntered: function(drag) {
root.onDragEnter(this)
folderDragApplyTimer.dragId = drag.getDataAsString("text/x-dde-launcher-dnd-desktopId")
let dragId = drag.getDataAsString("text/x-dde-launcher-dnd-desktopId")
if (dragId !== model.desktopId) {
isDragHover = true
}
folderDragApplyTimer.dragId = dragId
folderDragApplyTimer.restart()
}
onPositionChanged: function(drag) {
Expand All @@ -558,6 +564,7 @@ Popup {
}
}
onExited: {
isDragHover = false
root.onDragExit(this)
folderDragApplyTimer.stop()
folderDragApplyTimer.dragId = ""
Expand All @@ -566,6 +573,7 @@ Popup {
root.onDragExit(this)
}
onDropped: function(drop) {
isDragHover = false
let dragId = drop.getDataAsString("text/x-dde-launcher-dnd-desktopId")
if (dragId === "") {
return
Expand Down Expand Up @@ -619,6 +627,7 @@ Popup {
id: innerItem
anchors.fill: parent
dndEnabled: true
isDragHover: false
displayFont: isWindowedMode ? DTK.fontManager.t9 : DTK.fontManager.t6
Drag.mimeData: Helper.generateDragMimeData(model.desktopId)
visible: dndItem.currentlyDraggedId !== model.desktopId
Expand Down
36 changes: 33 additions & 3 deletions qml/FullscreenFrame.qml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
// SPDX-FileCopyrightText: 2023-2026 UnionTech Software Technology Co., Ltd.
//
// SPDX-License-Identifier: GPL-3.0-or-later

Expand Down Expand Up @@ -33,7 +33,18 @@ InputEventItem {
// ----------- Drag and Drop related functions START -----------
Label {
property string currentlyDraggedId

property string currentlyDraggedIconName

property bool mergeAnimPending: false
//被拖拽图标
property string mergeAnimTargetIcon: ""
//放下的图标或文件夹
property string mergeAnimTargetIcon2: ""
// 鼠标松手位置(窗口坐标)
property real mergeAnimStartX: 0
property real mergeAnimStartY: 0

property real mergeSize: 0
signal dragEnded()

id: dndItem
Expand All @@ -45,6 +56,7 @@ InputEventItem {
text = "Dragging " + currentlyDraggedId
} else {
currentlyDraggedId = ""
currentlyDraggedIconName = ""
dragEnded()
}
}
Expand Down Expand Up @@ -547,21 +559,29 @@ InputEventItem {
delegate: DropArea {
Keys.forwardTo: [iconItemDelegate]

property bool isDragHover: false

visible: !folderGridViewPopup.visible || folderGridViewPopup.currentFolderId !== Number(model.desktopId.replace("internal/folders/", ""))
width: gridViewContainer.cellWidth
height: gridViewContainer.cellHeight
onEntered: function (drag) {
if (folderGridViewPopup.opened) {
folderGridViewPopup.close()
}
dndDropEnterTimer.dragId = drag.getDataAsString("text/x-dde-launcher-dnd-desktopId")
let dragId = drag.getDataAsString("text/x-dde-launcher-dnd-desktopId")
if (dragId !== model.desktopId) {
isDragHover = true
}
dndDropEnterTimer.dragId = dragId
dndDropEnterTimer.restart()
}
onExited: {
isDragHover = false
dndDropEnterTimer.stop()
dndDropEnterTimer.dragId = ""
}
onDropped: function (drop) {
isDragHover = false
dndDropEnterTimer.stop()
dndDropEnterTimer.dragId = ""
let dragId = drop.getDataAsString("text/x-dde-launcher-dnd-desktopId")
Expand All @@ -572,6 +592,15 @@ InputEventItem {
} else if (drop.x > (width - sideOpPadding)) {
op = 1
}
if (op === 0) {
dndItem.mergeAnimTargetIcon = dndItem.currentlyDraggedIconName
dndItem.mergeAnimTargetIcon2 = !folderIcons ? iconItemDelegate.iconSource : ""
let cursorScene = mapToItem(null, drop.x, drop.y)
let hs = dndItem.Drag.hotSpot
dndItem.mergeAnimStartX = cursorScene.x - hs.x + dndItem.mergeSize / 2
dndItem.mergeAnimStartY = cursorScene.y - hs.y + dndItem.mergeSize / 2
dndItem.mergeAnimPending = true
}
dropOnItem(dragId, model.desktopId, op)
proxyModel.sort(0)
}
Expand Down Expand Up @@ -606,6 +635,7 @@ InputEventItem {
}
enabled: !folderGridViewPopup.visible
dndEnabled: !folderGridViewPopup.opened
isDragHover: parent.isDragHover
Drag.mimeData: Helper.generateDragMimeData(model.desktopId)
visible: dndItem.currentlyDraggedId !== model.desktopId
iconSource: (iconName && iconName !== "") ? iconName : "application-x-desktop"
Expand Down
Loading
Loading