diff -Nru ukui-sni-5.0.0.1/debian/changelog ukui-sni-5.0.0.3/debian/changelog
--- ukui-sni-5.0.0.1/debian/changelog	2024-12-27 16:33:06.000000000 +0800
+++ ukui-sni-5.0.0.3/debian/changelog	2025-02-24 10:27:21.000000000 +0800
@@ -1,3 +1,24 @@
+ukui-sni (5.0.0.3-ok0.1) huanghe; urgency=medium
+
+  * Issues: 无
+  * 其他改动:
+    - 修复拖拽托盘图标后被拖拽的图标位置异常的问题
+  * 其他改动影响域:
+    - 任务栏,托盘
+
+ -- youdiansaodongxi <guojiaqi@kylinos.cn>  Mon, 24 Feb 2025 10:27:21 +0800
+
+ukui-sni (5.0.0.2-ok0.1) huanghe; urgency=medium
+
+  * Issues: 无
+  * 其他改动:
+    - 按设计稿调整顶栏托盘图标UI
+    - 修改多屏托盘的显示逻辑,解决多屏托盘显示有遮挡的bug
+  * 其他改动影响域:
+    - 任务栏,托盘
+
+ -- youdiansaodongxi <guojiaqi@kylinos.cn>  Fri, 24 Jan 2025 14:43:40 +0800
+
 ukui-sni (5.0.0.1-ok0.1) huanghe; urgency=medium
 
   * Issues: 无
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/plugin/item-group-model.cpp ukui-sni-5.0.0.3/ukui-system-tray/plugin/item-group-model.cpp
--- ukui-sni-5.0.0.1/ukui-system-tray/plugin/item-group-model.cpp	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/plugin/item-group-model.cpp	2025-02-21 16:27:57.000000000 +0800
@@ -9,9 +9,9 @@
     QSortFilterProxyModel::setSourceModel(TrayItemsModel::instance());
     m_sourceModel = TrayItemsModel::instance();
     setFilterRole(TrayItemsModel::Row);
-    connect(m_sourceModel, &TrayItemsModel::separateIndexChanged, this, [this](){
-        invalidateFilter();
-    });
+    connect(m_sourceModel, &TrayItemsModel::separateIndexChanged, this, &ItemGroupModel::onSeparateIndexChanged);
+
+    setCurrentSeparateIndex(m_sourceModel->getSeparateIndex());
 }
 
 void ItemGroupModel::setModelType(GroupType type)
@@ -24,6 +24,31 @@
     return m_groupType;
 }
 
