[squeak-dev] Re: Looking for HostWindowPlugin usage code
Andreas Raab
andreas.raab at gmx.de
Sun Sep 14 22:35:34 UTC 2008
Igor Stasenko wrote:
> I think that same could be applied to morphic without much pain.
> The point why i asking, i want to try to completely replace core VM
> functionality with HostWindow plugin. To make all stuff concerning
> windowing / display will be governed by HostWindowPlugin.
As long as you're only planning to support a single window, it's pretty
simple. As a matter of fact, check out the new Squeakland image - it
includes a zoom mode which virtualizes all of the Display operations and
something similar could easily be hooked into a Ffenestri backend.
It gets much more tricky once you're trying to support more than one
Morphic world though, since the assumption that there's only ever a
single active Morphic world is so widely distributed in the code. Check
this out, for example:
SystemNavigation new browseAllSelect:[:cm|
(cm hasLiteral: (Smalltalk associationAt: #World))
or:[cm hasLiteral: (Smalltalk associationAt: #ActiveWorld)]]
There are literally *hundreds* of references all over the places that
require fixing, plus their senders, the senders of their senders etc.
And there is even more to it than only those globals - text editing for
example uses a single shared undo buffer which gets screwed up if you
ever have more than a single editing context.
BTW, when I wrote Tweak I had this scenario specifically in mind (i.e.,
potentially support multiple windows from within it) which is why it has
all of these references localized. Fixing this in Morphic is going to be
a major job.
Cheers,
- Andreas
More information about the Squeak-dev
mailing list
|