fix: 任务栏位置调整左边,摩灯窗口还是从底部出来

删除定时器,使用监听Dock的FrontendWindowRect change信号,重新更新IconGeometries

Log: 魔灯效果下,窗口效果跟随任务栏位置
Bug: https://pms.uniontech.com/zentao/bug-view-44736.html
Change-Id: I5e6caf7872dc37c34d8e5fb99676d7b35940dff3
This commit is contained in:
chengbo 2020-10-29 18:08:30 +08:00
parent 4d34d4152d
commit 5f36df4430
7 changed files with 13 additions and 0 deletions

View File

@ -48,6 +48,8 @@ DockItemManager::DockItemManager(QObject *parent)
connect(it, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow); connect(it, &AppItem::requestPreviewWindow, m_appInter, &DBusDock::PreviewWindow);
connect(it, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow); connect(it, &AppItem::requestCancelPreview, m_appInter, &DBusDock::CancelPreviewWindow);
connect(this, &DockItemManager::requestUpdateDockItem, it, &AppItem::requestUpdateEntryGeometries);
m_itemList.append(it); m_itemList.append(it);
} }

View File

@ -54,6 +54,8 @@ signals:
void requestWindowAutoHide(const bool autoHide) const; void requestWindowAutoHide(const bool autoHide) const;
void requestRefershWindowVisible() const; void requestRefershWindowVisible() const;
void requestUpdateDockItem() const;
public slots: public slots:
void refershItemsIcon(); void refershItemsIcon();
void sortPluginItems(); void sortPluginItems();

View File

@ -116,6 +116,8 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
connect(m_updateIconGeometryTimer, &QTimer::timeout, this, &AppItem::updateWindowIconGeometries, Qt::QueuedConnection); connect(m_updateIconGeometryTimer, &QTimer::timeout, this, &AppItem::updateWindowIconGeometries, Qt::QueuedConnection);
connect(m_retryObtainIconTimer, &QTimer::timeout, this, &AppItem::refershIcon, Qt::QueuedConnection); connect(m_retryObtainIconTimer, &QTimer::timeout, this, &AppItem::refershIcon, Qt::QueuedConnection);
connect(this, &AppItem::requestUpdateEntryGeometries, this, &AppItem::updateWindowIconGeometries);
updateWindowInfos(m_itemEntryInter->windowInfos()); updateWindowInfos(m_itemEntryInter->windowInfos());
refershIcon(); refershIcon();

View File

@ -63,6 +63,8 @@ signals:
void requestCancelPreview() const; void requestCancelPreview() const;
void dragReady(QWidget *dragWidget); void dragReady(QWidget *dragWidget);
void requestUpdateEntryGeometries() const;
private: private:
void moveEvent(QMoveEvent *e) override; void moveEvent(QMoveEvent *e) override;
void paintEvent(QPaintEvent *e) override; void paintEvent(QPaintEvent *e) override;

View File

@ -722,6 +722,7 @@ void MultiScreenWorker::onRequestUpdateFrontendGeometry()
#endif #endif
m_dockInter->SetFrontendWindowRect(int(rect.x()), int(rect.y()), uint(rect.width()), uint(rect.height())); m_dockInter->SetFrontendWindowRect(int(rect.x()), int(rect.y()), uint(rect.width()), uint(rect.height()));
emit requestUpdateDockEntry();
} }
void MultiScreenWorker::onRequestNotifyWindowManager() void MultiScreenWorker::onRequestNotifyWindowManager()

View File

@ -287,6 +287,8 @@ signals:
void requestStopShowAni(); void requestStopShowAni();
void requestStopHideAni(); void requestStopHideAni();
void requestUpdateDockEntry();
public slots: public slots:
void onAutoHideChanged(bool autoHide); void onAutoHideChanged(bool autoHide);
/** /**

View File

@ -296,6 +296,8 @@ void MainWindow::initConnections()
connect(m_multiScreenWorker, &MultiScreenWorker::opacityChanged, this, &MainWindow::setMaskAlpha, Qt::QueuedConnection); connect(m_multiScreenWorker, &MultiScreenWorker::opacityChanged, this, &MainWindow::setMaskAlpha, Qt::QueuedConnection);
connect(m_multiScreenWorker, &MultiScreenWorker::displayModeChanegd, this, &MainWindow::adjustShadowMask, 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); connect(m_multiScreenWorker, &MultiScreenWorker::requestUpdateDragArea, this, &MainWindow::resetDragWindow);