From ffa2eb0bb2a72d8378f8b09a4e79273620d8c415 Mon Sep 17 00:00:00 2001 From: wjyrich Date: Thu, 5 Feb 2026 16:27:46 +0800 Subject: [PATCH] feat: add hover background and adjust spacing for dock app items MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. Added AppletItemBackground component to AppItem.qml for visual feedback on hover and active states 2. Introduced appTitleSpaceing property to control spacing between icon and title 3. Updated implicitWidth calculation to use appTitleSpaceing instead of fixed value 4. Added hoverHandler ID to HoverHandler for background control 5. Added new properties in TaskManager.qml for consistent spacing calculations 6. Modified appContainer spacing to adjust based on textCalculator state 7. Updated textcalculator.cpp to include appTitleSpacing in width calculations 8. Implemented smooth opacity transitions for hover background Log: Added hover effect and improved spacing for dock application items Influence: 1. Test hover effects on dock app items with and without titles 2. Verify spacing between icons and titles in different display modes 3. Check background appearance during hover, press, and active states 4. Test with both light and dark themes 5. Verify smooth opacity transitions 6. Test with multiple apps in dock to ensure consistent spacing 7. Check behavior when dragging app items feat: 为任务栏应用项添加悬停背景并调整间距 1. 在 AppItem.qml 中添加 AppletItemBackground 组件,为悬停和活动状态提供 视觉反馈 2. 引入 appTitleSpaceing 属性以控制图标和标题之间的间距 3. 更新 implicitWidth 计算以使用 appTitleSpaceing 替代固定值 4. 为 HoverHandler 添加 hoverHandler ID 以控制背景 5. 在 TaskManager.qml 中添加新属性以实现一致的间距计算 6. 修改 appContainer 间距以根据 textCalculator 状态进行调整 7. 更新 textcalculator.cpp 以在宽度计算中包含 appTitleSpacing 8. 为悬停背景实现平滑的不透明度过渡效果 Log: 新增任务栏应用项悬停效果并优化间距显示 Influence: 1. 测试带标题和不带标题的任务栏应用项悬停效果 2. 验证不同显示模式下图标和标题之间的间距 3. 检查悬停、按下和活动状态下的背景外观 4. 测试浅色和深色主题下的显示效果 5. 验证平滑的不透明度过渡效果 6. 测试多个应用在任务栏中的间距一致性 7. 检查拖拽应用项时的行为表现 PMS: TASK-384101 --- panels/dock/taskmanager/package/AppItem.qml | 5 +++-- panels/dock/taskmanager/package/TaskManager.qml | 7 ++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/panels/dock/taskmanager/package/AppItem.qml b/panels/dock/taskmanager/package/AppItem.qml index 73c252b2a..e2bb2fd49 100644 --- a/panels/dock/taskmanager/package/AppItem.qml +++ b/panels/dock/taskmanager/package/AppItem.qml @@ -42,7 +42,7 @@ Item { property int iconSize: Panel.rootObject.dockItemMaxSize * 9 / 14 property bool enableTitle: false property bool titleActive: enableTitle && titleLoader.active - + property int appTitleSpacing: 0 property var iconGlobalPoint: { var a = icon var x = 0, y = 0 @@ -79,7 +79,7 @@ Item { Control { anchors.fill: parent id: appItem - implicitWidth: root.titleActive ? (iconContainer.width + 4 + titleLoader.width) : iconContainer.width + implicitWidth: root.titleActive ? (iconContainer.width + titleLoader.width + root.appTitleSpacing) : iconContainer.width visible: !root.Drag.active // When in dragging, hide app item Item { @@ -273,6 +273,7 @@ Item { } HoverHandler { + id: hoverHandler onHoveredChanged: function () { if (hovered) { root.onEntered() diff --git a/panels/dock/taskmanager/package/TaskManager.qml b/panels/dock/taskmanager/package/TaskManager.qml index a691a969e..698c5c168 100644 --- a/panels/dock/taskmanager/package/TaskManager.qml +++ b/panels/dock/taskmanager/package/TaskManager.qml @@ -16,6 +16,10 @@ ContainmentItem { property int dockOrder: 16 property real remainingSpacesForTaskManager: Panel.itemAlignment === Dock.LeftAlignment ? Panel.rootObject.dockLeftSpaceForCenter : Panel.rootObject.dockRemainingSpaceForCenter + readonly property int appItemIconSize: Math.round(Panel.rootObject.dockItemMaxSize * 9 / 14) + readonly property int appItemCellWidth: Math.round(Panel.rootObject.dockItemMaxSize * 0.8) + readonly property int appItemSpacing: Math.max(0, Math.max(10, Math.round(appItemIconSize / 3)) - Math.max(0, appItemCellWidth - appItemIconSize)) + readonly property int appTitleSpacing: Math.max(10, appItemIconSize / 3) property real remainingSpacesForSplitWindow: Panel.rootObject.dockLeftSpaceForCenter - ( (Panel.rootObject.dockCenterPartCount - 1) * (visualModel.cellWidth + appContainer.spacing) + (Panel.rootObject.dockCenterPartCount) * Panel.rootObject.dockPartSpacing) // 用于居中计算的实际应用区域尺寸 @@ -73,7 +77,7 @@ ContainmentItem { id: appContainer anchors.fill: parent useColumnLayout: taskmanager.useColumnLayout - spacing: Panel.rootObject.itemSpacing + visualModel.count % 2 + spacing: taskmanager.appItemSpacing remove: Transition { NumberAnimation { properties: "scale,opacity" @@ -173,6 +177,7 @@ ContainmentItem { blendOpacity: taskmanager.blendOpacity title: delegateRoot.title enableTitle: textCalculator.enabled + appTitleSpacing: taskmanager.appTitleSpacing ListView.delayRemove: Drag.active Component.onCompleted: { dropFilesOnItem.connect(taskmanager.Applet.dropFilesOnItem)