From 261a2b6262129610a5db240ab33cd10900056509 Mon Sep 17 00:00:00 2001 From: RigoLigo Date: Fri, 18 Oct 2024 15:17:20 +0800 Subject: [PATCH] fix: use proper dock DnD MIME data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对于将应用拖拽到Dock上固定的场景使用正确的MIME数据,并在不允许某应用固定到Dock上时不加入此MIME数据,以阻止Dock接受拖拽事件。此提交是占位包需求遗留问题的修复。 Log: Bug: https://pms.uniontech.com/bug-view-279155.html --- qml/FolderGridViewPopup.qml | 4 +--- qml/FullscreenFrame.qml | 4 +--- qml/Helper.qml | 10 ++++++++++ qml/windowed/FreeSortListView.qml | 4 +--- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/qml/FolderGridViewPopup.qml b/qml/FolderGridViewPopup.qml index bf1685c7..c8be8bcb 100644 --- a/qml/FolderGridViewPopup.qml +++ b/qml/FolderGridViewPopup.qml @@ -269,9 +269,7 @@ Popup { anchors.fill: parent dndEnabled: true displayFont: isWindowedMode ? DTK.fontManager.t9 : DTK.fontManager.t6 - Drag.mimeData: { - "text/x-dde-launcher-dnd-desktopId": model.desktopId - } + Drag.mimeData: Helper.generateDragMimeData(model.desktopId) visible: dndItem.currentlyDraggedId !== model.desktopId iconSource: iconName diff --git a/qml/FullscreenFrame.qml b/qml/FullscreenFrame.qml index 84f190ab..4a887c6e 100644 --- a/qml/FullscreenFrame.qml +++ b/qml/FullscreenFrame.qml @@ -465,9 +465,7 @@ InputEventItem { margins: 5 } dndEnabled: !folderGridViewPopup.opened - Drag.mimeData: { - "text/x-dde-launcher-dnd-desktopId": model.desktopId - } + Drag.mimeData: Helper.generateDragMimeData(model.desktopId) visible: dndItem.currentlyDraggedId !== model.desktopId iconSource: (iconName && iconName !== "") ? iconName : "application-x-desktop" icons: folderIcons diff --git a/qml/Helper.qml b/qml/Helper.qml index c98ff69f..53503479 100644 --- a/qml/Helper.qml +++ b/qml/Helper.qml @@ -48,4 +48,14 @@ QtObject { crystal: itemBackgroundColor.hoveredDarkColor } } + + function generateDragMimeData(desktopId) { + // In some cases an app is not allowed to be pinned onto dock via drag-n-drop; + // We only insert the MIME data for dde-dock in those allowed cases. + var mime = { "text/x-dde-launcher-dnd-desktopId": desktopId } + if (!DesktopIntegration.appIsDummyPackage(desktopId)) { + mime["text/x-dde-dock-dnd-appid"] = desktopId + } + return mime + } } diff --git a/qml/windowed/FreeSortListView.qml b/qml/windowed/FreeSortListView.qml index 0d60a5d9..b1af7537 100644 --- a/qml/windowed/FreeSortListView.qml +++ b/qml/windowed/FreeSortListView.qml @@ -164,9 +164,7 @@ Item { Drag.hotSpot.y: height / 2 Drag.dragType: Drag.Automatic Drag.active: mouseArea.drag.active - Drag.mimeData: { - "text/x-dde-launcher-dnd-desktopId": model.desktopId - } + Drag.mimeData: Helper.generateDragMimeData(model.desktopId) background: ItemBackground { id: bg