Skip to content

[Bug] 多屏幕下非活跃屏幕菜单栏歌词占位但不更新 #2

@Kadxy

Description

@Kadxy

问题描述

在多屏幕环境下,非活跃屏幕的菜单栏会为 FlowX 歌词预留位置,但歌词内容不会实时刷新;只有活跃屏幕显示是更新的。

复现步骤

  1. macOS 连接两个及以上显示器,并启用“显示器具有单独的空间”。
  2. 启动 FlowX 并开始播放 Apple Music。
  3. 观察主屏与非活跃屏幕的菜单栏歌词区域。

实际结果

  • 非活跃屏幕的菜单栏位置被占用。
  • 该屏幕歌词不刷新或刷新明显滞后。

期望结果

  • 所有显示器菜单栏中的 FlowX 文本都同步刷新,行为一致。

代码排查线索

我检查代码后,问题大概率存在,目前实现只维护了一个自定义歌词视图:

  • 仅创建一个 MenuBarLyricsView 并添加到 lyricsItem.buttonFlowX/FlowXApp.swift:56FlowX/FlowXApp.swift:60)。
  • 所有刷新逻辑都只驱动这一实例(例如 FlowX/FlowXApp.swift:62FlowX/FlowXApp.swift:85FlowX/FlowXApp.swift:200)。
  • 未看到针对多屏菜单栏副本的单独更新路径或屏幕参数变化处理。

建议方向

  • 评估 NSStatusItem + 自定义 NSView 在多菜单栏副本下的刷新限制。
  • 尽量改用 button.title/attributedTitle 或 image+attributed string 等系统可复制的渲染路径。
  • 若继续自定义视图,考虑为每个菜单栏副本维护可更新实例,或在屏幕/活动空间切换时强制重建。

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