diff --git a/frame/controller/dockitemmanager.cpp b/frame/controller/dockitemmanager.cpp index 1fc483664..1ca1fea36 100644 --- a/frame/controller/dockitemmanager.cpp +++ b/frame/controller/dockitemmanager.cpp @@ -48,6 +48,8 @@ DockItemManager::DockItemManager(QObject *parent) connect(it, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow); connect(it, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow); + connect(this, &DockItemManager::requestUpdateDockItem, it, &AppItem::requestUpdateEntryGeometries); + m_itemList.append(it); } diff --git a/frame/controller/dockitemmanager.h b/frame/controller/dockitemmanager.h index e74c4fb16..d545b36ec 100644 --- a/frame/controller/dockitemmanager.h +++ b/frame/controller/dockitemmanager.h @@ -54,6 +54,8 @@ signals: void requestWindowAutoHide(const bool autoHide) const; void requestRefershWindowVisible() const; + void requestUpdateDockItem() const; + public slots: void refershItemsIcon(); void sortPluginItems(); diff --git a/frame/item/appitem.cpp b/frame/item/appitem.cpp index a05127613..0ea4e297b 100644 --- a/frame/item/appitem.cpp +++ b/frame/item/appitem.cpp @@ -116,6 +116,8 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent) connect(m_updateIconGeometryTimer, &QTimer::timeout, this, &AppItem::updateWindowIconGeometries, Qt::QueuedConnection); connect(m_retryObtainIconTimer, &QTimer::timeout, this, &AppItem::refershIcon, Qt::QueuedConnection); + connect(this, &AppItem::requestUpdateEntryGeometries, this, &AppItem::updateWindowIconGeometries); + updateWindowInfos(m_itemEntryInter->windowInfos()); refershIcon(); diff --git a/frame/item/appitem.h b/frame/item/appitem.h index a414125e4..104c11211 100644 --- a/frame/item/appitem.h +++ b/frame/item/appitem.h @@ -63,6 +63,8 @@ signals: void requestCancelPreview() const; void dragReady(QWidget *dragWidget); + void requestUpdateEntryGeometries() const; + private: void moveEvent(QMoveEvent *e) override; void paintEvent(QPaintEvent *e) override; diff --git a/frame/util/multiscreenworker.cpp b/frame/util/multiscreenworker.cpp index 9e599fcbe..fb7db1c4a 100644 --- a/frame/util/multiscreenworker.cpp +++ b/frame/util/multiscreenworker.cpp @@ -722,6 +722,7 @@ void MultiScreenWorker::onRequestUpdateFrontendGeometry() #endif m_dockInter->SetFrontendWindowRect(int(rect.x()), int(rect.y()), uint(rect.width()), uint(rect.height())); + emit requestUpdateDockEntry(); } void MultiScreenWorker::onRequestNotifyWindowManager() diff --git a/frame/util/multiscreenworker.h b/frame/util/multiscreenworker.h index 008fef6bd..c89ab2f99 100644 --- a/frame/util/multiscreenworker.h +++ b/frame/util/multiscreenworker.h @@ -287,6 +287,8 @@ signals: void requestStopShowAni(); void requestStopHideAni(); + void requestUpdateDockEntry(); + public slots: void onAutoHideChanged(bool autoHide); /** diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 23f53bb1c..fec18469f 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -296,6 +296,8 @@ void MainWindow::initConnections() connect(m_multiScreenWorker, &MultiScreenWorker::opacityChanged, this, &MainWindow::setMaskAlpha, Qt::QueuedConnection); connect(m_multiScreenWorker, &MultiScreenWorker::displayModeChanegd, this, &MainWindow::adjustShadowMask, Qt::QueuedConnection); + connect(m_multiScreenWorker, &MultiScreenWorker::requestUpdateDockEntry, DockItemManager::instance(), &DockItemManager::requestUpdateDockItem); + // 更新拖拽区域 connect(m_multiScreenWorker, &MultiScreenWorker::requestUpdateDragArea, this, &MainWindow::resetDragWindow);