+int ItemGroupModel::currentSeparateIndex()
+{
+    return m_currentSeparateIndex;
+}
+
+void ItemGroupModel::setCurrentSeparateIndex(int index)
+{
+    if (index < 0) return;
+    m_currentSeparateIndex = index;
+    invalidateFilter();
+    Q_EMIT currentSeparateIndexChanged();
+}
+
+int ItemGroupModel::showCount()
+{
+    return m_showCount;
+}
+
+void ItemGroupModel::setShowCount(int index)
+{
+    m_showCount = index <= 0 ? 0 : index;
+    onShowCountChanged();
+    Q_EMIT showCountChanged();
+}
+
 void ItemGroupModel::onActivate(const QModelIndex &index)
 {
     m_sourceModel->activate(mapToSource(index));
@@ -49,14 +74,14 @@
     if (m_groupType == GroupType::Show) {
         return 0;
     } else if (m_groupType == GroupType::Fold) {
-        return m_sourceModel->getCurrentSeparateIndex() + 1;
+        return m_currentSeparateIndex + 1;
     }
 }
 
 int ItemGroupModel::groupEnd() const
 {
     if (m_groupType == GroupType::Show) {
-        return m_sourceModel->getCurrentSeparateIndex();
+        return m_currentSeparateIndex;
     } else if (m_groupType == GroupType::Fold) {
         return m_sourceModel->rowCount(QModelIndex()) - 1;
     }
@@ -65,10 +90,37 @@
 bool ItemGroupModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
 {
     if (m_groupType == GroupType::Show) {
-        return source_row >= 0 && source_row <= m_sourceModel->getCurrentSeparateIndex();
+        return source_row >= 0 && source_row <= m_currentSeparateIndex;
     } else if (m_groupType == GroupType::Fold) {
-        return source_row > m_sourceModel->getCurrentSeparateIndex() && source_row <= (m_sourceModel->rowCount(QModelIndex()) - 1);
+        return source_row > m_currentSeparateIndex && source_row <= (m_sourceModel->rowCount(QModelIndex()) - 1);
     }
     return true;
 }
 
+void ItemGroupModel::onShowCountChanged()
+{
+    if (m_showCount < m_currentSeparateIndex) {
+        if (m_showCount <= 0) {
+            setCurrentSeparateIndex(0);
+        } else {
+            setCurrentSeparateIndex(m_showCount);
+        }
+    } else {
+        if (m_currentSeparateIndex != m_sourceModel->getSeparateIndex()) {
+            if (m_sourceModel->getSeparateIndex() < m_showCount) {
+                setCurrentSeparateIndex(m_sourceModel->getSeparateIndex());
+            } else {
+                setCurrentSeparateIndex(m_showCount);
+            }
+        }
+    }
+    Q_EMIT currentSeparateIndexChanged();
+}
+
+void ItemGroupModel::onSeparateIndexChanged()
+{
+    setCurrentSeparateIndex(m_showCount < m_sourceModel->getSeparateIndex() ?
+                m_showCount : m_sourceModel->getSeparateIndex());
+    Q_EMIT currentSeparateIndexChanged();
+}
+
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/plugin/item-group-model.h ukui-sni-5.0.0.3/ukui-system-tray/plugin/item-group-model.h
--- ukui-sni-5.0.0.1/ukui-system-tray/plugin/item-group-model.h	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/plugin/item-group-model.h	2025-02-21 16:27:57.000000000 +0800
@@ -15,14 +15,25 @@
 class ItemGroupModel : public QSortFilterProxyModel
 {
     Q_OBJECT
+
+    Q_PROPERTY(GroupType modelType READ getModelType WRITE setModelType)
+    Q_PROPERTY(int currentSeparateIndex READ currentSeparateIndex WRITE setCurrentSeparateIndex NOTIFY currentSeparateIndexChanged)
+    Q_PROPERTY(int showCount READ showCount WRITE setShowCount NOTIFY showCountChanged)
 public:
     enum GroupType {Show, Fold};
     Q_ENUM(GroupType)
 
     explicit ItemGroupModel(QObject *parent = nullptr);
+
     void setModelType(GroupType type);
     GroupType getModelType();
 
+    int currentSeparateIndex();
+    void setCurrentSeparateIndex(int index);
+
+    int showCount();
+    void setShowCount(int index);
+
     QVariant data(const QModelIndex &index, int role) const override;
 
     Q_INVOKABLE void onActivate(const QModelIndex &index);
@@ -33,16 +44,25 @@
     Q_INVOKABLE int groupBegin() const;
     Q_INVOKABLE int groupEnd() const;
 
+Q_SIGNALS:
+    void currentSeparateIndexChanged();
+    void showCountChanged();
+
 protected:
     bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
 
 private:
+    void onShowCountChanged();
+    void onSeparateIndexChanged();
 
     QHash<QPersistentModelIndex, int> m_order;
     TrayItemsModel *m_sourceModel = nullptr;
     int m_groupBegin = 0;
     int m_groupEnd = 0;
     GroupType m_groupType = GroupType::Show;
+
+    int m_currentSeparateIndex = 0;
+    int m_showCount = 0;
 };
 
 #endif // ITEMGROUPMODEL_H
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/plugin/system-tray-plugin.cpp ukui-sni-5.0.0.3/ukui-system-tray/plugin/system-tray-plugin.cpp
--- ukui-sni-5.0.0.1/ukui-system-tray/plugin/system-tray-plugin.cpp	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/plugin/system-tray-plugin.cpp	2025-02-21 16:27:57.000000000 +0800
@@ -10,19 +10,11 @@
 void SystemTrayPlugin::registerTypes(const char *uri)
 {
     Q_ASSERT(QLatin1String(uri) == QLatin1String("org.ukui.systemTray"));
+
     qmlRegisterUncreatableType<ItemGroupModel>(uri,1,0,"ItemGroupModel", "");
+    qmlRegisterType<ItemGroupModel>(uri, 1, 0, "GroupModel");
 
     qmlRegisterSingletonType<TrayItemsModel>(uri,1,0,"ItemModel", [] (QQmlEngine *, QJSEngine *) -> QObject* {
         return TrayItemsModel::instance();
     });
-    qmlRegisterSingletonType<ItemGroupModel>(uri,1,0,"ShowModel", [] (QQmlEngine *, QJSEngine *) -> QObject* {
-        ItemGroupModel* showModel = new ItemGroupModel();
-        showModel->setModelType(ItemGroupModel::Show);
-        return showModel;
-    });
-    qmlRegisterSingletonType<ItemGroupModel>(uri,1,0,"FoldModel", [] (QQmlEngine *, QJSEngine *) -> QObject* {
-        ItemGroupModel* foldModel = new ItemGroupModel();
-        foldModel->setModelType(ItemGroupModel::Fold);
-        return foldModel;
-    });
 }
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/plugin/tray-items-model.cpp ukui-sni-5.0.0.3/ukui-system-tray/plugin/tray-items-model.cpp
--- ukui-sni-5.0.0.1/ukui-system-tray/plugin/tray-items-model.cpp	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/plugin/tray-items-model.cpp	2025-02-21 16:27:57.000000000 +0800
@@ -1,5 +1,6 @@
 #include "tray-items-model.h"
 #include "item-group-model.h"
+
 #include <config-loader.h>
 #include <QMetaEnum>
 #include <QDebug>
@@ -40,7 +41,6 @@
         m_config->setValue(QStringLiteral("separateIndex"), m_separateIndex);
     } else {
         m_separateIndex = m_config->getValue("separateIndex").toInt();
-        m_currentSeparateIndex = m_separateIndex;
     }
     //fixed items
     if (!data.contains(QStringLiteral("fixedItems"))) {
@@ -243,19 +243,15 @@
     setOrder(fromGroup->mapToSource(beginIndex), newOrder);
 }
 
