ddddxxx / LyricsX

🎶 Ultimate lyrics app for macOS.
Mozilla Public License 2.0
4.73k stars 390 forks source link

希望逐行歌词能鼠标穿透 #194

Closed shulan-moe closed 5 years ago

shulan-moe commented 6 years ago

之前的老版本没有 允许拖放 功能,只能通过设置边距调整位置时,鼠标点击逐行歌词位置可以直接触发逐行歌词下方的交互元素。但新版本即使是修改位置后关闭了 允许拖放 功能,再点击逐行歌词也不能穿透点击到下方的元素了。 不知道新版本对这个交互的改动是feature还是bug? 但是我还是希望能在关闭 允许拖放 的情况下点击到下方元素的,这样交互快捷很多,谢谢!

ddddxxx commented 6 years ago

这是 Apple 的问题,拖放和鼠标穿透这两个功能不兼容。

逐行歌词的窗口(window)实际上铺满了整个桌面,你看到的歌词部分只是window内的一个元素。这是为了实现平滑的动画(window的缩放必须对齐到像素,会造成抖动)。

所以开启“允许拖放”时,我需要让鼠标穿透窗口中透明的像素,并允许不透明像素的交互。事实上,这是一个窗口默认的行为。我可以将其修改为“完全忽略鼠标事件”,或“接受所有鼠标事件”。但是,一旦作出了修改,我就不能将其复原到“只接受不透明像素部分的鼠标事件”这一设置了。

这是API设计上的失误,所以Apple大概也不会修复。

shulan-moe commented 6 years ago

是因为API无此设计导致的这个问题的话,能否通过设置两个调整位置的方式:一个是原来的通过边距设置,不能直接拖动;一个是通过拖放修改,但是不能接受下方鼠标事件 这样来解决这个问题呢 感谢回复!

ddddxxx commented 6 years ago

这样会增加界面的复杂度,我不愿意这样做。而且一旦设置鼠标穿透,就不可能再拖动了。无法以任何形式提供这个选项。

shulan-moe commented 6 years ago

感谢解答。最近版本更新的功能对使用体验很重要,已无退回老版本使用的打算。不能穿透的话就只能考虑怎样放置其位置使得影响最小了。这样的话其实我认为 允许拖动 这个选项就不是很重要了,因为即使不允许拖动了也无法对下方的元素进行交互,感觉或许可以直接固定为一直允许拖动。无论如何还是感谢您的贡献!

ddddxxx commented 6 years ago

感谢理解。请注意这个选项还会影响“鼠标经过时使窗口透明”这一功能,所以暂时不会取消。(这两个选项的关系很别扭而且不明显,以后会修改的)

henryzt commented 6 years ago

请问如果不能修改穿透的话,能否添加一个选项在鼠标hover时直接隐藏或者销毁窗口呢?这样就可以与下方元素交互,鼠标移开时再显示窗口即可

ddddxxx commented 5 years ago

新版本鼠标hover时窗口完全隐藏,不影响下方的交互元素