Skip to content

Commit 3e2bd99

Browse files
committed
fix: Adjust the effects level of kwin to Optimal-performance, multiTasks plugin can not hide
as title Log: as title Bug: https://pms.uniontech.com/bug-view-286871.html
1 parent 785ef25 commit 3e2bd99

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

panels/dock/multitaskview/multitaskview.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@
1515
#include <DGuiApplicationHelper>
1616

1717
DGUI_USE_NAMESPACE
18+
DCORE_USE_NAMESPACE
1819

1920
namespace dock {
2021

22+
constexpr int KWinOptimalPerformance = 4;
23+
const QString windowEffectTypeKey = QStringLiteral("user_type");
24+
2125
MultiTaskView::MultiTaskView(QObject *parent)
2226
: DApplet(parent)
2327
, m_iconName("deepin-multitasking-view")
@@ -26,6 +30,19 @@ MultiTaskView::MultiTaskView(QObject *parent)
2630
auto platformName = QGuiApplication::platformName();
2731
if (QStringLiteral("wayland") == platformName) {
2832
m_multitaskview.reset(new TreeLandMultitaskview);
33+
} else {
34+
m_kWinCompositingConfig = DConfig::create("org.kde.kwin", "org.kde.kwin.compositing", QString(), this);
35+
m_kWinEffect = m_kWinCompositingConfig->value(windowEffectTypeKey).toInt() != KWinOptimalPerformance;
36+
37+
connect(m_kWinCompositingConfig, &DConfig::valueChanged, this, [=] (const QString &key) {
38+
if (key == windowEffectTypeKey) {
39+
bool kWinEffect = m_kWinCompositingConfig->value(windowEffectTypeKey).toInt() != KWinOptimalPerformance;
40+
if (kWinEffect != m_kWinEffect) {
41+
m_kWinEffect = kWinEffect;
42+
Q_EMIT visibleChanged();
43+
}
44+
}
45+
});
2946
}
3047
}
3148

@@ -65,7 +82,7 @@ void MultiTaskView::setIconName(const QString& iconName)
6582

6683
bool MultiTaskView::visible() const
6784
{
68-
return m_visible && DWindowManagerHelper::instance()->hasComposite();
85+
return m_kWinEffect && m_visible && DWindowManagerHelper::instance()->hasComposite();
6986
}
7087

7188
DockItemInfo MultiTaskView::dockItemInfo()

panels/dock/multitaskview/multitaskview.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
#include "dsglobal.h"
1010
#include "treelandmultitaskview.h"
1111

12+
#include <DConfig>
13+
1214
namespace dock {
1315

1416
class MultiTaskView : public DS_NAMESPACE::DApplet
@@ -36,9 +38,11 @@ class MultiTaskView : public DS_NAMESPACE::DApplet
3638
void visibleChanged();
3739

3840
private:
39-
bool m_visible;
41+
bool m_visible = true;
42+
bool m_kWinEffect = true;
4043
QString m_iconName;
4144
QScopedPointer<TreeLandMultitaskview> m_multitaskview;
45+
Dtk::Core::DConfig *m_kWinCompositingConfig = nullptr;
4246
};
4347

4448
}

0 commit comments

Comments
 (0)