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

H. Hirzel hannes.hirzel at gmail.com
Mon Oct 9 13:55:29 UTC 2017


I need to do investigations how the Squeak 6 based etoys 2016 image by
Tim Felgentreff does this.

http://wiki.squeak.org/squeak/6531

...

On 10/9/17, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> 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
>>>>
>>>>
>>>>
>>>>
>>
>>
>


More information about the Squeak-dev mailing list