[squeak-dev] Deferred UI messages in MVC can be deferred for a really long time

David T. Lewis lewis at mail.msen.com
Thu Sep 17 00:16:23 UTC 2020


On Wed, Sep 16, 2020 at 06:47:19PM +0000, Thiede, Christoph wrote:
> Hi all!
> 
> 
> Quick experiment:
> 
> Open an MVC project, open a Workspace in it, and do it:
> 
> Project current addDeferredUIMessage: [self inform: #foo]
> 
> 
> In Morphic, this produces a dialog message "nearly immediately". But in MVC, apparently, I can sit there for hours and wait for the dialog and it will not pop up before I move my cursor out of the Workspace, giving the world controller (is this the correct naming?) a chance to process the deferred UI messages.
> 
> 
> Is this desired behavior? If not, has someone already considered a chain of responsibility pattern for every controller that could allow its parent controller to take some actions (such as deferred UI messages or also handling system events like a VM window close request)? Or would this be contrary to the MVC idea? :-)
> 
> 

Yes that is how it works. The deferred action queue is handled
when transferring control from one controller to another (in
Controller>>controlActivity).

MVC is not as directly interactive as Morphic, and things seem
to "happen" when your mouse movement causes a different controller
to become active.

When active, each controller has its own process. There is no such
thing as a UI process that controls the world as in Morphic. Instead,
Project current world is a ControlManager, which coordinates the
various controllers and their processes.

The deferred action queue was never part of the original MVC, so if
you can think of a way to make it more responsive, no one will take
any offence :-)

Dave



More information about the Squeak-dev mailing list