FROM : Jens Alfke
DATE : Thu May 29 05:39:19 2008
On 28 May '08, at 8:29 PM, Scott Ribe wrote:
> Yes, the method could be in NSWindow and call
> on NSApplication to get that done, but, should a window really be
> able to
> have such a drastic effect on the events going to other windows???
It doesn't. A sheet doesn't change anything in the app's overall
state, since it's asynchronous. The event loop runs normally and
dispatches events normally. The most significant change is that the
host window ignores most events (and just beeps) while it has a sheet
open, but the app itself shouldn't care about that.
In any case, regardless of where the implementation of the
functionality lives, the API should be designed in a way that makes
sense conceptually to clients. Even if it was NSApplication or
NSRunLoop that had to do most of the work of opening a sheet, it would
be a simple matter for a public NSWindow method to call a private
implementation method elsewhere. There are a number of other cases of
that. (For example, -[NSDictionary initWithContentsOfFile:] is
probably just a wrapper around NSPropertyListSerialization.)
—Jens
DATE : Thu May 29 05:39:19 2008
On 28 May '08, at 8:29 PM, Scott Ribe wrote:
> Yes, the method could be in NSWindow and call
> on NSApplication to get that done, but, should a window really be
> able to
> have such a drastic effect on the events going to other windows???
It doesn't. A sheet doesn't change anything in the app's overall
state, since it's asynchronous. The event loop runs normally and
dispatches events normally. The most significant change is that the
host window ignores most events (and just beeps) while it has a sheet
open, but the app itself shouldn't care about that.
In any case, regardless of where the implementation of the
functionality lives, the API should be designed in a way that makes
sense conceptually to clients. Even if it was NSApplication or
NSRunLoop that had to do most of the work of opening a sheet, it would
be a simple matter for a public NSWindow method to call a private
implementation method elsewhere. There are a number of other cases of
that. (For example, -[NSDictionary initWithContentsOfFile:] is
probably just a wrapper around NSPropertyListSerialization.)
—Jens






Cocoa mail archive

