From 478f5646312f07e222b3fb0499ca62b54c125049 Mon Sep 17 00:00:00 2001 From: chenhongtao Date: Tue, 30 Jan 2024 14:40:03 +0800 Subject: [PATCH] fix: dock will not auto hide after set size Issue: https://github.com/linuxdeepin/developer-center/issues/7129 Log: --- frame/util/multiscreenworker.cpp | 16 +++++++++++++++- frame/util/multiscreenworker.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/frame/util/multiscreenworker.cpp b/frame/util/multiscreenworker.cpp index 4ea67e850..69cc3c8bb 100644 --- a/frame/util/multiscreenworker.cpp +++ b/frame/util/multiscreenworker.cpp @@ -142,6 +142,7 @@ void MultiScreenWorker::onExtralRegionMonitorChanged(int x, int y, const QString void MultiScreenWorker::updateDisplay() { + tryToHideDock(); //1、屏幕停靠信息, //2、任务栏当前显示在哪个屏幕也需要更新 //3、任务栏高度或宽度调整的拖拽区域, @@ -548,7 +549,7 @@ void MultiScreenWorker::onRequestDelayShowDock() void MultiScreenWorker::initMembers() { - m_monitorUpdateTimer->setInterval(100); + m_monitorUpdateTimer->setInterval(1000); m_monitorUpdateTimer->setSingleShot(true); m_delayWakeTimer->setSingleShot(true); @@ -957,3 +958,16 @@ void MultiScreenWorker::tryToShowDock(int eventX, int eventY) } } } + +void MultiScreenWorker::tryToHideDock() +{ + if (hideMode() == HideMode::KeepShowing) { + return; + } + + auto mousePos = QCursor::pos(); + const QString ¤tScreen = DOCK_SCREEN->current(); + if (isCursorOut(mousePos.x(), mousePos.y())) { + Q_EMIT requestPlayAnimation(currentScreen, m_position, Dock::AniAction::Hide); + } +} diff --git a/frame/util/multiscreenworker.h b/frame/util/multiscreenworker.h index 4d78b9de8..5d85a3f1e 100644 --- a/frame/util/multiscreenworker.h +++ b/frame/util/multiscreenworker.h @@ -153,6 +153,7 @@ private: void reInitDisplayData(); void tryToShowDock(int eventX, int eventY); + void tryToHideDock(); void changeDockPosition(QString fromScreen, QString toScreen, const Position &fromPos, const Position &toPos); void resetDockScreen();