Skip to content

Conversation

@fly602
Copy link
Contributor

@fly602 fly602 commented Jan 31, 2026

  1. Replaced doToggleMaximize with separate doMaximizeActiveWindow and doUnMaximizeActiveWindow functions
  2. Updated action mappings to use specific maximize and restore handlers instead of toggle function
  3. Changed from using PerformAction with wmActionToggleMaximize to direct window manager calls
  4. This provides clearer gesture semantics by separating maximize and restore actions

Log: Added dedicated maximize and restore window gesture actions

Influence:

  1. Test maximize gesture on active window to verify it maximizes correctly
  2. Test restore gesture on maximized window to verify it returns to normal state
  3. Verify that maximize gesture on already maximized window has no effect
  4. Verify that restore gesture on normal window has no effect
  5. Test gesture responsiveness and window state transitions

feat: 添加独立的最大化和恢复窗口手势

  1. 将 doToggleMaximize 替换为独立的 doMaximizeActiveWindow 和 doUnMaximizeActiveWindow 函数
  2. 更新动作映射,使用特定的最大化和恢复处理器替代切换函数
  3. 从使用 PerformAction 改为直接调用窗口管理器接口
  4. 通过分离最大化和恢复动作提供更清晰的手势语义

Log: 新增独立的最大化和恢复窗口手势动作
PMS: BUG-302527
Influence:

  1. 测试活动窗口的最大化手势,验证窗口是否正确最大化
  2. 测试最大化窗口的恢复手势,验证窗口是否恢复正常状态
  3. 验证在已最大化窗口上使用最大化手势无效果
  4. 验证在正常窗口上使用恢复手势无效果
  5. 测试手势响应速度和窗口状态转换

1. Replaced doToggleMaximize with separate doMaximizeActiveWindow and
doUnMaximizeActiveWindow functions
2. Updated action mappings to use specific maximize and restore handlers
instead of toggle function
3. Changed from using PerformAction with wmActionToggleMaximize to
direct window manager calls
4. This provides clearer gesture semantics by separating maximize and
restore actions

Log: Added dedicated maximize and restore window gesture actions

Influence:
1. Test maximize gesture on active window to verify it maximizes
correctly
2. Test restore gesture on maximized window to verify it returns to
normal state
3. Verify that maximize gesture on already maximized window has no
effect
4. Verify that restore gesture on normal window has no effect
5. Test gesture responsiveness and window state transitions

feat: 添加独立的最大化和恢复窗口手势

1. 将 doToggleMaximize 替换为独立的 doMaximizeActiveWindow 和
doUnMaximizeActiveWindow 函数
2. 更新动作映射,使用特定的最大化和恢复处理器替代切换函数
3. 从使用 PerformAction 改为直接调用窗口管理器接口
4. 通过分离最大化和恢复动作提供更清晰的手势语义

Log: 新增独立的最大化和恢复窗口手势动作
PMS: BUG-302527
Influence:
1. 测试活动窗口的最大化手势,验证窗口是否正确最大化
2. 测试最大化窗口的恢复手势,验证窗口是否恢复正常状态
3. 验证在已最大化窗口上使用最大化手势无效果
4. 验证在正常窗口上使用恢复手势无效果
5. 测试手势响应速度和窗口状态转换
Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @fly602, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@deepin-ci-robot
Copy link

deepin pr auto review

这段代码修改将窗口最大化/还原的切换逻辑拆分成了两个独立的函数。以下是对该代码变更的审查意见,涵盖语法逻辑、代码质量、代码性能和代码安全四个方面:

1. 语法逻辑

  • 审查意见:逻辑清晰,符合 Go 语言规范。
  • 分析
    • 代码将原本通用的 doToggleMaximize(切换状态)拆分为了意图更明确的 doMaximizeActiveWindow(最大化)和 doUnMaximizeActiveWindow(还原)。
    • initActions 中,将 "MaximizeWindow" 和 "RestoreWindow" 两个动作分别绑定到了对应的独立函数上。这意味着这两个手势动作现在有了确定的行为,而不是依赖当前窗口的状态进行切换。
    • 这种修改使得手势动作与窗口管理器(m.wm)的接口调用更加直接和语义化。

2. 代码质量

  • 审查意见:提升了代码的可读性和可维护性,但需注意潜在的接口兼容性问题。
  • 分析
    • 优点:函数命名(doMaximizeActiveWindow / doUnMaximizeActiveWindow)比 doToggleMaximize 更加具体,见名知意。这降低了后续维护人员理解代码逻辑的负担。
    • 注意点:代码中调用了 m.wm.MaximizeActiveWindow(0)m.wm.UnMaximizeActiveWindow(0)。这暗示 Manager 结构体持有的 wm 对象(可能是窗口管理器接口)必须实现了这两个新方法。如果 wm 是一个外部依赖的接口,请确保该接口定义已同步更新,否则会导致编译错误。

3. 代码性能

  • 审查意见:对性能无显著影响。
  • 分析
    • 这只是简单的函数调用转发,增加了一个函数栈帧的开销微乎其微,可以忽略不计。
    • 相比于之前的 Toggle 逻辑,新的逻辑直接执行特定动作,避免了在底层判断窗口当前是否已最大化的过程(如果底层 Toggle 实现包含判断逻辑的话)。因此,性能理论上持平或略有优化。

4. 代码安全

  • 审查意见:基本安全,但建议对参数 0 进行说明或检查。
  • 分析
    • 函数调用中硬编码了参数 0(例如 MaximizeActiveWindow(0))。如果 0 代表“当前活动窗口”或“默认显示器”,建议将其定义为常量(如 ActiveWindowIDDefaultMonitor),以提高代码可读性并防止“魔术数字”带来的误用。
    • 如果 m.wm 可能为 nil(例如在某些初始化失败的场景下),虽然目前的代码风格似乎假设 m.wm 始终可用,但为了防御性编程,建议在关键路径上增加非空检查,或者在 Manager 初始化时确保 wm 必须赋值。

改进建议

  1. 定义常量替代魔术数字
    如果 0 代表特定的窗口ID或显示器ID,建议定义常量。

    const (
        activeWindowID = 0 // 假设 0 代表当前活动窗口
    )
    
    func (m *Manager) doMaximizeActiveWindow() error {
        return m.wm.MaximizeActiveWindow(activeWindowID)
    }
  2. 错误处理
    目前函数直接返回 m.wm 调用的结果。请确保底层的 MaximizeActiveWindowUnMaximizeActiveWindow 方法在失败时返回了有意义的错误信息,以便上层日志记录或调试。

  3. 接口定义检查
    请确保 m.wm 的类型(接口或结构体)中确实包含了 MaximizeActiveWindowUnMaximizeActiveWindow 方法。

总结:这是一个良好的重构,提高了代码的语义明确性。主要关注点在于确保底层接口的同步更新以及对硬编码参数 0 的语义管理。

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: fly602, mhduiy

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@fly602 fly602 merged commit 45b0b9c into linuxdeepin:master Jan 31, 2026
15 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants