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

H. Hirzel hannes.hirzel at gmail.com
Mon Oct 9 19:03:40 UTC 2017


Hello Bob

On 10/9/17, Bob Arning <arning315 at comcast.net> wrote:
> 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.

I  thought of this too. And it works.

But see my email to Marcel.

I think it is better to do

     self world actionMap removeKey: #aboutToLeaveWorld

at the proper place. During the project loading somewhere.

Regards
Hannes

>
> 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
>>>>>
>>>>>
>>>>>
>>>>>
>>>
>>>
>>>
>
>


More information about the Squeak-dev mailing list