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;}