mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
hide container item if its empty
Change-Id: Ib58f490c082d5580dd2a0c2fbab2e0fe590e56b5
This commit is contained in:
parent
ecfa99c6de
commit
d4198e04ab
Notes:
Deepin Code Review
2016-09-23 15:06:50 +08:00
Verified+1: Anonymous Coward #1000004 Code-Review+2: 石博文 <sbw@sbw.so> Submitted-by: 石博文 <sbw@sbw.so> Submitted-at: Fri, 23 Sep 2016 15:06:50 +0800 Reviewed-on: https://cr.deepin.io/16290 Project: dde/dde-dock Branch: refs/heads/master
@ -37,6 +37,11 @@ bool DockItemController::itemIsInContainer(DockItem * const item) const
|
||||
return m_containerItem->contains(item);
|
||||
}
|
||||
|
||||
void DockItemController::setDropping(const bool dropping)
|
||||
{
|
||||
m_containerItem->setDropping(dropping);
|
||||
}
|
||||
|
||||
void DockItemController::refershItemsIcon()
|
||||
{
|
||||
for (auto item : m_itemList)
|
||||
|
@ -23,6 +23,7 @@ public:
|
||||
const QList<DockItem *> itemList() const;
|
||||
bool appIsOnDock(const QString &appDesktop) const;
|
||||
bool itemIsInContainer(DockItem * const item) const;
|
||||
void setDropping(const bool dropping);
|
||||
|
||||
signals:
|
||||
void itemInserted(const int index, DockItem *item) const;
|
||||
|
@ -4,6 +4,7 @@
|
||||
|
||||
ContainerItem::ContainerItem(QWidget *parent)
|
||||
: DockItem(parent),
|
||||
m_dropping(false),
|
||||
m_containerWidget(new ContainerWidget(this))
|
||||
{
|
||||
m_containerWidget->setVisible(false);
|
||||
@ -11,6 +12,17 @@ ContainerItem::ContainerItem(QWidget *parent)
|
||||
setAcceptDrops(true);
|
||||
}
|
||||
|
||||
void ContainerItem::setDropping(const bool dropping)
|
||||
{
|
||||
if (dropping)
|
||||
showPopupApplet(m_containerWidget);
|
||||
else
|
||||
hidePopup();
|
||||
|
||||
m_dropping = dropping;
|
||||
update();
|
||||
}
|
||||
|
||||
void ContainerItem::addItem(DockItem * const item)
|
||||
{
|
||||
m_containerWidget->addWidget(item);
|
||||
@ -64,7 +76,7 @@ void ContainerItem::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
DockItem::paintEvent(e);
|
||||
|
||||
if (DockDisplayMode == Dock::Fashion)
|
||||
if (!m_containerWidget->itemCount() && !m_dropping)
|
||||
return;
|
||||
|
||||
QPainter painter(this);
|
||||
@ -73,7 +85,7 @@ void ContainerItem::paintEvent(QPaintEvent *e)
|
||||
|
||||
void ContainerItem::mouseReleaseEvent(QMouseEvent *e)
|
||||
{
|
||||
if (e->button() == Qt::LeftButton)
|
||||
if (e->button() == Qt::LeftButton && m_containerWidget->itemCount())
|
||||
return showPopupApplet(m_containerWidget);
|
||||
|
||||
return DockItem::mouseReleaseEvent(e);
|
||||
|
@ -15,6 +15,7 @@ public:
|
||||
|
||||
inline ItemType itemType() const {return Container;}
|
||||
|
||||
void setDropping(const bool dropping);
|
||||
void addItem(DockItem * const item);
|
||||
void removeItem(DockItem * const item);
|
||||
bool contains(DockItem * const item);
|
||||
@ -30,6 +31,7 @@ protected:
|
||||
QSize sizeHint() const;
|
||||
|
||||
private:
|
||||
bool m_dropping;
|
||||
ContainerWidget *m_containerWidget;
|
||||
QPixmap m_icon;
|
||||
};
|
||||
|
@ -562,6 +562,10 @@ void MainPanel::itemDragStarted()
|
||||
{
|
||||
DragingItem = qobject_cast<DockItem *>(sender());
|
||||
|
||||
if (DragingItem->itemType() == DockItem::Plugins)
|
||||
if (static_cast<PluginsItem *>(DragingItem)->allowContainer())
|
||||
m_itemController->setDropping(true);
|
||||
|
||||
QRect rect;
|
||||
rect.setTopLeft(mapToGlobal(pos()));
|
||||
rect.setSize(size());
|
||||
@ -575,6 +579,8 @@ void MainPanel::itemDragStarted()
|
||||
///
|
||||
void MainPanel::itemDropped(QObject *destnation)
|
||||
{
|
||||
m_itemController->setDropping(false);
|
||||
|
||||
if (m_displayMode == Dock::Fashion)
|
||||
return;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user