fix(editor): add hover and press states to color mark icons - #520
fix(editor): add hover and press states to color mark icons#520tianming-1996 wants to merge 1 commit into
Conversation
ColorLabel widget only implements selected/unselected visual states, missing hover and press feedback. This adds enterEvent/leaveEvent for hover highlighting and mousePressEvent/mouseReleaseEvent for press animation, improving interaction experience. 为颜色标记图标增加悬停与按压交互状态。ColorLabel 原先仅有选中/未选中两种 视觉状态,缺少 hover 和 press 反馈。新增 enterEvent/leaveEvent 实现悬停 高亮,mousePressEvent/mouseReleaseEvent 实现按压动画。 Log: 为颜色标记图标增加悬停与按压交互状态 PMS: BUG-196825 Influence: 右键菜单颜色标记子菜单的颜色图标现在有 hover/press 视觉反馈, 不影响已有标记和清除功能。
There was a problem hiding this comment.
Sorry @tianming-1996, you have reached your weekly rate limit of 500000 diff characters.
Please try again later or upgrade to continue using Sourcery
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: tianming-1996 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
Reviewer's GuideAdds hover and press interaction states to the ColorLabel widget so color mark icons provide visual feedback on hover/press and emit their selection signal on mouse release, aligning behavior with Qt button conventions. Sequence diagram for ColorLabel hover/press and selection behaviorsequenceDiagram
actor User
participant ColorLabel
participant ColorSelectWdg
User->>ColorLabel: mouseMove (hover enter)
ColorLabel->>ColorLabel: enterEvent
Note over ColorLabel: m_bHover = true
ColorLabel->>ColorLabel: paintEvent
User->>ColorLabel: mousePressEvent (LeftButton)
ColorLabel->>ColorLabel: mousePressEvent
Note over ColorLabel: m_bPressed = true
ColorLabel->>ColorLabel: paintEvent
User->>ColorLabel: mouseReleaseEvent (LeftButton)
ColorLabel->>ColorLabel: mouseReleaseEvent
Note over ColorLabel: m_bPressed = false
Note over ColorLabel: m_bSelected = true
ColorLabel-->>ColorSelectWdg: sigColorClicked(m_bSelected, m_color)
ColorLabel->>ColorLabel: paintEvent
User->>ColorLabel: mouseMove (hover leave)
ColorLabel->>ColorLabel: leaveEvent
Note over ColorLabel: m_bHover = false, m_bPressed = false
ColorLabel->>ColorLabel: paintEvent
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
deepin pr auto review★ 总体评分:95分■ 【总体评价】
■ 【详细分析】
■ 【改进建议代码示例】 diff --git a/src/widgets/ColorSelectWdg.cpp b/src/widgets/ColorSelectWdg.cpp
index 62929c46..corrected_hash 100644
--- a/src/widgets/ColorSelectWdg.cpp
+++ b/src/widgets/ColorSelectWdg.cpp
@@ -76,7 +76,7 @@ void ColorLabel::paintEvent(QPaintEvent *event)
// 如果点击选择画圆环
if (m_bSelected) {
r = rect();
- QPainterPath sencondCircle;
- sencondCircle.addEllipse(r.adjusted(distance, distance, -distance, -distance));
+ QPainterPath secondCircle;
+ secondCircle.addEllipse(r.adjusted(distance, distance, -distance, -distance));
// 大圆减小圆等于圆环
- QPainterPath path = bigCircle - sencondCircle;
+ QPainterPath path = bigCircle - secondCircle;
painter.fillPath(path, m_color);
} |
根因分析
颜色标记图标
ColorLabel(src/widgets/ColorSelectWdg.h:53-63)仅实现m_bSelected一个状态,缺失 hover 和 press 交互状态:setMouseTracking(true),但未重写enterEvent()/leaveEvent()mousePressEvent()直接选中,无 press 过渡反馈paintEvent()只绘制默认圆/选中圆环两态修复方案
为
ColorLabel增加m_bHover/m_bPressed状态变量,重写enterEvent()/leaveEvent()/mousePressEvent()/mouseReleaseEvent()。paintEvent()三分支渲染:press 态颜色加深+微缩,hover 态外扩,normal 保持原有逻辑。选中信号改为 release 触发(与 Qt 按钮标准行为一致)。改动安全评估
低风险。
ColorLabel是ColorSelectWdg中的私有控件,无外部引用。新增 hover/press 属纯叠加性视觉增强,sigColorClicked信号语义不变(仅触发时机从 press 改为 release),不破坏ColorSelectWdg的互斥选中逻辑。PMS: BUG-196825
Summary by Sourcery
Enhance the color selection widget’s icon interactions by adding hover and press visual states and updating selection to trigger on mouse release.
New Features:
Enhancements: