From 44c113bdc4092a6237da91c1cacbd3c3293cc30e Mon Sep 17 00:00:00 2001 From: Yutao Meng Date: Fri, 26 Apr 2024 14:35:31 +0800 Subject: [PATCH] feat: Hide multitask button when composition is disabled Issue: https://github.com/linuxdeepin/developer-center/issues/8224 Log: Hide multitask button when composition is disabled Signed-off-by: Yutao Meng --- panels/dock/multitaskview/multitaskview.cpp | 10 +++++++++- panels/dock/multitaskview/multitaskview.h | 3 +++ panels/dock/multitaskview/package/multitaskview.qml | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/panels/dock/multitaskview/multitaskview.cpp b/panels/dock/multitaskview/multitaskview.cpp index 407e7ec2b..ba0e1b625 100644 --- a/panels/dock/multitaskview/multitaskview.cpp +++ b/panels/dock/multitaskview/multitaskview.cpp @@ -7,6 +7,9 @@ #include "pluginfactory.h" #include +#include + +DGUI_USE_NAMESPACE namespace dock { @@ -14,7 +17,7 @@ MultiTaskView::MultiTaskView(QObject *parent) : DApplet(parent) , m_iconName("deepin-multitasking-view") { - + connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasCompositeChanged, this, &MultiTaskView::compositeStateChanged); } bool MultiTaskView::init() @@ -46,6 +49,11 @@ void MultiTaskView::setIconName(const QString& iconName) } } +bool MultiTaskView::hasComposite() +{ + return DWindowManagerHelper::instance()->hasComposite(); +} + D_APPLET_CLASS(MultiTaskView) } diff --git a/panels/dock/multitaskview/multitaskview.h b/panels/dock/multitaskview/multitaskview.h index 85e40b589..a2a931e96 100644 --- a/panels/dock/multitaskview/multitaskview.h +++ b/panels/dock/multitaskview/multitaskview.h @@ -13,17 +13,20 @@ class MultiTaskView : public DS_NAMESPACE::DApplet { Q_OBJECT Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged FINAL) + Q_PROPERTY(bool hasComposite READ hasComposite NOTIFY compositeStateChanged) public: explicit MultiTaskView(QObject *parent = nullptr); virtual bool init() override; QString iconName() const; void setIconName(const QString& iconName); + bool hasComposite(); Q_INVOKABLE void openWorkspace(); Q_SIGNALS: void iconNameChanged(); + void compositeStateChanged(); private: QString m_iconName; diff --git a/panels/dock/multitaskview/package/multitaskview.qml b/panels/dock/multitaskview/package/multitaskview.qml index 5ad113b53..242beb114 100644 --- a/panels/dock/multitaskview/package/multitaskview.qml +++ b/panels/dock/multitaskview/package/multitaskview.qml @@ -13,6 +13,7 @@ AppletItem { id: toggleworkspace property bool useColumnLayout: Panel.position % 2 property int dockOrder: 13 + property bool shouldVisible: Applet.hasComposite // 1:4 the distance between app : dock height; get width/height≈0.8 implicitWidth: useColumnLayout ? Panel.rootObject.dockSize : Panel.rootObject.dockItemMaxSize * 0.8 implicitHeight: useColumnLayout ? Panel.rootObject.dockItemMaxSize * 0.8 : Panel.rootObject.dockSize