mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
optimize drop
Change-Id: I8892e79b60b7c181f7ae75e5e32177c0847b203a
This commit is contained in:
parent
4c4e0a0fb0
commit
495ed31997
Notes:
Deepin Code Review
2017-04-27 15:46:28 +08:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: 石博文 <sbw@sbw.so> Submitted-by: 石博文 <sbw@sbw.so> Submitted-at: Thu, 27 Apr 2017 15:46:26 +0800 Reviewed-on: https://cr.deepin.io/22635 Project: dde/dde-dock Branch: refs/heads/master
@ -74,6 +74,7 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
|
||||
connect(m_appPreviewTips, &PreviewContainer::requestActivateWindow, this, &AppItem::requestActivateWindow, Qt::QueuedConnection);
|
||||
connect(m_appPreviewTips, &PreviewContainer::requestPreviewWindow, this, &AppItem::requestPreviewWindow, Qt::QueuedConnection);
|
||||
connect(m_appPreviewTips, &PreviewContainer::requestCancelPreview, this, &AppItem::requestCancelPreview, Qt::QueuedConnection);
|
||||
connect(m_appPreviewTips, &PreviewContainer::requestCancelPreview, this, &AppItem::hidePopup);
|
||||
|
||||
updateTitle();
|
||||
refershIcon();
|
||||
@ -319,7 +320,11 @@ void AppItem::mouseMoveEvent(QMouseEvent *e)
|
||||
if (e->buttons() != Qt::LeftButton)
|
||||
return;
|
||||
|
||||
const QPoint distance = e->pos() - MousePressPos;
|
||||
const QPoint pos = e->pos();
|
||||
if (!rect().contains(pos))
|
||||
return;
|
||||
|
||||
const QPoint distance = pos - MousePressPos;
|
||||
if (distance.manhattanLength() < APP_DRAG_THRESHOLD)
|
||||
return;
|
||||
|
||||
|
@ -24,6 +24,10 @@ PreviewWidget::PreviewWidget(const WId wid, QWidget *parent)
|
||||
m_closeButton->setText("x");
|
||||
m_closeButton->setVisible(false);
|
||||
|
||||
m_droppedDelay = new QTimer(this);
|
||||
m_droppedDelay->setSingleShot(true);
|
||||
m_droppedDelay->setInterval(100);
|
||||
|
||||
QVBoxLayout *centralLayout = new QVBoxLayout;
|
||||
centralLayout->setSpacing(0);
|
||||
centralLayout->setMargin(0);
|
||||
@ -113,6 +117,9 @@ void PreviewWidget::paintEvent(QPaintEvent *e)
|
||||
|
||||
void PreviewWidget::enterEvent(QEvent *e)
|
||||
{
|
||||
if (m_droppedDelay->isActive())
|
||||
return e->ignore();
|
||||
|
||||
m_hovered = true;
|
||||
m_closeButton->setVisible(true);
|
||||
|
||||
@ -135,16 +142,40 @@ void PreviewWidget::leaveEvent(QEvent *e)
|
||||
|
||||
void PreviewWidget::mouseReleaseEvent(QMouseEvent *e)
|
||||
{
|
||||
if (m_droppedDelay->isActive())
|
||||
return e->ignore();
|
||||
|
||||
QWidget::mouseReleaseEvent(e);
|
||||
|
||||
emit requestHidePopup();
|
||||
emit requestCancelPreview();
|
||||
emit requestActivateWindow(m_wid);
|
||||
}
|
||||
|
||||
void PreviewWidget::dragEnterEvent(QDragEnterEvent *e)
|
||||
{
|
||||
QWidget::dragEnterEvent(e);
|
||||
e->accept();
|
||||
|
||||
m_hovered = true;
|
||||
|
||||
update();
|
||||
|
||||
emit requestActivateWindow(m_wid);
|
||||
}
|
||||
|
||||
void PreviewWidget::dragLeaveEvent(QDragLeaveEvent *e)
|
||||
{
|
||||
QWidget::dragLeaveEvent(e);
|
||||
|
||||
m_hovered = false;
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void PreviewWidget::dropEvent(QDropEvent *e)
|
||||
{
|
||||
m_droppedDelay->start();
|
||||
|
||||
QWidget::dropEvent(e);
|
||||
|
||||
emit requestCancelPreview();
|
||||
}
|
||||
|
@ -4,6 +4,8 @@
|
||||
#include <QWidget>
|
||||
#include <QDebug>
|
||||
#include <QPushButton>
|
||||
#include <QDragEnterEvent>
|
||||
#include <QTimer>
|
||||
|
||||
class PreviewWidget : public QWidget
|
||||
{
|
||||
@ -17,7 +19,6 @@ signals:
|
||||
void requestActivateWindow(const WId wid) const;
|
||||
void requestPreviewWindow(const WId wid) const;
|
||||
void requestCancelPreview() const;
|
||||
void requestHidePopup() const;
|
||||
|
||||
private slots:
|
||||
void refershImage();
|
||||
@ -30,6 +31,8 @@ private:
|
||||
void leaveEvent(QEvent *e);
|
||||
void mouseReleaseEvent(QMouseEvent *e);
|
||||
void dragEnterEvent(QDragEnterEvent *e);
|
||||
void dragLeaveEvent(QDragLeaveEvent *e);
|
||||
void dropEvent(QDropEvent *e);
|
||||
|
||||
private:
|
||||
const WId m_wid;
|
||||
@ -38,6 +41,8 @@ private:
|
||||
|
||||
QPushButton *m_closeButton;
|
||||
|
||||
QTimer *m_droppedDelay;
|
||||
|
||||
bool m_hovered;
|
||||
};
|
||||
|
||||
|
@ -165,6 +165,7 @@ void DockItem::showContextMenu()
|
||||
connect(menuInter, &DBusMenu::MenuUnregistered, menuInter, &DBusMenu::deleteLater, Qt::QueuedConnection);
|
||||
|
||||
menuInter->ShowMenu(QString(QJsonDocument(menuObject).toJson()));
|
||||
hidePopup();
|
||||
}
|
||||
|
||||
void DockItem::showHoverTips()
|
||||
|
Loading…
x
Reference in New Issue
Block a user