Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions panels/dock/taskmanager/taskmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,14 @@ bool TaskManager::init()
m_windowFullscreen = isFullscreen;
emit windowFullscreenChanged(isFullscreen);
});

// 设置preview opacity
DS_NAMESPACE::DAppletBridge appearanceBridge("org.deepin.ds.dde-appearance");
auto appearanceApplet = appearanceBridge.applet();
if (appearanceApplet) {
modifyOpacityChanged();
connect(appearanceApplet, SIGNAL(opacityChanged()), this, SLOT(modifyOpacityChanged()));
}
return true;
}

Expand Down Expand Up @@ -418,6 +426,19 @@ void TaskManager::activateWindow(uint32_t windowID)
#endif
}

void TaskManager::modifyOpacityChanged()
{
DS_NAMESPACE::DAppletBridge appearanceBridge("org.deepin.ds.dde-appearance");
auto appearanceApplet = appearanceBridge.applet();
if (appearanceApplet) {
double opacity = appearanceApplet->property("opacity").toReal();
auto x11Monitor = qobject_cast<X11WindowMonitor*>(m_windowMonitor.data());
x11Monitor->setPreviewOpacity(opacity);
}else{
qWarning() << "modifyOpacityChanged: appearanceApplet is null";
}
}

D_APPLET_CLASS(TaskManager)
}

Expand Down
1 change: 1 addition & 0 deletions panels/dock/taskmanager/taskmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ class TaskManager : public DS_NAMESPACE::DContainment, public AbstractTaskManage

private Q_SLOTS:
void handleWindowAdded(QPointer<AbstractWindow> window);
void modifyOpacityChanged();

private:
void loadDockedAppItems();
Expand Down
10 changes: 10 additions & 0 deletions panels/dock/taskmanager/x11windowmonitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ bool XcbEventFilter::nativeEventFilter(const QByteArray &eventType, void *messag

X11WindowMonitor::X11WindowMonitor(QObject* parent)
: AbstractWindowMonitor(parent)
, m_opacity(0.2)
{
monitor = this;
connect(this, &X11WindowMonitor::windowMapped, this, &X11WindowMonitor::onWindowMapped);
Expand Down Expand Up @@ -109,6 +110,7 @@ void X11WindowMonitor::showItemPreview(const QPointer<AppItem> &item, QObject* r

if (m_windowPreview.isNull()) {
m_windowPreview.reset(new X11WindowPreviewContainer(this));
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
m_windowPreview->windowHandle()->setTransientParent(qobject_cast<QWindow *>(relativePositionItem));
}

Expand Down Expand Up @@ -141,6 +143,14 @@ void X11WindowMonitor::cancelPreviewWindow()
.call().waitForFinished();
}

void X11WindowMonitor::setPreviewOpacity(double opacity)
{
m_opacity = opacity;
if (!m_windowPreview.isNull()) {
m_windowPreview->setMaskAlpha(static_cast<int>(m_opacity * 255));
}
}

void X11WindowMonitor::onWindowMapped(xcb_window_t xcb_window)
{
auto window = m_windows.value(xcb_window, nullptr);
Expand Down
3 changes: 3 additions & 0 deletions panels/dock/taskmanager/x11windowmonitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class X11WindowMonitor : public AbstractWindowMonitor
virtual void hideItemPreview() override;
void previewWindow(uint32_t winId);
void cancelPreviewWindow();
void setPreviewOpacity(double opacity);

Q_SIGNALS:
void windowMapped(xcb_window_t window);
Expand All @@ -62,5 +63,7 @@ private Q_SLOTS:
QScopedPointer<XcbEventFilter> m_xcbEventFilter;
QScopedPointer<X11WindowPreviewContainer> m_windowPreview;
QHash<xcb_window_t, QSharedPointer<X11Window>> m_windows;
double m_opacity;

};
}