disable auto hide when popup menu registered

Change-Id: Iaa217e09f52ddabdeb695bf90563c9a954a512d2
This commit is contained in:
石博文 2016-06-30 15:32:18 +08:00 committed by Hualet Wang
parent e10e6dc2d2
commit d65e274e25
5 changed files with 12 additions and 2 deletions

View File

@ -124,6 +124,7 @@ void DockItem::showContextMenu()
DBusMenu *menuInter = new DBusMenu(path.path(), this);
connect(menuInter, &DBusMenu::ItemInvoked, this, &DockItem::invokedMenuItem);
connect(menuInter, &DBusMenu::MenuUnregistered, this, &DockItem::menuUnregistered);
connect(menuInter, &DBusMenu::MenuUnregistered, menuInter, &DBusMenu::deleteLater, Qt::QueuedConnection);
menuInter->ShowMenu(QString(QJsonDocument(menuObject).toJson()));

View File

@ -29,6 +29,8 @@ public:
signals:
void dragStarted() const;
void menuUnregistered() const;
void requestWindowAutoHide(const bool autoHide) const;
protected:
void paintEvent(QPaintEvent *e);

View File

@ -114,6 +114,8 @@ void MainPanel::dropEvent(QDropEvent *e)
void MainPanel::initItemConnection(DockItem *item)
{
connect(item, &DockItem::dragStarted, this, &MainPanel::itemDragStarted);
connect(item, &DockItem::menuUnregistered, this, &MainPanel::requestRefershWindowVisible);
connect(item, &DockItem::requestWindowAutoHide, this, &MainPanel::requestWindowAutoHide);
}
DockItem *MainPanel::itemAt(const QPoint &point)

View File

@ -18,6 +18,10 @@ public:
void updateDockPosition(const Position dockPosition);
void updateDockDisplayMode(const Dock::DisplayMode displayMode);
signals:
void requestRefershWindowVisible() const;
void requestWindowAutoHide(const bool autoHide) const;
private:
void resizeEvent(QResizeEvent *e);
void dragEnterEvent(QDragEnterEvent *e);

View File

@ -116,6 +116,9 @@ void MainWindow::initConnections()
connect(m_settings, &DockSettings::windowVisibleChanegd, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection);
connect(m_settings, &DockSettings::autoHideChanged, this, &MainWindow::updatePanelVisible);
connect(m_mainPanel, &MainPanel::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible);
connect(m_mainPanel, &MainPanel::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide);
connect(m_panelHideAni, &QPropertyAnimation::finished, this, &MainWindow::updateGeometry);
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition, Qt::QueuedConnection);
@ -322,8 +325,6 @@ void MainWindow::updatePanelVisible()
const Dock::HideState state = m_settings->hideState();
// qDebug() << state;
if (state == Unknown)
return;