add: accept dock app from all droped desktop files

Change-Id: I4d18f7a9cdff2339c715f0910f067b06492e1303
This commit is contained in:
listenerri 2018-08-22 12:52:47 +08:00
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
3 changed files with 21 additions and 5 deletions

View File

@ -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();
}

View File

@ -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;

View File

@ -95,6 +95,8 @@ private:
DockItemController *m_itemController;
QWidget *m_appDragWidget;
QString m_draggingMimeKey;
};
#endif // MAINPANEL_H