I not sure what you you mean by "originates" here. There are quite a few places in the current image that say something like:
SomeMorph new openInWorld
What Morph is this originating from? Take the case of the Compiler doing a fileIn and encountering a syntax error. It currently opens a SyntaxError appropriate to the Morphic/MVC environment in which it finds itself. Are you suggesting that the Compiler be given a reference to the world prior to starting the fileIn?
Actually yes. At least there needs to be some context in which the action is executed. E.g., assume you want to have a remote 'error world' into which errors get logged so that some (remote) user can examine these. This is *not* your current World and while it seems reasonable to open up the error in the current world I can think of all sorts of cases where you really want to open up something in a world which is not current. And that does require you to establish the context and cleans up the default 'currentWorld' use.
Suppose I want my email client to tell me when mail is received. Where does it perform this notification? My preference would be that it notify me in whatever world is currently active, but how could it know that beforehand?
Good point. I think I was more arguing against the use of World for designated receivers (e.g., everything that doesn't quite work in Telemorphic) as well as the 'oh-so-convient' shortcut for determining what GUI is currently primary. E.g., most methods I've seen use World along the lines of
World ifNil:[self doSomeMVCStuff]. "We can't do that in MVC"
which may be not quite accurate since there is quite a chance of having a Morphic window in MVC open. In particular I don't like those
SomeClass>>openInWorld World ifNil:[self openInMVC] ...
(or vice versa) methods.
I can imagine Morphs that may want to delete themselves from the world and then reappear later. Not in their own world, but in whatever world the user is looking at. Additionally, a Morph might want to adapt itself in some way to the world *before* it is opened in that world.
Oh but that's okay - it can always do this through #openInWorld: aWorld which should be the message sent once the world has been determined (by whatever means).
- Andreas
squeak-dev@lists.squeakfoundation.org