Hide preview immediately on mouse pressed

Change-Id: I4750fb161c368aca57a725d4a6a91074f7e1c017
This commit is contained in:
杨万青 2015-09-23 18:20:37 +08:00
parent 047f069cef
commit 16e1147f17
Notes: Deepin Code Review 2016-06-14 07:19:47 +00:00
Verified+1: Anonymous Coward #1000004
Code-Review+2: <mr.asianwang@gmail.com>
Submitted-by: <mr.asianwang@gmail.com>
Submitted-at: Wed, 23 Sep 2015 20:09:57 +0800
Reviewed-on: https://cr.deepin.io/7318
Project: dde/dde-dock
Branch: refs/heads/master
7 changed files with 24 additions and 7 deletions

View File

@ -68,7 +68,7 @@ void PluginItemWrapper::leaveEvent(QEvent *)
void PluginItemWrapper::mousePressEvent(QMouseEvent * event)
{
hidePreview();
hidePreview(true);
if (event->button() == Qt::RightButton) {
this->showMenu();

View File

@ -110,12 +110,14 @@ void Panel::initPluginManager()
m_pluginLayout->addItem(targetItem);
connect(targetItem, &AbstractDockItem::needPreviewShow, this, &Panel::onNeedPreviewShow);
connect(targetItem, &AbstractDockItem::needPreviewHide, this, &Panel::onNeedPreviewHide);
connect(targetItem, &AbstractDockItem::needPreviewImmediatelyHide, this, &Panel::onNeedPreviewImmediatelyHide);
connect(targetItem, &AbstractDockItem::needPreviewUpdate, m_globalPreview, &PreviewFrame::resizeWithContent);
});
connect(pluginManager, &DockPluginManager::itemInsert, [=](AbstractDockItem *baseItem, AbstractDockItem *targetItem){
m_pluginLayout->insertItem(targetItem, m_pluginLayout->indexOf(baseItem));
connect(targetItem, &AbstractDockItem::needPreviewShow, this, &Panel::onNeedPreviewShow);
connect(targetItem, &AbstractDockItem::needPreviewHide, this, &Panel::onNeedPreviewHide);
connect(targetItem, &AbstractDockItem::needPreviewImmediatelyHide, this, &Panel::onNeedPreviewImmediatelyHide);
connect(targetItem, &AbstractDockItem::needPreviewUpdate, m_globalPreview, &PreviewFrame::resizeWithContent);
});
connect(pluginManager, &DockPluginManager::itemRemoved, [=](AbstractDockItem* item) {
@ -247,6 +249,7 @@ void Panel::onAppItemAdd(AbstractDockItem *item)
m_appLayout->addItem(item);
connect(item, &AbstractDockItem::needPreviewShow, this, &Panel::onNeedPreviewShow);
connect(item, &AbstractDockItem::needPreviewHide, this, &Panel::onNeedPreviewHide);
connect(item, &AbstractDockItem::needPreviewImmediatelyHide, this, &Panel::onNeedPreviewImmediatelyHide);
connect(item, &AbstractDockItem::needPreviewUpdate, m_globalPreview, &PreviewFrame::resizeWithContent);
}
@ -312,6 +315,11 @@ void Panel::onNeedPreviewShow(QPoint pos)
}
}
void Panel::onNeedPreviewImmediatelyHide()
{
m_globalPreview->hidePreview(0);
}
void Panel::reanchorsLayout(Dock::DockMode mode)
{
if (mode == Dock::FashionMode)

View File

@ -65,6 +65,7 @@ private:
void onHidePanelFinished();
void onNeedPreviewHide();
void onNeedPreviewShow(QPoint pos);
void onNeedPreviewImmediatelyHide();
void reanchorsLayout(Dock::DockMode mode);
void updateRightReflection();

View File

@ -151,18 +151,21 @@ void AbstractDockItem::showPreview()
}
}
void AbstractDockItem::hidePreview()
void AbstractDockItem::hidePreview(bool immediately)
{
m_titlePreview->hidePreview();
emit needPreviewHide();
if (immediately)
emit needPreviewImmediatelyHide();
else
emit needPreviewHide();
}
void AbstractDockItem::showMenu()
{
if (getMenuContent().isEmpty()) return;
hidePreview();
hidePreview(true);
if (m_dbusMenuManager == NULL) {
m_dbusMenuManager = new DBusMenuManager(this);

View File

@ -47,7 +47,7 @@ public:
void resize(int width,int height);
void showMenu();
void showPreview();
void hidePreview();
void hidePreview(bool immediately = false);
void setParent(QWidget * parent);
int globalX();
@ -68,6 +68,7 @@ signals:
void frameUpdate();
void moveAnimationFinished();
void needPreviewHide();
void needPreviewImmediatelyHide();
void needPreviewShow(QPoint pos);
void needPreviewUpdate();

View File

@ -288,7 +288,8 @@ void AppItem::onMousePress(QMouseEvent *event)
{
//qWarning() << "mouse press...";
emit mousePress(event);
hidePreview();
hidePreview(true);
}
void AppItem::onMouseRelease(QMouseEvent *event)

View File

@ -42,7 +42,10 @@ void PreviewFrame::hidePreview(int interval)
{
m_showTimer->stop();
m_hideTimer->start(interval);
if (interval <= 0)
onHideTimerTriggered();
else
m_hideTimer->start(interval);
}
void PreviewFrame::setContent(QWidget *content)