diff --git a/panels/dock/taskmanager/x11preview.cpp b/panels/dock/taskmanager/x11preview.cpp index 6611fc1a6..ecbdc0fac 100644 --- a/panels/dock/taskmanager/x11preview.cpp +++ b/panels/dock/taskmanager/x11preview.cpp @@ -391,6 +391,12 @@ class AppItemWindowDeletegate : public QAbstractItemDelegate }; +const QString AppearanceService = QStringLiteral("org.deepin.dde.Appearance1"); +const QString AppearancePath = QStringLiteral("/org/deepin/dde/Appearance1"); +const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); +const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); +const QString OpacityStr = QStringLiteral("Opacity"); + X11WindowPreviewContainer::X11WindowPreviewContainer(X11WindowMonitor* monitor, QWidget *parent) : DBlurEffectWidget(parent) , m_direction(0) @@ -407,6 +413,8 @@ X11WindowPreviewContainer::X11WindowPreviewContainer(X11WindowMonitor* monitor, setMouseTracking(true); initUI(); + QDBusConnection::sessionBus().connect(AppearanceService, AppearancePath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); + connect(m_hideTimer, &QTimer::timeout, this, &X11WindowPreviewContainer::callHide); connect(m_closeAllButton, &DIconButton::clicked, this, [this](){ @@ -428,6 +436,17 @@ X11WindowPreviewContainer::X11WindowPreviewContainer(X11WindowMonitor* monitor, } +void X11WindowPreviewContainer::onPropertiesChanged(const QDBusMessage &message) +{ + QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); + for (QVariantMap::const_iterator it = changedProps.cbegin(); it != changedProps.cend(); ++it) { + if (it.key().toLatin1() == OpacityStr) { + setMaskAlpha(it.value().toFloat() * 255); + return; + } + } +} + void X11WindowPreviewContainer::showPreview(const QPointer &item, const QPointer &window, int32_t previewXoffset, int32_t previewYoffset, uint32_t direction) { if (!m_previewItem.isNull()) { diff --git a/panels/dock/taskmanager/x11preview.h b/panels/dock/taskmanager/x11preview.h index 3cba3ac42..8db8a0ec7 100644 --- a/panels/dock/taskmanager/x11preview.h +++ b/panels/dock/taskmanager/x11preview.h @@ -17,6 +17,7 @@ #include #include #include +#include DWIDGET_USE_NAMESPACE @@ -89,6 +90,7 @@ public Q_SLOTS: private Q_SLOTS: void updateOrientation(); void callHide(); + void onPropertiesChanged(const QDBusMessage &message); private: bool m_isPreviewEntered;