diff --git a/panels/dock/tray/package/TrayContainer.qml b/panels/dock/tray/package/TrayContainer.qml index 0677a2b8c..a67cfd6b9 100644 --- a/panels/dock/tray/package/TrayContainer.qml +++ b/panels/dock/tray/package/TrayContainer.qml @@ -142,7 +142,13 @@ Item { anchors.fill: parent keys: ["text/x-dde-shell-tray-dnd-surfaceId"] onEntered: function (dragEvent) { - console.log(dragEvent.getDataAsString("text/x-dde-shell-tray-dnd-surfaceId")) + let surfaceId = dragEvent.getDataAsString("text/x-dde-shell-tray-dnd-surfaceId") + console.log(surfaceId) + if (DDT.TraySortOrderModel.isDisplayedSurface(surfaceId)) { + dragEvent.accepted = false + } else { + dragEvent.accepted = true + } } onPositionChanged: function (dragEvent) { diff --git a/panels/dock/tray/traysortordermodel.cpp b/panels/dock/tray/traysortordermodel.cpp index 4bf80531b..bc0ac6a67 100644 --- a/panels/dock/tray/traysortordermodel.cpp +++ b/panels/dock/tray/traysortordermodel.cpp @@ -206,6 +206,11 @@ void TraySortOrderModel::setSurfaceVisible(const QString &surfaceId, bool visibl updateVisualIndexes(); } +bool TraySortOrderModel::isDisplayedSurface(const QString &surfaceId) const +{ + return !m_hiddenIds.contains(surfaceId); +} + QStandardItem *TraySortOrderModel::findItemByVisualIndex(int visualIndex, VisualSections visualSection) const { QStandardItem * result = nullptr; diff --git a/panels/dock/tray/traysortordermodel.h b/panels/dock/tray/traysortordermodel.h index 796506365..e59e2577d 100644 --- a/panels/dock/tray/traysortordermodel.h +++ b/panels/dock/tray/traysortordermodel.h @@ -61,6 +61,7 @@ class TraySortOrderModel : public QStandardItemModel Q_INVOKABLE bool dropToStashTray(const QString & draggedSurfaceId, int dropVisualIndex, bool isBefore); Q_INVOKABLE bool dropToDockTray(const QString & draggedSurfaceId, int dropVisualIndex, bool isBefore); Q_INVOKABLE void setSurfaceVisible(const QString & surfaceId, bool visible); + Q_INVOKABLE bool isDisplayedSurface(const QString &surfaceId) const; signals: void collapsedChanged(bool);