Skip to content

fix(info-dialog): remove window stays on top hint#289

Merged
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
add-uos:fix-360103-remove-window-stays-on-top-hint
May 8, 2026
Merged

fix(info-dialog): remove window stays on top hint#289
deepin-bot[bot] merged 1 commit into
linuxdeepin:masterfrom
add-uos:fix-360103-remove-window-stays-on-top-hint

Conversation

@add-uos
Copy link
Copy Markdown
Contributor

@add-uos add-uos commented May 8, 2026

Remove Qt.WindowStaysOnTopHint flag from information dialog to allow normal window layering behavior.

移除信息对话框的窗口置顶标志,允许正常的窗口层级行为。

Log: 移除信息对话框窗口置顶标志
PMS: BUG-360103
Influence: 信息对话框不再强制置顶,用户可以正常操作其他窗口,提升用户体验。

Remove Qt.WindowStaysOnTopHint flag from information dialog to
allow normal window layering behavior.

移除信息对话框的窗口置顶标志,允许正常的窗口层级行为。

Log: 移除信息对话框窗口置顶标志
PMS: BUG-360103
Influence: 信息对话框不再强制置顶,用户可以正常操作其他窗口,提升用户体验。
@deepin-ci-robot
Copy link
Copy Markdown

deepin pr auto review

这段代码修改了 QML 中 DialogWindow 组件的 flags 属性,主要是移除了 Qt.WindowStaysOnTopHint 标志。以下是从语法逻辑、代码质量、代码性能和代码安全四个方面的详细审查与改进意见:

1. 语法逻辑

  • 当前状态:语法完全正确。移除 Qt.WindowStaysOnTopHint 后,窗口将不再强制置顶。
  • 逻辑分析
    • 修改前:窗口是模态对话框(Qt.Dialog),且带有固定大小(Qt.MSWindowsFixedSizeDialogHint)、关闭按钮,并始终置顶于其他窗口之上。
    • 修改后:窗口依然是模态对话框,但不再强制置顶
    • 潜在逻辑冲突/风险:通常模态对话框(Qt.Dialog)在父窗口打开时,操作系统会自动将其层级提升以阻挡父窗口的交互。如果移除了 Qt.WindowStaysOnTopHint,在某些特定的窗口管理器或操作系统(如 Linux 的某些 DE)中,如果用户切换焦点到其他应用程序,该对话框可能会被遮挡在主窗口或其他应用之下,导致用户找不到对话框,产生"程序卡死"的错觉。

2. 代码质量

  • 可维护性:代码清晰,属性命名规范(如 propRightWidth)。
  • 跨平台兼容性:代码中使用了 Qt.MSWindowsFixedSizeDialogHint。这个标志是 Windows 特有的。虽然在非 Windows 系统上通常会被忽略,但显式地使用平台特定的标志可能会降低代码的抽象度。
  • 改进建议:如果这个对话框设计为模态交互(即必须处理完对话框才能操作主窗口),通常不需要显式添加 Qt.WindowStaysOnTopHint,因为模态机制已经处理了层级关系。移除它是合理的,可以让窗口管理器更自然地处理多任务切换。

3. 代码性能

  • 影响:移除 Qt.WindowStaysOnTopHint 对性能几乎没有影响。窗口标志主要影响窗口系统如何管理窗口的显示和堆叠,不涉及复杂的计算或渲染逻辑。
  • 结论:性能方面无需担忧。

4. 代码安全

  • 安全性:此修改不涉及内存安全、数据加密或输入验证等安全问题。
  • 用户体验安全:如前所述,如果这是一个模态对话框,移除置顶属性后,如果对话框被遮挡,可能会影响用户操作的流畅性,但这属于 UX(用户体验)范畴而非严格的安全漏洞。

综合改进意见

  1. 关于 Qt.WindowStaysOnTopHint 的移除

    • 如果你的意图是允许用户在打开此对话框时切换到其他应用程序(例如查看信息后再回来填入对话框),那么这个修改是正确且推荐的。
    • 如果这是一个关键性的模态对话框(如"确认删除"、"保存错误"),移除置顶可能导致用户忽略它。建议保持模态行为,或者确保 modality 属性设置正确(例如 modality: Qt.ApplicationModal),这样即使没有 StaysOnTop,它也会阻塞整个应用直到关闭。
  2. 关于 Qt.MSWindowsFixedSizeDialogHint

    • 既然代码中已经设置了 maximumWidthminimumWidth 为相同的值(280),这已经实现了固定大小的效果。
    • 建议:可以考虑移除 Qt.MSWindowsFixedSizeDialogHint,改用通用的 QML 属性来控制大小,这样代码跨平台兼容性更好,且逻辑更统一。

优化后的代码建议:

DialogWindow {
    // ... 其他属性 ...

    // 移除平台特定的 MSWindowsFixedSizeDialogHint,利用 width/minWidth/maxWidth 控制大小
    // 移除 WindowStaysOnTopHint,依靠模态机制管理层级
    flags: Qt.Dialog | Qt.WindowCloseButtonHint
    
    // 确保模态性,防止用户在未关闭对话框时操作主窗口
    modality: Qt.ApplicationModal 

    maximumWidth: 280
    minimumWidth: 280
    // 显式设置宽度,确保固定大小逻辑生效
    width: 280 
    
    visible: false
    // ...
}

总结:原代码修改在语法上没有问题,主要是改变了窗口的层级行为。建议确认该对话框是否需要强制置顶,并检查 modality 属性以确保交互逻辑符合预期。

@deepin-ci-robot
Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: add-uos, lzwind

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

@add-uos
Copy link
Copy Markdown
Contributor Author

add-uos commented May 8, 2026

/merge

@deepin-bot deepin-bot Bot merged commit ac61aa0 into linuxdeepin:master May 8, 2026
18 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