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