Skip to content

修复列表文字区域右键菜单#2792

Open
sunny1028 wants to merge 1 commit into
lyswhut:devfrom
sunny1028:fix-list-context-menu
Open

修复列表文字区域右键菜单#2792
sunny1028 wants to merge 1 commit into
lyswhut:devfrom
sunny1028:fix-list-context-menu

Conversation

@sunny1028
Copy link
Copy Markdown

概要

在使用过程中发现,列表中的歌曲名、歌手、专辑等文字区域无法右键弹出歌曲菜单,只能在文字之外的区域右键。
我不确定这是否是有意为之,但从交互预期来看,左键选中与右键菜单应当彼此独立,文字区域也应支持正常右键操作。

  • 修复列表中右键歌曲名、歌手、专辑等文字时无法弹出右键菜单的问题
  • 调整列表文字区域的右键事件处理逻辑,避免在普通右键场景下拦截歌曲项菜单
  • 保留文本复制能力,仅在右键的是已选中文本时才走复制分支

问题原因

  • 列表容器在 @contextmenu.capture 阶段会优先拦截 .select 文本上的右键事件
  • 之前只要命中可选中文本,就会直接阻止事件继续传递,导致事件无法到达歌曲行上的右键菜单逻辑
  • 因此在歌曲名、歌手、专辑等文字区域右键时,不会弹出歌曲右键菜单

具体改动

  • 为列表右键行为抽出共享判断逻辑
  • 仅当右键目标为可选中文本且当前存在有效选区时,才执行复制文本处理
  • 普通右键文字时继续让事件传递到歌曲行,正常弹出右键菜单
  • 同步修复本地歌单列表和在线列表的同类问题
  • 新增对应测试,覆盖文字右键与文本复制两类行为

影响范围

  • src/renderer/views/List/MusicList/index.vue
  • src/renderer/components/material/OnlineList/index.vue
  • src/renderer/utils/listContextMenu.mjs
  • build-config/tests/list-context-menu.test.mjs

验证方式

  • node build-config/tests/list-context-menu.test.mjs
  • node build-config/tests/player-queue.test.mjs
  • npm run lint
  • npm run build:renderer

@lyswhut
Copy link
Copy Markdown
Owner

lyswhut commented May 10, 2026

#712

@sunny1028 sunny1028 closed this May 11, 2026
@sunny1028
Copy link
Copy Markdown
Author

sunny1028 commented May 12, 2026

#712

我忘记在描述中提到 本次PR的代码是兼容原先的选中文字后的右键行为的,如果选中文字后右键仍然会进行复制,如果没有选中任何文字的话则会弹出右键菜单。
希望作者再考虑一下本次PR

@sunny1028 sunny1028 reopened this May 12, 2026
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.

2 participants