<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hi Eliot.<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">inside Controller>>processDeferredActions and have Controller>>controlActivity read</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">This would produce an endless recursion. But one could check with #== to avoid that. :-)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Shouldn’t there in fact be a single SharedQueue for deferred actions?</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Agreed. This would be a next step, now that we can see that this is actually happening. Might have been by accident so far.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"> > </span><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Is this bug in Morphic too?</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">No, in Morphic, there is only single queue for all Morphic projects. It's a class variable in WorldState.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div>
                                        
                                        <blockquote class="history_container" type="cite" style="border-left-style: solid;border-width: 1px;margin-top: 20px;margin-left: 0px;padding-left: 10px;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 17.09.2020 12:56:30 schrieb Eliot Miranda <eliot.miranda@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">Hi Marcel,<br><br>> On Sep 17, 2020, at 12:15 AM, commits@source.squeak.org wrote:<br>> <br>> Marcel Taeumel uploaded a new version of ST80 to project The Trunk:<br>> http://source.squeak.org/trunk/ST80-mt.258.mcz<br>> <br>> ==================== Summary ====================<br>> <br>> Name: ST80-mt.258<br>> Author: mt<br>> Time: 17 September 2020, 9:15:53.534726 am<br>> UUID: c7ff9de0-a71a-4646-a639-211d94848498<br>> Ancestors: ST80-mt.257<br>> <br>> Fixes processing of deferred actions in MVC. <br>> <br>> Note that windows in MVC delegate control to their sub-controllers, however, remaining the active controller from the project's world perspective (i.e. the controller manager). Thus, we have to process two deferred-action queues in for most cases. For example, the text field in a workspace involves a PluggableTextController, embedded in a StandardSystemController. Any do-it like "Project current addDeferredUIMessage: [...]" will add the message to the StandardSystemController's queue.<br>> <br>> =============== Diff against ST80-mt.257 ===============<br>> <br>> Item was changed:<br>>  ----- Method: Controller>>controlActivity (in category 'control defaults') -----<br>>  controlActivity<br>>      "Pass control to the next control level (that is, to the Controller of a <br>>      subView of the receiver's view) if possible. It is sent by <br>>      Controller|controlLoop each time through the main control loop. It should <br>>      be redefined in a subclass if some other action is needed."<br>> <br>> +    self processDeferredActions.<br>> +    Project current world activeController processDeferredActions.<br>> -    [self deferredActionQueue isEmpty]<br>> -        whileFalse: [deferredActionQueue next value].<br>>      self controlToNextLevel!<br>> <br>> Item was added:<br>> + ----- Method: Controller>>processDeferredActions (in category 'control defaults') -----<br>> + processDeferredActions<br>> +    <br>> +    [self deferredActionQueue isEmpty]<br>> +        whileFalse: [deferredActionQueue next value].!<br>> <br>> Item was changed:<br>>  ----- Method: ParagraphEditor>>normalActivity (in category 'controlling') -----<br>>  normalActivity<br>>      self processKeyboard.<br>> +    self processMouseButtons.<br>> +    super normalActivity.<br>> +    !<br>> -    self processMouseButtons!<br><br>    first regarding the fix, wouldn’t it make more sense to put<br><br>    Project current world activeController processDeferredActions.<br><br>inside Controller>>processDeferredActions and have Controller>>controlActivity read<br><br>Controller|controlLoop each time through the main control loop. It should <br>     be redefined in a subclass if some other action is needed."<br><br>     self processDeferredActions.<br>     self controlToNextLevel<br><br>?<br><br>Second, doesn’t the two queue solution introduce a serious bug?  Doesn’t it reorder deferred actions depending on which queue the action gets added to?  Shouldn’t there in fact be a single SharedQueue for deferred actions?  Is this bug in Morphic too?<br><br>_,,,^..^,,,_ (phone)<br><br></div></blockquote></div>