-void TrayItemsModel::changeSeparateIndex(bool add, bool set)
+void TrayItemsModel::setSeparateIndex(int index)
 {
-    add ? m_currentSeparateIndex ++ : m_currentSeparateIndex--;
-    Q_EMIT separateIndexChanged();
-
-    if (set) {
-        if (m_separateIndex > m_item.length() - 1) {
-            m_separateIndex = m_item.length() - 1;
-        }
-        m_separateIndex = m_currentSeparateIndex;
-        m_config->setValue(QStringLiteral("separateIndex"), m_currentSeparateIndex);
-        m_config->forceSync();
+    m_separateIndex = index;
+    if (m_separateIndex > m_item.length() - 1) {
+        m_separateIndex = m_item.length() - 1;
     }
+    Q_EMIT separateIndexChanged();
+    m_config->setValue(QStringLiteral("separateIndex"), index);
+    m_config->forceSync();
 }
 
 void TrayItemsModel::setOrder(const QModelIndex &index, int order)
@@ -316,11 +312,6 @@
     m_config->forceSync();
 }
 
-int TrayItemsModel::getCurrentSeparateIndex()
-{
-    return m_currentSeparateIndex;
-}
-
 int TrayItemsModel::getSeparateIndex()
 {
     return m_separateIndex;
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/plugin/tray-items-model.h ukui-sni-5.0.0.3/ukui-system-tray/plugin/tray-items-model.h
--- ukui-sni-5.0.0.1/ukui-system-tray/plugin/tray-items-model.h	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/plugin/tray-items-model.h	2025-02-21 16:27:57.000000000 +0800
@@ -55,9 +55,9 @@
 
     Q_INVOKABLE void setOrderInGroup(ItemGroupModel *group, const QModelIndex &groupIndex, int order);
     Q_INVOKABLE void setOrderBetweenGroups(ItemGroupModel *fromGroup, const QModelIndex &beginIndex, ItemGroupModel *toGroup, int order);
-    Q_INVOKABLE void changeSeparateIndex(bool add, bool set);
-    Q_INVOKABLE int getCurrentSeparateIndex();
+    Q_INVOKABLE void setSeparateIndex(int index);
     Q_INVOKABLE int getSeparateIndex();
+
     void setOrder(const QModelIndex &index, int order);
 
 Q_SIGNALS:
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/FoldArea.qml ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/FoldArea.qml
--- ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/FoldArea.qml	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/FoldArea.qml	2025-02-21 16:27:57.000000000 +0800
@@ -7,18 +7,17 @@
 import org.ukui.quick.platform 1.0 as Platform
 
 DropArea {
-    property bool isEmpty: foldModel.count > 0 ? false : true
+    property bool isEmpty: foldAreaModel.count > 0 ? false : true
     property int sourceIndex
     property bool foldWindowVisible: false
     signal foldAreaDragFinshed(int selectIndex)
-    width: foldModel.count > 5 ? foldView.cellWidth * 5 + 8 : foldModel.count * foldView.cellWidth + 8
-    height: (foldModel.count % 5) === 0 ?
-                Math.floor((foldModel.count / 5)) * foldView.cellHeight + 8 : Math.floor((foldModel.count / 5) + 1) * foldView.cellHeight + 8
+    width: foldAreaModel.count > 5 ? foldView.cellWidth * 5 + 8 : foldAreaModel.count * foldView.cellWidth + 8
+    height: (foldAreaModel.count % 5) === 0 ?
+                Math.floor((foldAreaModel.count / 5)) * foldView.cellHeight + 8 : Math.floor((foldAreaModel.count / 5) + 1) * foldView.cellHeight + 8
 
     UkuiItems.StyleBackground {
         anchors.fill: parent
         paletteRole: Platform.Theme.Window
-        radius: Platform.Theme.maxRadius
 
         GridView {
             id: foldView
@@ -36,8 +35,8 @@
             }
 
             model: DelegateModel {
-                id: foldModel
-                model: FoldModel
+                id: foldAreaModel
+                model: foldModel
 
                 delegate: DropArea {
                     property int vIndex: DelegateModel.itemsIndex
@@ -52,12 +51,12 @@
 
                     onDropped: {
                         if (drag.source.rootId !== dropArea) return;
-                        ItemModel.setOrderInGroup(FoldModel, FoldModel.index(foldBase.sourceIndex, 0), drag.source.selectIndex);
+                        ItemModel.setOrderInGroup(foldModel, foldModel.index(foldBase.sourceIndex, 0), drag.source.selectIndex);
                     }
 
                     onEntered: {
                         if (drag.source.rootId !== dropArea) return;
-                        foldModel.items.move(drag.source.selectIndex, vIndex)
+                        foldAreaModel.items.move(drag.source.selectIndex, vIndex)
                     }
                     onExited: {
                         controlFold.isContain = false;
@@ -72,7 +71,7 @@
                         paletteRole: Platform.Theme.BrightText
                         alpha: controlFold.pressed && controlFold.isContain ? 0.1 : controlFold.isContain ? 0.05 : 0
 
-                        radius: Platform.Theme.maxRadius
+                        radius: Platform.Theme.normalRadius
                         TrayIcon {
                             id: controlFold
                             property int selectIndex: 0
@@ -135,10 +134,10 @@
 
                             onClicked: {
                                 if (mouse.button === Qt.LeftButton) {
-                                    foldModel.model.onActivate(foldModel.modelIndex(index));
+                                    foldAreaModel.model.onActivate(foldAreaModel.modelIndex(index));
                                 }
                                 if (mouse.button === Qt.RightButton) {
-                                    foldModel.model.onContextMenu(foldModel.modelIndex(index), foldDropArea);
+                                    foldAreaModel.model.onContextMenu(foldAreaModel.modelIndex(index), foldDropArea);
                                 }
                             }
 
@@ -158,7 +157,7 @@
                                     controlFold.parent = controlBaseFold;
                                     controlFold.opacity = 1
                                     if (foldBase.sourceIndex === vIndex) return;
-                                    ItemModel.setOrderInGroup(FoldModel, FoldModel.index(foldBase.sourceIndex, 0), vIndex);
+                                    ItemModel.setOrderInGroup(foldModel, foldModel.index(foldBase.sourceIndex, 0), vIndex);
                                 }
                             }
                             function toStartDrag() {
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/TrayIcon.qml ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/TrayIcon.qml
--- ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/TrayIcon.qml	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/TrayIcon.qml	2025-02-21 16:27:57.000000000 +0800
@@ -11,7 +11,7 @@
     property var appAttentionIcon
     property var appOverlayIcon
     property int iconRotation: 0
-    property real iconRatio: dropArea.onTopBar ? 2.5 : 2
+    property real iconRatio: dropArea.onTopBar ? 3 : 2
 
     Item {
         id: trayitem
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/TrayView.qml ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/TrayView.qml
--- ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/TrayView.qml	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/TrayView.qml	2025-02-21 16:27:57.000000000 +0800
@@ -42,31 +42,24 @@
         getShowCount();
     }
 
-    onShowCountChanged: {
-        if (showCount < ItemModel.getCurrentSeparateIndex()) {
-            while (showCount < ItemModel.getCurrentSeparateIndex()) {
-                if (ItemModel.getCurrentSeparateIndex() <= 0) break;
-                ItemModel.changeSeparateIndex(false, false);
-            }
-        } else {
-            if (ItemModel.getCurrentSeparateIndex() !== ItemModel.getSeparateIndex()) {
-                if (ItemModel.getSeparateIndex() < showCount) {
-                    while (ItemModel.getCurrentSeparateIndex() < ItemModel.getSeparateIndex()) {
-                        ItemModel.changeSeparateIndex(true, false);
-                    }
-                } else {
-                    while (ItemModel.getCurrentSeparateIndex() < showCount) {
-                        ItemModel.changeSeparateIndex(true, false);
-                    }
-                }
-            }
-        }
+    function getShowCount() {
+        dropArea.showCount = maxLength / (dropArea.itemShort + trayview.viewSpacing) - 2;
     }
 
-    function getShowCount() {
-        showCount = Math.min((maxLength / (dropArea.itemShort + trayview.viewSpacing) - 2), 11);
+    GroupModel {
+        id: showModel
+        modelType: ItemGroupModel.Show
+        showCount: dropArea.showCount
     }
 
+    GroupModel {
+        id: foldModel
+        modelType: ItemGroupModel.Fold
+        showCount: dropArea.showCount
+    }
+
+    Item {id: dragItem}
+
     Flow {
         id: flowArea
         anchors.verticalCenter: parent.verticalCenter
@@ -83,13 +76,13 @@
             onDropped: {
                 if (drag.source.rootId !== dropArea) return;
                 if (dragType === 1) {
-                    if (trayModel.count > showCount) return;
-                    ItemModel.setOrderInGroup(FoldModel, FoldModel.index(foldBase.sourceIndex,0), 0)
-                    ItemModel.changeSeparateIndex(true, true);
+                    if (trayModel.count > dropArea.showCount) return;
+                    ItemModel.setOrderInGroup(foldModel, foldModel.index(foldBase.sourceIndex,0), 0)
+                    ItemModel.setSeparateIndex(showModel.currentSeparateIndex + 1);
                 }
                 if (dragType === 0) {
-                    ItemModel.setOrderInGroup(ShowModel, ShowModel.index(trayview.sourceIndex, 0), trayModel.items.count - 1);
-                    ItemModel.changeSeparateIndex(false, true);
+                    ItemModel.setOrderInGroup(showModel, showModel.index(trayview.sourceIndex, 0), trayModel.items.count - 1);
+                    ItemModel.setSeparateIndex(showModel.currentSeparateIndex - 1);
                     dropArea.panelActive = false;
                 }
             }
@@ -102,14 +95,14 @@
                 anchors.fill: parent
                 paletteRole: Platform.Theme.BrightText
                 alpha: foldControl.containsPress ? 0.1 : foldControl.isContain ? 0.05 : 0
-                radius: Platform.Theme.maxRadius
+                radius: Platform.Theme.normalRadius
 
                 TrayIcon {
                     id: foldControl
                     property bool isContain: false
                     width: dropArea.itemWidth
                     height: dropArea.itemHeight
-                    appIcon: ShowModel.foldIcon()
+                    appIcon: showModel.foldIcon()
                     iconRotation: appIconRotation()
                     hoverEnabled: true
                     acceptedButtons: Qt.LeftButton | Qt.RightButton
@@ -193,11 +186,11 @@
                                                            dropArea.inserted = false;
                                                            if (trayview.itemAtIndex(dropArea.targetIndex).isFixed) return;
                                                            trayModel.items.remove(dropArea.targetIndex);
-                                                           ItemModel.setOrderBetweenGroups(FoldModel,
-                                                                                           FoldModel.index(dropArea.isOverLength ? fromIndex + 1 : fromIndex, 0),
-                                                                                           ShowModel,
+                                                           ItemModel.setOrderBetweenGroups(foldModel,
+                                                                                           foldModel.index(dropArea.isOverLength ? fromIndex + 1 : fromIndex, 0),
+                                                                                           showModel,
                                                                                            dropArea.targetIndex);
-                                                           ItemModel.changeSeparateIndex(true, true);
+                                                           ItemModel.setSeparateIndex(showModel.currentSeparateIndex + 1);
                                                        }
                                                    }
                                                }
@@ -233,7 +226,7 @@
             property int sortIndex
             property int sourceIndex
             property real viewWidth: 0
-            property int viewSpacing: 0
+            property int viewSpacing: dropArea.onTopBar ? 6 : 0
             height: dropArea.itemOrientation ? dropArea.itemHeight : viewWidth
             width: dropArea.itemOrientation ? viewWidth : dropArea.itemWidth
             orientation: dropArea.itemOrientation ? ListView.Horizontal : ListView.Vertical
@@ -242,6 +235,11 @@
             spacing: viewSpacing
             interactive: false
 
+            onViewSpacingChanged: {
+                trayview.viewWidth = trayModel.count * dropArea.itemShort + (trayModel.count - 1) * trayview.viewSpacing;
+                dropArea.getShowCount();
+            }
+
             Component.onCompleted: {
                 var i = trayModel.count * dropArea.itemShort + (trayModel.count - 1) * trayview.viewSpacing;
                 viewWidth = i;
@@ -267,7 +265,7 @@
             }
             model: DelegateModel {
                 id: trayModel
-                model: ShowModel
+                model: showModel
 
                 groups: DelegateModelGroup {
                     name: "foldItems"
@@ -305,7 +303,7 @@
                         paletteRole: Platform.Theme.BrightText
                         alpha: control.pressed && control.isContain ? 0.1 : control.isContain ? 0.05 : 0
 
-                        radius: Platform.Theme.maxRadius
+                        radius: Platform.Theme.normalRadius
                         TrayIcon {
                             id: control
                             property int selectIndex: 0
@@ -326,18 +324,16 @@
                             Drag.hotSpot.x: width / 2
                             Drag.hotSpot.y: height / 2
                             Drag.dragType: Drag.Automatic
-                            drag.target: model.Fixed ? null : control
+                            drag.target: model.Fixed ? null : dragItem
                             drag.onActiveChanged: {
                                 if (drag.active) {
                                     toStartDrag();
                                     control.opacity = 0;
                                     exited();
-                                } else {
-                                    x = 0;
-                                    y = 0;
                                 }
                                 Drag.active = drag.active;
                             }
+
                             UkuiItems.Tooltip {
                                 id: tooltip
                                 anchors.fill: parent
@@ -389,20 +385,17 @@
                             onReleased: {
                             }
                             Drag.onDragFinished: {
-                                control.parent = controlBase;
                                 control.opacity = 1
                                 foldItem.visible = !foldBase.isEmpty;
                                 dropArea.panelActive = false;
                                 if (dropArea.dragType === 0) {
                                     if (trayview.itemAtIndex(visualIndex).isFixed) return;
-                                    ItemModel.setOrderInGroup(ShowModel, ShowModel.index(trayview.sourceIndex, 0), visualIndex);
+                                    ItemModel.setOrderInGroup(showModel, showModel.index(trayview.sourceIndex, 0), visualIndex);
                                 }
                             }
                             function toStartDrag() {
                                 foldWindow.hide();
                                 trayview.isFold = false;
-                                x = control.mapToItem(trayview,0,0).x;
-                                y = control.mapToItem(trayview,0,0).y;
                                 trayview.sourceIndex = selectIndex;
                                 dropArea.dragType = 0;
                                 if (!foldItem.visible) foldItem.visible = true;
@@ -440,13 +433,14 @@
                                    drag.source.selectIndex = i
                                } else {
                                    dropArea.inserted = true;
-                                   if (trayModel.count > showCount) {
+                                   dropArea.indexInFold = drag.source.selectIndex;
+                                   if (trayModel.count > dropArea.showCount) {
                                        dropArea.isOverLength = true;
-                                       ItemModel.changeSeparateIndex(false, true);
+                                       showModel.currentSeparateIndex--;
+                                       foldModel.currentSeparateIndex--;
                                    } else {
                                        dropArea.isOverLength = false;
                                    }
-                                   dropArea.indexInFold = drag.source.selectIndex;
                                    drag.source.selectIndex = target;
                                    trayModel.items.insert(target, {});
                                }
@@ -455,7 +449,8 @@
     onExited: {
         if (dropArea.inserted) {
             if (dropArea.isOverLength) {
-                ItemModel.changeSeparateIndex(true, true);
+                showModel.currentSeparateIndex++;
+                foldModel.currentSeparateIndex++;
             }
             trayModel.items.remove(dropArea.targetIndex);
             dropArea.inserted = false;
diff -Nru ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/main.qml ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/main.qml
--- ukui-sni-5.0.0.1/ukui-system-tray/widget/ui/main.qml	2024-12-25 14:28:46.000000000 +0800
+++ ukui-sni-5.0.0.3/ukui-system-tray/widget/ui/main.qml	2025-02-21 16:27:57.000000000 +0800
@@ -6,6 +6,7 @@
 WidgetItem {
     property bool panelOrientation: (Widget.orientation === Types.Horizontal)
     property int pos: Widget.container.position
+    property real ratio: parent.ratio ? parent.ratio : 1
     Layout.fillWidth: panelOrientation ? false : true
     Layout.fillHeight: panelOrientation ? true : false
     Layout.preferredWidth: childrenRect.width
@@ -17,14 +18,14 @@
         id: dropArea
         property bool panelActive: false
         property bool onTopBar: parent.height < 40
-        scaleFactor: parent.panelOrientation ? (parent.height / 44) * 8 : (parent.width / 44) * 8
+        scaleFactor: parent.ratio * 8
         itemOrientation: parent.panelOrientation
-        itemWidth: onTopBar ? scaleFactor * 5 : parent.panelOrientation
-                     ? scaleFactor * 4
-                     : scaleFactor * 5
-        itemHeight: parent.panelOrientation ? scaleFactor * 5 : scaleFactor * 4
-        itemLong: scaleFactor * 5
-        itemShort: onTopBar ? scaleFactor * 5 : scaleFactor * 4
+        itemWidth: onTopBar ? 28 : parent.panelOrientation ?
+                                  scaleFactor * 4 : scaleFactor * 5
+        itemHeight: onTopBar ? 28 : parent.panelOrientation ?
+                                   scaleFactor * 5 : scaleFactor * 4
+        itemLong: onTopBar ? 28 : scaleFactor * 5
+        itemShort: onTopBar ? 28 : scaleFactor * 4
         panelPos: parent.pos
     }