diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index 04d08dd96..3a14992d7 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -499,6 +499,8 @@ void DockSettings::resetFrontendGeometry() m_frontendRect = QRect(p.x(), p.y(), w, h); m_dockInter->SetFrontendWindowRect(p.x(), p.y(), w, h); + + emit requestUpdateDockGeometry(m_frontendRect); } void DockSettings::updateFrontendGeometry() diff --git a/frame/util/docksettings.h b/frame/util/docksettings.h index e030e61a5..f247a0a0d 100644 --- a/frame/util/docksettings.h +++ b/frame/util/docksettings.h @@ -95,6 +95,7 @@ signals: void trayCountChanged() const; // 分标率发生变化,需要更新XEventMonitor的监视区域 void requestUpdateRegionWatch(); + void requestUpdateDockGeometry(const QRect &rect); public slots: void updateGeometry(); diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index 1b68d3015..59eccded0 100644 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -306,7 +306,7 @@ bool MainWindow::event(QEvent *e) switch (e->type()) { case QEvent::Move: if (!e->spontaneous()) - QTimer::singleShot(1, this, &MainWindow::positionCheck); + QTimer::singleShot(100, this, &MainWindow::positionCheck); break; default:; } @@ -824,7 +824,6 @@ void MainWindow::adjustShadowMask() DStyleHelper dstyle(style()); const int radius = dstyle.pixelMetric(DStyle::PM_TopLevelWindowRadius); - m_platformWindowHandle.setWindowRadius(composite && isFasion ? radius : 0); } @@ -839,7 +838,9 @@ void MainWindow::positionCheck() return; // this may cause some position error and animation caton - //internalMove(); + bool isHide = m_settings->hideState() == Hide && !testAttribute(Qt::WA_UnderMouse); + const QRect windowRect = m_settings->windowRect(m_dockPosition, isHide); + internalMove(windowRect.topLeft()); } void MainWindow::onDbusNameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOwner)