Skip to content

登录弹窗失焦后自动关闭 / 鼠标拖选触发弹窗消失 #2

Description

@Breeeezever

问题描述

登录弹窗(以及其他应用内模态弹窗)存在过早关闭的问题,具体表现为:

  1. 误触主界面导致弹窗消失:登录弹窗打开后,若鼠标点击主程序窗口内、弹窗边界外的任意区域,弹窗立即关闭,已输入的账户信息全部丢失。
  2. 拖选文本时弹窗消失:在弹窗内的输入框中拖拽选取文本时,若鼠标在拖拽过程中移出弹窗边界,弹窗也会立即关闭。

上述两种情况均导致用户输入丢失,需重新打开弹窗并重新填写,体验较差。

复现步骤

  1. 打开程序,触发登录弹窗(如点击"登录"按钮)。
  2. 在弹窗内输入部分账户信息。
  3. 鼠标点击主程序窗口任意位置(弹窗外)→ 弹窗立即关闭,输入丢失。
  4. 再次触发登录弹窗,在输入框内通过拖拽选中文本,拖拽过程中鼠标移出弹窗区域 → 弹窗关闭,输入丢失。

期望行为

登录弹窗应作为应用级模态框,行为预期如下:

  • 仅通过用户明确操作关闭(点击取消/关闭按钮、登录成功后自动关闭)。
  • 点击弹窗外区域或鼠标事件越过弹窗边界时,不应触发关闭。
  • 弹窗关闭前应保留已输入内容,或至少提供「确认放弃输入」的二次确认。

可能原因

  • 弹窗对失焦(focus out / blur)事件的处理过于激进,将父窗口的任何 WM_KILLFOCUSWM_ACTIVATE 事件直接当作关闭意图。
  • 点击弹窗背景遮罩(backdrop)关闭弹窗的逻辑可能存在边界判定问题,将任意鼠标事件均视为遮罩点击。

环境信息

  • 操作系统: Windows 11

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions