Skip to content
This repository was archived by the owner on Sep 20, 2026. It is now read-only.
This repository was archived by the owner on Sep 20, 2026. It is now read-only.

not-bpp(macOS windowed): 输入法快捷栏覆盖游戏窗口 #192

Description

@pengx17

现象

在 macOS 窗口模式下,搜狗输入法的黑色快捷栏会显示在 The Bazaar 游戏窗口之上,遮挡游戏内容。最初的玩家报告把它与开启 BPP 的「BazaarDB 数据共建」关联起来,但该因果关系尚未确认。

已获得静态截图,可确认被遮挡的是输入法自身的浮动快捷栏;截图本身不能证明它是否由某个游戏输入框的焦点持续唤起。自动窗口捕获看不到该系统浮层,因此后续判定必须依靠人工观察和版本/代码对照。

已纠正的观察

  • 只在窗口模式出现;先前记录成“只在非窗口模式出现”是写反了。
  • 维护者在当前本机安装的 4.6.0.t20260731.234746.dev 上进入游戏即可看到,不需要等待结算上传。
  • 目前仍需严格区分“刚进入主界面、从未打开 BPP 面板”与“本次进程中曾经点过文本输入框”。

已验证的代码事实

  • 当前 BPP 自己创建的文本输入只有两组:
    • History Panel 的 BazaarDB 绑定码:10 个 UI Toolkit TextField;
    • Collection Panel 的搜索框:1 个 UI Toolkit TextField。
  • 这两套 UI 都是首次打开对应面板时才构造。冷启动后若从未打开 History/Collection Panel,它们尚不存在。
  • 开启数据共建的设置入口只写配置、强制开启结算截图并发布上传 arm 事件;不创建文本输入,也不改窗口或焦点。
  • 基础游戏的 Managers.Login.LoginFlowHotkeys.OnEnable() 会在下一帧对第一个 TMP_InputField 调用 ActivateInputField()。因此基础游戏登录流程也是必须保留的基线候选,不能只查 BPP。
  • 隐藏 UI 后是否正确释放 macOS IME client 仍未通过运行时对照确认,不能仅凭代码中没有显式 Blur() 判定有无泄漏。

Input 相关 bisect 切点

按语义切点测试,比在全部提交中盲目二分更快:

  1. 4.3.0 (cd0a34bb):BPP 源码中没有任何自建 TextField,作为基线;
  2. 52d571ba:首次加入 History Panel 的单个 BazaarDB 绑定码 TextField;
  3. 244db552:把单输入框改为 10 个分段 TextField,并让卡片受 BazaarDB 数据共建开关控制;
  4. 61c65731:首次加入 Collection 搜索 TextField 和 IME composition 监听;
  5. 当前 4.6.0 dev:已观察为 bad。

每个节点都需要完全退出游戏后重启,在同一搜狗版本、同一窗口模式下,先不打开任何 BPP 面板观察主界面。若 4.3.0 仍为 bad,BPP 自建输入框可以排除,下一步转向基础游戏登录输入与 Unity/macOS IME 桥接;若 4.3.0 为 good,再按上述三个引入点缩小。

面板内对照

若冷启动主界面为 good,再分别测试:

  1. 打开 History Panel,但不展开 BazaarDB 绑定区;
  2. 展开绑定区但不点击输入格;
  3. 点击输入格后点击非文本区域,再关闭面板;
  4. 打开 Collection Panel,不展开搜索;
  5. 展开搜索、点击搜索框,再关闭面板。

记录快捷栏首次出现和消失的准确一步,才能决定修 History、Collection,还是基础游戏登录输入生命周期。

期望行为

当游戏没有活动文本输入时,输入法快捷栏不应持续覆盖游戏窗口;关闭 BPP 文本输入所在面板后,应明确释放其焦点和 IME 状态。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    wontfixThis will not be worked on

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions