如何管理OSX服务的撤消?

时间:2012-02-06 17:22:51

标签: cocoa service osx-lion

服务在应用程序的上下文中触发。例如,一个服务可以在粘贴板中丰富地格式化文本并将其粘贴到请求它的应用程序上。

服务是否可以引用其父代NSUndoManager并修改其撤消历史记录?

1 个答案:

答案 0 :(得分:0)

服务在应用程序的上下文中触发,概念,但它们实际上并未在该应用程序的进程中执行。

撤销能力是目标应用程序的责任。如果某项服务正在将某些内容粘贴到某个应用中,那么最终会在目标应用最前面的窗口的响应者链上发送一条-paste:消息。如果目标应用程序中的“内生”粘贴操作是可撤消的,我希望“外源”粘贴操作也可以撤消。同样,如果应用程序不支持撤消粘贴操作,那么我不希望服务源粘贴可以撤消。

粘贴板将目标应用程序与服务隔离,如here所述。他们将无法从应用程序(或任何其他对象)获取NSUndoManager - 想想这将是一个巨大的,巨大的安全漏洞!可能会将AppleEvent从系统服务发送到应用程序,但这就是它。