mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +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::requestActivateWindow, this, &AppItem::requestActivateWindow, Qt::QueuedConnection);
|
||||||
connect(m_appPreviewTips, &PreviewContainer::requestPreviewWindow, this, &AppItem::requestPreviewWindow, 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::requestCancelPreview, Qt::QueuedConnection);
|
||||||
|
connect(m_appPreviewTips, &PreviewContainer::requestCancelPreview, this, &AppItem::hidePopup);
|
||||||
|
|
||||||
updateTitle();
|
updateTitle();
|
||||||
refershIcon();
|
refershIcon();
|
||||||
@ -319,7 +320,11 @@ void AppItem::mouseMoveEvent(QMouseEvent *e)
|
|||||||
if (e->buttons() != Qt::LeftButton)
|
if (e->buttons() != Qt::LeftButton)
|
||||||
return;
|
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)
|
if (distance.manhattanLength() < APP_DRAG_THRESHOLD)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -24,6 +24,10 @@ PreviewWidget::PreviewWidget(const WId wid, QWidget *parent)
|
|||||||
m_closeButton->setText("x");
|
m_closeButton->setText("x");
|
||||||
m_closeButton->setVisible(false);
|
m_closeButton->setVisible(false);
|
||||||
|
|
||||||
|
m_droppedDelay = new QTimer(this);
|
||||||
|
m_droppedDelay->setSingleShot(true);
|
||||||
|
m_droppedDelay->setInterval(100);
|
||||||
|
|
||||||
QVBoxLayout *centralLayout = new QVBoxLayout;
|
QVBoxLayout *centralLayout = new QVBoxLayout;
|
||||||
centralLayout->setSpacing(0);
|
centralLayout->setSpacing(0);
|
||||||
centralLayout->setMargin(0);
|
centralLayout->setMargin(0);
|
||||||
@ -113,6 +117,9 @@ void PreviewWidget::paintEvent(QPaintEvent *e)
|
|||||||
|
|
||||||
void PreviewWidget::enterEvent(QEvent *e)
|
void PreviewWidget::enterEvent(QEvent *e)
|
||||||
{
|
{
|
||||||
|
if (m_droppedDelay->isActive())
|
||||||
|
return e->ignore();
|
||||||
|
|
||||||
m_hovered = true;
|
m_hovered = true;
|
||||||
m_closeButton->setVisible(true);
|
m_closeButton->setVisible(true);
|
||||||
|
|
||||||
@ -135,16 +142,40 @@ void PreviewWidget::leaveEvent(QEvent *e)
|
|||||||
|
|
||||||
void PreviewWidget::mouseReleaseEvent(QMouseEvent *e)
|
void PreviewWidget::mouseReleaseEvent(QMouseEvent *e)
|
||||||
{
|
{
|
||||||
|
if (m_droppedDelay->isActive())
|
||||||
|
return e->ignore();
|
||||||
|
|
||||||
QWidget::mouseReleaseEvent(e);
|
QWidget::mouseReleaseEvent(e);
|
||||||
|
|
||||||
emit requestHidePopup();
|
|
||||||
emit requestCancelPreview();
|
emit requestCancelPreview();
|
||||||
emit requestActivateWindow(m_wid);
|
emit requestActivateWindow(m_wid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreviewWidget::dragEnterEvent(QDragEnterEvent *e)
|
void PreviewWidget::dragEnterEvent(QDragEnterEvent *e)
|
||||||
{
|
{
|
||||||
QWidget::dragEnterEvent(e);
|
e->accept();
|
||||||
|
|
||||||
|
m_hovered = true;
|
||||||
|
|
||||||
|
update();
|
||||||
|
|
||||||
emit requestActivateWindow(m_wid);
|
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 <QWidget>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QPushButton>
|
#include <QPushButton>
|
||||||
|
#include <QDragEnterEvent>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
class PreviewWidget : public QWidget
|
class PreviewWidget : public QWidget
|
||||||
{
|
{
|
||||||
@ -17,7 +19,6 @@ signals:
|
|||||||
void requestActivateWindow(const WId wid) const;
|
void requestActivateWindow(const WId wid) const;
|
||||||
void requestPreviewWindow(const WId wid) const;
|
void requestPreviewWindow(const WId wid) const;
|
||||||
void requestCancelPreview() const;
|
void requestCancelPreview() const;
|
||||||
void requestHidePopup() const;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void refershImage();
|
void refershImage();
|
||||||
@ -30,6 +31,8 @@ private:
|
|||||||
void leaveEvent(QEvent *e);
|
void leaveEvent(QEvent *e);
|
||||||
void mouseReleaseEvent(QMouseEvent *e);
|
void mouseReleaseEvent(QMouseEvent *e);
|
||||||
void dragEnterEvent(QDragEnterEvent *e);
|
void dragEnterEvent(QDragEnterEvent *e);
|
||||||
|
void dragLeaveEvent(QDragLeaveEvent *e);
|
||||||
|
void dropEvent(QDropEvent *e);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
const WId m_wid;
|
const WId m_wid;
|
||||||
@ -38,6 +41,8 @@ private:
|
|||||||
|
|
||||||
QPushButton *m_closeButton;
|
QPushButton *m_closeButton;
|
||||||
|
|
||||||
|
QTimer *m_droppedDelay;
|
||||||
|
|
||||||
bool m_hovered;
|
bool m_hovered;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -165,6 +165,7 @@ void DockItem::showContextMenu()
|
|||||||
connect(menuInter, &DBusMenu::MenuUnregistered, menuInter, &DBusMenu::deleteLater, Qt::QueuedConnection);
|
connect(menuInter, &DBusMenu::MenuUnregistered, menuInter, &DBusMenu::deleteLater, Qt::QueuedConnection);
|
||||||
|
|
||||||
menuInter->ShowMenu(QString(QJsonDocument(menuObject).toJson()));
|
menuInter->ShowMenu(QString(QJsonDocument(menuObject).toJson()));
|
||||||
|
hidePopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DockItem::showHoverTips()
|
void DockItem::showHoverTips()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user