From 5c498b32edfcd23e9aaa91d79a1301c6176ea8d3 Mon Sep 17 00:00:00 2001 From: zhangkun Date: Tue, 13 Aug 2024 13:14:04 +0800 Subject: [PATCH] fix: pugin drag and drop animation is slow Distinguish between unfolded and contracted animations Log: pugin drag and drop animation is slow --- .../dock/tray/package/ActionToggleCollapseDelegate.qml | 1 + panels/dock/tray/package/TrayItemPositioner.qml | 10 +++++++--- panels/dock/tray/traysortordermodel.h | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/panels/dock/tray/package/ActionToggleCollapseDelegate.qml b/panels/dock/tray/package/ActionToggleCollapseDelegate.qml index 211dbe0f4..a30c3016b 100644 --- a/panels/dock/tray/package/ActionToggleCollapseDelegate.qml +++ b/panels/dock/tray/package/ActionToggleCollapseDelegate.qml @@ -21,6 +21,7 @@ AppletItemButton { padding: itemPadding onClicked: { + DDT.TraySortOrderModel.isCollapsing = true DDT.TraySortOrderModel.collapsed = !DDT.TraySortOrderModel.collapsed toolTip.close() } diff --git a/panels/dock/tray/package/TrayItemPositioner.qml b/panels/dock/tray/package/TrayItemPositioner.qml index 8d8dbcbc2..a2b8f8876 100644 --- a/panels/dock/tray/package/TrayItemPositioner.qml +++ b/panels/dock/tray/package/TrayItemPositioner.qml @@ -27,11 +27,11 @@ Control { y: visualPosition.y Behavior on x { enabled: isHorizontal - NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } + NumberAnimation { duration: 200; easing.type: collapsed || !DDT.TraySortOrderModel.isCollapsing ? Easing.OutQuad : Easing.InQuad } } Behavior on y { enabled: !isHorizontal - NumberAnimation { duration: 200; easing.type: collapsed ? Easing.OutQuad : Easing.InQuad } + NumberAnimation { duration: 200; easing.type: collapsed || !DDT.TraySortOrderModel.isCollapsing ? Easing.OutQuad : Easing.InQuad } } states: [ State { @@ -53,10 +53,14 @@ Control { SequentialAnimation { NumberAnimation { properties: "opacity,scale"; easing.type: Easing.OutQuad; duration: 200 } PropertyAction { target: root; property: "visible"; value: false } + PropertyAction { target: DDT.TraySortOrderModel; property: "isCollapsing"; value: false } } }, Transition { - NumberAnimation { properties: "opacity,scale"; easing.type: Easing.InQuad; duration: 200 } + SequentialAnimation { + NumberAnimation { properties: "opacity,scale"; easing.type: Easing.InQuad; duration: 200 } + PropertyAction { target: DDT.TraySortOrderModel; property: "isCollapsing"; value: false } + } } ] } diff --git a/panels/dock/tray/traysortordermodel.h b/panels/dock/tray/traysortordermodel.h index 2f14bfec2..7be668029 100644 --- a/panels/dock/tray/traysortordermodel.h +++ b/panels/dock/tray/traysortordermodel.h @@ -22,6 +22,7 @@ class TraySortOrderModel : public QStandardItemModel Q_PROPERTY(int visualItemCount MEMBER m_visualItemCount NOTIFY visualItemCountChanged) Q_PROPERTY(bool collapsed MEMBER m_collapsed NOTIFY collapsedChanged) + Q_PROPERTY(bool isCollapsing MEMBER m_isCollapsing NOTIFY isCollapsingChanged) Q_PROPERTY(bool actionsAlwaysVisible MEMBER m_actionsAlwaysVisible NOTIFY actionsAlwaysVisibleChanged) Q_PROPERTY(QList availableSurfaces MEMBER m_availableSurfaces NOTIFY availableSurfacesChanged) public: @@ -61,6 +62,7 @@ class TraySortOrderModel : public QStandardItemModel signals: void collapsedChanged(bool); + void isCollapsingChanged(bool); void actionsAlwaysVisibleChanged(bool); void visualItemCountChanged(int); void availableSurfacesChanged(const QList &); @@ -68,6 +70,7 @@ class TraySortOrderModel : public QStandardItemModel private: int m_visualItemCount = 0; bool m_collapsed = false; + bool m_isCollapsing = false; bool m_actionsAlwaysVisible = false; std::unique_ptr m_dconfig; // this is for the plugins that currently available.