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

Bob Arning arning315 at comcast.net
Mon Oct 9 15:52:25 UTC 2017


My iconoclastic view is to simply tone down the deprecation. If one 
cannot add a modal window, then attempting to remove one could be a 
silent no-op.


On 10/9/17 9:53 AM, H. Hirzel 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
>>>>
>>>>
>>>>
>>>>
>>
>>
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20171009/ddbf422c/attachment.html>


More information about the Squeak-dev mailing list