diff --git a/frame/util/docksettings.cpp b/frame/util/docksettings.cpp index f774066b4..112ce7254 100644 --- a/frame/util/docksettings.cpp +++ b/frame/util/docksettings.cpp @@ -507,9 +507,8 @@ void DockSettings::updateFrontendGeometry() resetFrontendGeometry(); } -void DockSettings::setDockScreen(const QString &scrName) +bool DockSettings::setDockScreen(const QString &scrName) { - m_isMouseMoveCause = true; QList monitors = m_monitors.keys(); for (Monitor *monitor : monitors) { if (monitor && monitor->name() == scrName) { @@ -517,6 +516,25 @@ void DockSettings::setDockScreen(const QString &scrName) break; } } + + bool canBeDock = false; + switch (m_position) { + case Top: + canBeDock = m_mouseCauseDockScreen->dockPosition().topDock; + break; + case Right: + canBeDock = m_mouseCauseDockScreen->dockPosition().rightDock; + break; + case Bottom: + canBeDock = m_mouseCauseDockScreen->dockPosition().bottomDock; + break; + case Left: + canBeDock = m_mouseCauseDockScreen->dockPosition().leftDock; + break; + } + m_isMouseMoveCause = canBeDock; + + return canBeDock; } void DockSettings::onOpacityChanged(const double value) diff --git a/frame/util/docksettings.h b/frame/util/docksettings.h index 954a12d95..ff83678b6 100644 --- a/frame/util/docksettings.h +++ b/frame/util/docksettings.h @@ -73,7 +73,7 @@ public: void showDockSettingsMenu(); void updateFrontendGeometry(); - void setDockScreen(const QString &scrName); + bool setDockScreen(const QString &scrName); QString ¤tDockScreen() { return m_currentScreen; } QSize m_mainWindowSize; diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index bb289b862..4bc2b1580 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -1049,8 +1049,8 @@ void MainWindow::onRegionMonitorChanged(int x, int y, const QString &key) } else { // 移动Dock至相应屏相应位置 m_mouseCauseDock = true; - m_settings->setDockScreen(screen->name()); - positionChanged(m_curDockPos, m_curDockPos); + if (m_settings->setDockScreen(screen->name())) + positionChanged(m_curDockPos, m_curDockPos); } }