Skip to content

Commit 9abb8fd

Browse files
wjyrichdeepin-bot[bot]
authored andcommitted
feat: add preview follows the system opacity.
as title. PMS-BUG-314371
1 parent 4c19b2d commit 9abb8fd

File tree

4 files changed

+35
-0
lines changed

4 files changed

+35
-0
lines changed

panels/dock/taskmanager/taskmanager.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,14 @@ bool TaskManager::init()
152152
m_windowFullscreen = isFullscreen;
153153
emit windowFullscreenChanged(isFullscreen);
154154
});
155+
156+
// 设置preview opacity
157+
DS_NAMESPACE::DAppletBridge appearanceBridge("org.deepin.ds.dde-appearance");
158+
auto appearanceApplet = appearanceBridge.applet();
159+
if (appearanceApplet) {
160+
modifyOpacityChanged();
161+
connect(appearanceApplet, SIGNAL(opacityChanged()), this, SLOT(modifyOpacityChanged()));
162+
}
155163
return true;
156164
}
157165

@@ -418,6 +426,19 @@ void TaskManager::activateWindow(uint32_t windowID)
418426
#endif
419427
}
420428

429+
void TaskManager::modifyOpacityChanged()
430+
{
431+
DS_NAMESPACE::DAppletBridge appearanceBridge("org.deepin.ds.dde-appearance");
432+
auto appearanceApplet = appearanceBridge.applet();
433+
if (appearanceApplet) {
434+
double opacity = appearanceApplet->property("opacity").toReal();
435+
auto x11Monitor = qobject_cast<X11WindowMonitor*>(m_windowMonitor.data());
436+
x11Monitor->setPreviewOpacity(opacity);
437+
}else{
438+
qWarning() << "modifyOpacityChanged: appearanceApplet is null";
439+
}
440+
}
441+
421442
D_APPLET_CLASS(TaskManager)
422443
}
423444

panels/dock/taskmanager/taskmanager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage
109109

110110
private Q_SLOTS:
111111
void handleWindowAdded(QPointer<AbstractWindow> window);
112+
void modifyOpacityChanged();
112113

113114
private:
114115
void loadDockedAppItems();

panels/dock/taskmanager/x11windowmonitor.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *messag
4545

4646
X11WindowMonitor::X11WindowMonitor(QObject* parent)
4747
: AbstractWindowMonitor(parent)
48+
, m_opacity(0.2)
4849
{
4950
monitor = this;
5051
connect(this, &X11WindowMonitor::windowMapped, this, &X11WindowMonitor::onWindowMapped);
@@ -109,6 +110,7 @@ void X11WindowMonitor::showItemPreview(const QPointer<AppItem> &item, QObject* r
109110

110111
if (m_windowPreview.isNull()) {
111112
m_windowPreview.reset(new X11WindowPreviewContainer(this));
113+
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
112114
m_windowPreview->windowHandle()->setTransientParent(qobject_cast<QWindow *>(relativePositionItem));
113115
}
114116

@@ -141,6 +143,14 @@ void X11WindowMonitor::cancelPreviewWindow()
141143
.call().waitForFinished();
142144
}
143145

146+
void X11WindowMonitor::setPreviewOpacity(double opacity)
147+
{
148+
m_opacity = opacity;
149+
if (!m_windowPreview.isNull()) {
150+
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
151+
}
152+
}
153+
144154
void X11WindowMonitor::onWindowMapped(xcb_window_t xcb_window)
145155
{
146156
auto window = m_windows.value(xcb_window, nullptr);

panels/dock/taskmanager/x11windowmonitor.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class X11WindowMonitor : public AbstractWindowMonitor
4141
virtual void hideItemPreview() override;
4242
void previewWindow(uint32_t winId);
4343
void cancelPreviewWindow();
44+
void setPreviewOpacity(double opacity);
4445

4546
Q_SIGNALS:
4647
void windowMapped(xcb_window_t window);
@@ -62,5 +63,7 @@ private Q_SLOTS:
6263
QScopedPointer<XcbEventFilter> m_xcbEventFilter;
6364
QScopedPointer<X11WindowPreviewContainer> m_windowPreview;
6465
QHash<xcb_window_t, QSharedPointer<X11Window>> m_windows;
66+
double m_opacity;
67+
6568
};
6669
}

0 commit comments

Comments
 (0)