diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index 083b89f59..fa916dc5f 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -49,6 +49,7 @@ DockItemManager::DockItemManager(QObject *parent) // 应用区域 for (auto entry : m_appInter->entries()) { AppItem *it = new AppItem(entry); + manageItem(it); connect(it, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection); connect(it, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow); @@ -247,6 +248,7 @@ void DockItemManager::appItemAdded(const QDBusObjectPath &path, const int index) } AppItem *item = new AppItem(path); + manageItem(item); connect(item, &AppItem::requestActivateWindow, m_appInter, &DBusDock::ActivateWindow, Qt::QueuedConnection); connect(item, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow); @@ -281,6 +283,8 @@ void DockItemManager::appItemRemoved(AppItem *appItem) void DockItemManager::pluginItemInserted(PluginsItem *item) { + manageItem(item); + // check item is in container if (item->allowContainer() && item->isInContainer()) { return itemDroppedIntoContainer(item); @@ -386,3 +390,9 @@ void DockItemManager::sortPluginItems() emit itemInserted(-1, m_itemList[i]); } } + +void DockItemManager::manageItem(DockItem *item) +{ + connect(item, &DockItem::requestRefreshWindowVisible, this, &DockItemManager::requestRefershWindowVisible, Qt::UniqueConnection); + connect(item, &DockItem::requestWindowAutoHide, this, &DockItemManager::requestWindowAutoHide, Qt::UniqueConnection); +} diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index 2cd2331ad..3a95f0394 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -55,6 +55,8 @@ signals: void itemRemoved(DockItem *item) const; void itemUpdated(DockItem *item) const; void fashionTraySizeChanged(const QSize &traySize) const; + void requestWindowAutoHide(const bool autoHide) const; + void requestRefershWindowVisible() const; public slots: void refershItemsIcon(); @@ -73,6 +75,7 @@ private: void pluginItemInserted(PluginsItem *item); void pluginItemRemoved(PluginsItem *item); void reloadAppItems(); + void manageItem(DockItem *item); private: QTimer *m_updatePluginsOrderTimer; diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 57a7c28ee..ad37ff49e 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -405,6 +405,8 @@ void MainWindow::initConnections() connect(DockItemManager::instance(), &DockItemManager::itemInserted, m_mainPanel, &MainPanelControl::insertItem, Qt::DirectConnection); connect(DockItemManager::instance(), &DockItemManager::itemRemoved, m_mainPanel, &MainPanelControl::removeItem, Qt::DirectConnection); + connect(DockItemManager::instance(), &DockItemManager::requestRefershWindowVisible, this, &MainWindow::updatePanelVisible, Qt::QueuedConnection); + connect(DockItemManager::instance(), &DockItemManager::requestWindowAutoHide, m_settings, &DockSettings::setAutoHide); connect(m_mainPanel, &MainPanelControl::itemMoved, DockItemManager::instance(), &DockItemManager::itemMoved, Qt::DirectConnection); }