mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
add: accept dock app from all droped desktop files
Change-Id: I4d18f7a9cdff2339c715f0910f067b06492e1303
This commit is contained in:
parent
cf1b9a82d5
commit
01e1e68136
Notes:
gerrit
2018-09-28 15:37:12 +08:00
Verified+1: <jenkins@deepin.com> Code-Review+2: listenerri <listenerri@gmail.com> Submitted-by: listenerri <listenerri@gmail.com> Submitted-at: Fri, 28 Sep 2018 15:37:10 +0800 Reviewed-on: https://cr.deepin.io/37909 Project: dde/dde-dock Branch: refs/heads/master
@ -363,8 +363,10 @@ void AppItem::dragEnterEvent(QDragEnterEvent *e)
|
||||
return;
|
||||
|
||||
// ignore request dock event
|
||||
if (e->mimeData()->formats().contains("RequestDock"))
|
||||
return e->ignore();
|
||||
QString draggingMimeKey = e->mimeData()->formats().contains("RequestDock") ? "RequestDock" : "text/plain";
|
||||
if (QMimeDatabase().mimeTypeForFile(e->mimeData()->data(draggingMimeKey)).name() == "application/x-desktop") {
|
||||
return;
|
||||
}
|
||||
|
||||
e->accept();
|
||||
}
|
||||
|
@ -33,6 +33,9 @@ static DockItem *DraggingItem = nullptr;
|
||||
static PlaceholderItem *RequestDockItem = nullptr;
|
||||
|
||||
const char *RequestDockKey = "RequestDock";
|
||||
const char *RequestDockKeyFallback = "text/plain";
|
||||
|
||||
const char *DesktopMimeType = "application/x-desktop";
|
||||
|
||||
MainPanel::MainPanel(QWidget *parent)
|
||||
: DBlurEffectWidget(parent),
|
||||
@ -213,10 +216,19 @@ void MainPanel::dragEnterEvent(QDragEnterEvent *e)
|
||||
DraggingItem = nullptr;
|
||||
}
|
||||
|
||||
if (!e->mimeData()->formats().contains(RequestDockKey))
|
||||
m_draggingMimeKey = e->mimeData()->formats().contains(RequestDockKey) ? RequestDockKey : RequestDockKeyFallback;
|
||||
|
||||
// dragging item is NOT a desktop file
|
||||
if (QMimeDatabase().mimeTypeForFile(e->mimeData()->data(m_draggingMimeKey)).name() != DesktopMimeType) {
|
||||
m_draggingMimeKey.clear();
|
||||
return;
|
||||
if (m_itemController->appIsOnDock(e->mimeData()->data(RequestDockKey)))
|
||||
}
|
||||
|
||||
// dragging item has been docked
|
||||
if (m_itemController->appIsOnDock(e->mimeData()->data(m_draggingMimeKey))) {
|
||||
m_draggingMimeKey.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
e->accept();
|
||||
}
|
||||
@ -255,7 +267,7 @@ void MainPanel::dropEvent(QDropEvent *e)
|
||||
|
||||
if (RequestDockItem)
|
||||
{
|
||||
m_itemController->placeholderItemDocked(e->mimeData()->data(RequestDockKey), RequestDockItem);
|
||||
m_itemController->placeholderItemDocked(e->mimeData()->data(m_draggingMimeKey), RequestDockItem);
|
||||
m_itemController->placeholderItemRemoved(RequestDockItem);
|
||||
RequestDockItem->deleteLater();
|
||||
RequestDockItem = nullptr;
|
||||
|
@ -95,6 +95,8 @@ private:
|
||||
DockItemController *m_itemController;
|
||||
|
||||
QWidget *m_appDragWidget;
|
||||
|
||||
QString m_draggingMimeKey;
|
||||
};
|
||||
|
||||
#endif // MAINPANEL_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user