Skip to content

Commit fdd1961

Browse files
committed
feat: add preview follows the system opacity.
as title. PMS-BUG-314371
1 parent 50edcae commit fdd1961

File tree

5 files changed

+36
-1
lines changed

5 files changed

+36
-1
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: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage
101101
Q_INVOKABLE void setAppItemWindowIconGeometry(const QString& appid, QObject* relativePositionItem, const int& x1, const int& y1, const int& x2, const int& y2);
102102
Q_INVOKABLE void activateWindow(uint32_t windowID);
103103

104+
104105
Q_SIGNALS:
105106
void dataModelChanged();
106107
void windowSplitChanged();
@@ -109,6 +110,7 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage
109110

110111
private Q_SLOTS:
111112
void handleWindowAdded(QPointer<AbstractWindow> window);
113+
void modifyOpacityChanged();
112114

113115
private:
114116
void loadDockedAppItems();

panels/dock/taskmanager/x11preview.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,6 @@ private Q_SLOTS:
114114
QPointer<AppItem> m_previewItem;
115115

116116
QString m_previewTitleStr;
117+
117118
};
118-
119119
}

panels/dock/taskmanager/x11windowmonitor.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ void X11WindowMonitor::showItemPreview(const QPointer<AppItem> &item, QObject* r
109109

110110
if (m_windowPreview.isNull()) {
111111
m_windowPreview.reset(new X11WindowPreviewContainer(this));
112+
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
112113
m_windowPreview->windowHandle()->setTransientParent(qobject_cast<QWindow *>(relativePositionItem));
113114
}
114115

@@ -141,6 +142,14 @@ void X11WindowMonitor::cancelPreviewWindow()
141142
.call().waitForFinished();
142143
}
143144

145+
void X11WindowMonitor::setPreviewOpacity(double opacity)
146+
{
147+
m_opacity = opacity;
148+
if (!m_windowPreview.isNull()) {
149+
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
150+
}
151+
}
152+
144153
void X11WindowMonitor::onWindowMapped(xcb_window_t xcb_window)
145154
{
146155
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)