允许指定加速器的优先级,以便与在聚焦窗口中处理键盘相对比
作者: vadz创建于 2022年7月15日更新于 2026年9月19日
我们遇到了一些与加速键无法覆盖本地键处理程序相关的问题,至少可以参考以下例子(但还有很多其他例子我无法轻易找到): - #14553: 在 wxGTK 中,加速键总是具有优先权,在 819638a71f 中修复了此问题(通过使本地处理程序具有优先权来解决此问题,2013-03-21)。 - #22404: 在 wxMSW 中,加速键具有优先权,并且必须特别覆盖 `MSWShouldPreProcessMessage()` 才能允许在 `wxSpinCtrl` 中使用常用的编辑键。 - #22625: 在 wxGTK 中,加速键并不具有优先权。 因此,目前的行为在不同平台之间完全不一致: - 在 wxGTK 中,加速键总是被本地处理程序覆盖。 - 在 wxOSX 中,加速键总是具有优先权。 - 在 wxMSW 中,加速键默认具有优先权,但可以通过在 `MSWShouldPreProcessMessage()` 中声明该键来覆盖此行为。 我认为我们可以接受 wxMSW API 的可移植等价物,即我们可以让所有端口都以 wxMSW 的方式行为,并使用一些新的虚函数 `ShouldKeyOverrideAccelerator()`(如果需要,可以为单个键更改此行为),并用于文本控件等的标准加速键。而且我相对有信心可以在 wxGTK 中实现此功能,但,一如既往,我对 macOS 不太确定,欢迎任何建议,即是否甚至可以在 macOS 中覆盖菜单加速键?从阅读有关第一响应者的 [文档][1] 来看,似乎可以,但确认会非常受欢迎。
内容来源: wxWidgets/wxWidgets