[squeak-dev] PasteUpMorph>>#removeModalWindow has been deprecated --- what do we need to do?

H. Hirzel hannes.hirzel at gmail.com
Mon Oct 9 13:53:11 UTC 2017


On 10/9/17, Bob Arning <arning315 at comcast.net> wrote:
>
>
> On 10/9/17 9:13 AM, H. Hirzel wrote:
>> Looking a bit further it seems that modal window probably are not the
>> issue here
>>
>> MorphicProject(Project)
>> enter: returningFlag revert: revertFlag saveForRevert: saveForRevert
>>
>> ....
>> 	CurrentProject world triggerEvent: #aboutToLeaveWorld.
>> ....
>>
>>
>> PasteUpMorph
>> triggerEvent: anEventSelector
>> 	"Evaluate all actions registered for <anEventSelector>. Return the
>> value of the last registered action."
>>
>>      ^(self actionForEvent: anEventSelector) value
>>
>>
>> anEventSelector is #aboutToLeaveWorld
>> and this is not implemented in PasteUpMorph.
>>
>> We have an empty block and that causes #removeModalWindow in a way I
>> do not understand yet.
>>
>> But if we would have
>>
>>      #aboutToLeaveWorld
>>
>> Then it we probably would not have this problem.
>>
>> I wonder  #aboutToLeaveWorld  where this comes form, Squeak 3.9 and
>> Squeak 5.0 do not have it either.
>
> It's not a method, it's an event selector:
>
>      CurrentProject world triggerEvent: #aboutToLeaveWorld.
>
> WebCamMorph>>intoWorld: aWorld
>
>
>      super intoWorld: aWorld.
>      camIsOn ifTrue: [self on]
>                      ifFalse:[self off].
>      self removeActionsForEvent: #aboutToEnterWorld.
>      aWorld
>          when: #aboutToLeaveWorld
>          send: #outOfWorld:
>          to: self
>          with: aWorld.
>
> similar stuff removed in the intervening years
>
> B3DSceneMorph>>intoWorld: aWorld
>
>      "The receiver is showing in the given world"
>      aWorld ifNil:[^self].
>      super intoWorld: aWorld.
>      aWorld when: #aboutToLeaveWorld send: #suspendAcceleration to: self.
>      aWorld when: #aboutToEnterWorld send: #restoreAcceleration to: self.
>      self restoreAcceleration.
>
> also for WonderlandCameraMorph
>>
>> --Hannes


Thank you for pointing this out, Bob.

In Squeak 6.0a WebCamMorph is the only morph sending

     #when:send:to:with:


And there are only a few senders of

     #triggerEvent:

(see screen shot)

So how would you, Bob,  suggest to proceed?


--Hannes



>>
>> On 10/9/17, Marcel Taeumel <marcel.taeumel at hpi.de> wrote:
>>> Hi Hannes,
>>>
>>> if you can manage to set-up the modal child (window), that removal
>>> should
>>> happen automatically. Use SystemWindow >> #modalLockTo:. Also see Morph
>>> >>
>>> #openModal:. For "control-flow-modality", instead, you should use a
>>> DialogWindow. See DialogWindow >> #getUserResponse.
>>>
>>> Best,
>>> Marcel
>>> Am 09.10.2017 11:53:04 schrieb H. Hirzel <hannes.hirzel at gmail.com>:
>>> Hello
>>>
>>> I start a separate thread for the issue brought up in the tread
>>>
>>> MorphicProject subclass: #EtoysProject
>>>
>>>
>>> To see it in action make sure
>>>
>>> EToys-hjh.308.mcz
>>>
>>> is loaded. It contains a fix for the menuTitleBorderColor which makes
>>> the following Etoys project load smoothly.
>>>
>>> Then drop the Etoys project file
>>>
>>> http://squeakland.org/content/articles/attach/FollowRoad.012.pr
>>>
>>> onto the desktop.
>>>
>>>
>>>
>>> When I choose 'World menu' -> 'Previous project', the following happens
>>>
>>>
>>>
>>>
>>> ----------------------------------
>>> Project class
>>> ----------------------------------
>>>
>>> returnToPreviousProject
>>> "Return to the project from which this project was entered. Do
>>> nothing if the current project has no link to its previous project."
>>>
>>> | prevProj |
>>> prevProj := CurrentProject previousProject.
>>> prevProj ifNotNil: [prevProj enter: true revert: false
>>> saveForRevert: false].
>>>
>>>
>>>
>>> ---------------------
>>> MorphicProject(Project)
>>>
>>> enter: returningFlag revert: revertFlag saveForRevert: saveForRevert
>>> "Install my ChangeSet, Transcript, and scheduled views as current
>>> globals. If returningFlag is true, we will return to the project from
>>> whence the current project was entered; don't change its
>>> previousProject link in this case.
>>> If saveForRevert is true, save the ImageSegment of the project
>>> being left.
>>> If revertFlag is true, make stubs for the world of the project
>>> being left.
>>> If revertWithoutAsking is true in the project being left, then
>>> always revert."
>>>
>>> ......
>>> CurrentProject world triggerEvent: #aboutToLeaveWorld.
>>> .....
>>>
>>>
>>> ----------------
>>>
>>> PasteUpMorph
>>> --------------------
>>>
>>> triggerEvent: anEventSelector
>>> "Evaluate all actions registered for . Return the
>>> value of the last registered action."
>>>
>>> ^(self actionForEvent: anEventSelector) value
>>>
>>>
>>> ------------------------
>>> PasteUpMorph
>>> ------------------------
>>>
>>>
>>> removeModalWindow
>>> self deprecated: 'The global becomeModal is no longer supported, use
>>> e.g. a dialog window'.
>>> "self modalWindow: nil"
>>>
>>>
>>>
>>> As mentioned in the thread
>>> MorphicProject subclass: #EtoysProject
>>> the issue may be "resolved" by just commenting out the deprecation
>>> message.
>>>
>>>
>>>
>>> removeModalWindow
>>>
>>> "self deprecated: 'The global becomeModal is no longer supported, use
>>> e.g. a dialog window'. "
>>>
>>> self flag: #fixMe.
>>>
>>> "self modalWindow: nil"
>>>
>>>
>>>
>>> Should we do this for the moment until is is more clear how the
>>> navigation mechanism in Etoys works?
>>>
>>> Other suggestions?
>>>
>>>
>>> Kind regards
>>>
>>> Hannes Hirzel
>>>
>>>
>>>
>>>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Senders_of_triggerEvent_in_Squeak6.0a_Screenshot_2017-10-09.png
Type: image/png
Size: 56681 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20171009/0c85d4a1/attachment-0001.png>


More information about the Squeak-dev mailing list