我正在使用 FireBreath 创建一个跨浏览器插件,该插件利用一些用于各自平台的本机库(一些用于 Windows 的基于 .NET 的 DLL 和用于 Mac 的基于 Objective-C 的 dylibs/框架)。本机库显示 UI 屏幕。为了提高可用性,如果用户有一个多/扩展监视器设置,我希望本机 UI 显示在与当前浏览器窗口相同的屏幕上。
如果可以检索带有浏览器窗口的监视器的标识符,则可以将其传递给可以配置为在该监视器上显示其 UI 的本机组件。我已经使用 FireBreath 的 getWindowPosition() 方法来获取插件的矩形坐标,并使用该信息来识别 Windows 平台中的正确监视器。
但是,无论浏览器窗口当前所在的监视器如何,Mac 中返回的坐标似乎始终为 0(或 1)。我知道我们必须配置一个事件模型和一个绘图模型才能在 Mac 中工作。我尝试了以下事件/绘图模型组合,但没有取得多大成功。
1) 可可/CoreGraphics 2) 碳/CoreGraphics
非常感谢这方面的任何帮助。如果还有其他方法可以实现相同的效果,也请分享。我想要实现的是识别 Mac 中当前活动浏览器窗口所在的监视器。在这一点上我不确定,但也许可以在 Objective-C 级别实现这一点(在 FireBreath 级别没有任何更改)。另请注意,我想支持 Safari、Firefox 和 Chrome 浏览器。