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

H. Hirzel hannes.hirzel at gmail.com
Mon Oct 9 19:20:16 UTC 2017


BTW the three Etoys projects loaded into my new Squeak 6.0a trunk
image (see last mail in the MorphicProject subclass: #EtoysProject
thread; only one fix) are in fact all instances

 MorphicProject

I did not reimplement the conversion to #EtoysProject.

HH

On 10/9/17, H. Hirzel <hannes.hirzel at gmail.com> wrote:
> 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
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>>>
>>
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: EtoysProjects_dropped_into_Squeak6.0a_2017-10-09.png
Type: image/png
Size: 108004 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20171009/2421ecb6/attachment-0001.png>


More information about the Squeak-dev mailing list