From 7ef4d5dc910550419a1f6216b87afaf791c66e7a Mon Sep 17 00:00:00 2001 From: ssk Date: Tue, 20 Sep 2022 15:18:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=A7=8B=E7=BB=88?= =?UTF-8?q?=E9=9A=90=E8=97=8F=E4=BB=BB=E5=8A=A1=E6=A0=8F=E7=9A=84=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= =?UTF-8?q?=20(#694)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在部分时机,例如,来回切换主屏,任务栏在设置始终隐藏后仍然会显示 这是因为之前wayland下的修改,会强制显示任务栏,避免任务栏界面被qwayland库的接口隐藏 Log: 修复始终隐藏任务栏的配置项失效的问题 Task: https://pms.uniontech.com/task-view-194931.html Influence: 任务栏的始终隐藏配置 Change-Id: Ib3f8070445a511c523f116b1668969bfd20f4690 --- frame/window/mainwindow.cpp | 12 ++++++++++++ frame/window/mainwindow.h | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/frame/window/mainwindow.cpp b/frame/window/mainwindow.cpp index b96db5680..de89c26d5 100755 --- a/frame/window/mainwindow.cpp +++ b/frame/window/mainwindow.cpp @@ -143,6 +143,7 @@ void MainWindow::launch() bool showDock = true; if (m_dconfig.data()->isValid()) showDock = !m_dconfig.data()->value("alwaysHideDock", false).toBool(); + qApp->setProperty("ALWAYS_HIDE_DOCK", !showDock); setVisible(showDock); if (!showDock && m_multiScreenWorker->dockInter()) { m_multiScreenWorker->dockInter()->setHideMode(KeepHidden); @@ -298,6 +299,7 @@ void MainWindow::initComponents() connect(m_dconfig.data(), &DConfig::valueChanged, this, [this] (const QString &key) { if (key == "alwaysHideDock") { const bool showDock = !m_dconfig.data()->value(key, false).toBool(); + qApp->setProperty("ALWAYS_HIDE_DOCK", !showDock); setVisible(showDock); if (!showDock && m_multiScreenWorker->dockInter()) { m_multiScreenWorker->dockInter()->setHideMode(KeepHidden); @@ -678,3 +680,13 @@ void MainWindow::sendNotifications() .call(); }); } + +void MainWindow::setVisible(bool visible) +{ + // 设置了始终隐藏的情况下,任务栏将永远不显示 + if (visible && qApp->property("ALWAYS_HIDE_DOCK").toBool()) { + return; + } + + return DBlurEffectWidget::setVisible(visible); +} diff --git a/frame/window/mainwindow.h b/frame/window/mainwindow.h index 5ca8d31f2..3d399dce4 100644 --- a/frame/window/mainwindow.h +++ b/frame/window/mainwindow.h @@ -140,6 +140,7 @@ private: class MainWindow : public DBlurEffectWidget { Q_OBJECT + friend class MainPanelControl; public: explicit MainWindow(QWidget *parent = nullptr); @@ -149,7 +150,7 @@ public: void setGeometry(const QRect &rect); void sendNotifications(); - friend class MainPanelControl; + void setVisible(bool visible) override; MainPanelControl *panel() {return m_mainPanel;}