[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