From 0e639ff24eab8a85efe5eef3be3004eba1e2cfc7 Mon Sep 17 00:00:00 2001 From: zhaoyingzhen Date: Mon, 25 Aug 2025 17:37:37 +0800 Subject: [PATCH] fix: pluginVisibleChanged signal needs to be sent when dragging the plugin docked to tray as title Log: as title Pms: BUG-299881 --- panels/dock/tray/traysortordermodel.cpp | 35 +++++++++++++++++++++++++ panels/dock/tray/traysortordermodel.h | 1 + 2 files changed, 36 insertions(+) diff --git a/panels/dock/tray/traysortordermodel.cpp b/panels/dock/tray/traysortordermodel.cpp index 330ef2b3a..53a7e4ffa 100644 --- a/panels/dock/tray/traysortordermodel.cpp +++ b/panels/dock/tray/traysortordermodel.cpp @@ -6,6 +6,9 @@ #include "constants.h" #include +#include +#include + #include namespace docktray { @@ -116,6 +119,7 @@ bool TraySortOrderModel::dropToDockTray(const QString &draggedSurfaceId, int dro auto deferUpdateVisualIndex = qScopeGuard([this](){updateVisualIndexes();}); if (m_hiddenIds.contains(draggedSurfaceId)) { m_hiddenIds.removeOne(draggedSurfaceId); + handlePluginVisibleChanged(draggedSurfaceId, true); } if (dropOnSurfaceId == QLatin1String("internal/action-show-stash")) { @@ -205,6 +209,7 @@ void TraySortOrderModel::setSurfaceVisible(const QString &surfaceId, bool visibl m_hiddenIds.append(surfaceId); } } + handlePluginVisibleChanged(surfaceId, visible); updateVisualIndexes(); } @@ -277,6 +282,7 @@ QString TraySortOrderModel::findSection(const QString &surfaceId, const QString ) { if (!m_hiddenIds.contains(surfaceId)) { m_hiddenIds.append(surfaceId); + handlePluginVisibleChanged(surfaceId, false); } } @@ -516,4 +522,33 @@ void TraySortOrderModel::onAvailableSurfacesChanged() saveDataToDConfig(); } +void TraySortOrderModel::handlePluginVisibleChanged(const QString &surfaceId, bool visible) +{ + QStringList parts = surfaceId.split("::"); + if (parts.size() != 2 || parts.at(1).isEmpty()) { + qWarning() << "Invalid surfaceId format:" << surfaceId; + return; + } + + QDBusMessage msg = QDBusMessage::createMethodCall( + "org.deepin.dde.Dock1", + "/org/deepin/dde/Dock1", + "org.deepin.dde.Dock1", + "setItemOnDock" + ); + + const QString DockQuickPlugins = "Dock_Quick_Plugins"; + msg << DockQuickPlugins + << parts.last() + << visible; + + QDBusMessage reply = QDBusConnection::sessionBus().call(msg); + + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning() << "DBus call failed:" << reply.errorMessage(); + } else { + qDebug() << "setItemOnDock call success"; + } +} + } diff --git a/panels/dock/tray/traysortordermodel.h b/panels/dock/tray/traysortordermodel.h index 638d1537d..e21312a40 100644 --- a/panels/dock/tray/traysortordermodel.h +++ b/panels/dock/tray/traysortordermodel.h @@ -102,6 +102,7 @@ class TraySortOrderModel : public QStandardItemModel QString registerSurfaceId(const QVariantMap &surfaceData); void loadDataFromDConfig(); void saveDataToDConfig(); + void handlePluginVisibleChanged(const QString &surfaceId, bool visible); private slots: void onAvailableSurfacesChanged();