Quantcast

The Inbox: Morphic-pre.1329.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

The Inbox: Morphic-pre.1329.mcz

commits-2
A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-pre.1329.mcz

==================== Summary ====================

Name: Morphic-pre.1329
Author: pre
Time: 15 March 2017, 4:16:07.772309 pm
UUID: bb5c49b1-402a-9443-b129-ae2e0f250f8f
Ancestors: Morphic-edc.1328

Changes the accept dropping behavior of the world to open the morph for a dropped object where it was dropped.

=============== Diff against Morphic-edc.1328 ===============

Item was changed:
  ----- Method: PasteUpMorph>>acceptDroppingMorph:event: (in category 'dropping/grabbing') -----
  acceptDroppingMorph: dropped event: evt
  "The supplied morph, known to be acceptable to the receiver, is now to be assimilated; the precipitating event is supplied"
 
  | aMorph |
  aMorph := self morphToDropFrom: dropped.
  self isWorldMorph
  ifTrue:["Add the given morph to this world and start stepping it if it wants to be."
+ aMorph position: evt position.
  self addMorphFront: aMorph.
  (aMorph fullBounds intersects: self viewBox) ifFalse:
  [Beeper beep.  aMorph position: self bounds center]]
  ifFalse:[super acceptDroppingMorph: aMorph event: evt].
 
  aMorph submorphsDo: [:m | (m isKindOf: HaloMorph) ifTrue: [m delete]].
  aMorph allMorphsDo:  "Establish any penDown morphs in new world"
  [:m | | tfm mm |
  m player ifNotNil:
  [m player getPenDown ifTrue:
  [((mm := m player costume) notNil and: [(tfm := mm owner transformFrom: self) notNil])
  ifTrue: [self noteNewLocation: (tfm localPointToGlobal: mm referencePosition)
  forPlayer: m player]]]].
 
  self isPartsBin
  ifTrue:
  [aMorph isPartsDonor: true.
  aMorph stopSteppingSelfAndSubmorphs.
  aMorph suspendEventHandler]
  ifFalse:
  [self world startSteppingSubmorphsOf: aMorph].
 
  " self presenter morph: aMorph droppedIntoPasteUpMorph: self."
  self griddingOn ifTrue: [aMorph position: (self gridPoint: aMorph position)].
  self showingListView ifTrue:
  [self sortSubmorphsBy: (self valueOfProperty: #sortOrder).
  self currentWorld abandonAllHalos].
 
  self bringTopmostsToFront.
  !


Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: The Inbox: Morphic-pre.1329.mcz

Hannes Hirzel
Could you please give more details and a use case? (screen shot)

--Hannes

On Wed, 15 Mar 2017 15:16:31 0000, [hidden email]
<[hidden email]> wrote:

> A new version of Morphic was added to project The Inbox:
> http://source.squeak.org/inbox/Morphic-pre.1329.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-pre.1329
> Author: pre
> Time: 15 March 2017, 4:16:07.772309 pm
> UUID: bb5c49b1-402a-9443-b129-ae2e0f250f8f
> Ancestors: Morphic-edc.1328
>
> Changes the accept dropping behavior of the world to open the morph for a
> dropped object where it was dropped.
>
> =============== Diff against Morphic-edc.1328 ===============
>
> Item was changed:
>   ----- Method: PasteUpMorph>>acceptDroppingMorph:event: (in category
> 'dropping/grabbing') -----
>   acceptDroppingMorph: dropped event: evt
>   "The supplied morph, known to be acceptable to the receiver, is now to be
> assimilated; the precipitating event is supplied"
>
>   | aMorph |
>   aMorph := self morphToDropFrom: dropped.
>   self isWorldMorph
>   ifTrue:["Add the given morph to this world and start stepping it if it
> wants to be."
> + aMorph position: evt position.
>   self addMorphFront: aMorph.
>   (aMorph fullBounds intersects: self viewBox) ifFalse:
>   [Beeper beep.  aMorph position: self bounds center]]
>   ifFalse:[super acceptDroppingMorph: aMorph event: evt].
>
>   aMorph submorphsDo: [:m | (m isKindOf: HaloMorph) ifTrue: [m delete]].
>   aMorph allMorphsDo:  "Establish any penDown morphs in new world"
>   [:m | | tfm mm |
>   m player ifNotNil:
>   [m player getPenDown ifTrue:
>   [((mm := m player costume) notNil and: [(tfm := mm owner
> transformFrom: self) notNil])
>   ifTrue: [self noteNewLocation: (tfm localPointToGlobal: mm
> referencePosition)
>   forPlayer: m player]]]].
>
>   self isPartsBin
>   ifTrue:
>   [aMorph isPartsDonor: true.
>   aMorph stopSteppingSelfAndSubmorphs.
>   aMorph suspendEventHandler]
>   ifFalse:
>   [self world startSteppingSubmorphsOf: aMorph].
>
>   " self presenter morph: aMorph droppedIntoPasteUpMorph: self."
>   self griddingOn ifTrue: [aMorph position: (self gridPoint: aMorph
> position)].
>   self showingListView ifTrue:
>   [self sortSubmorphsBy: (self valueOfProperty: #sortOrder).
>   self currentWorld abandonAllHalos].
>
>   self bringTopmostsToFront.
>   !
>
>
>

Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: The Inbox: Morphic-pre.1329.mcz

Patrick R.
This allows for more "intuitive" drag and drop behavior. When I drop something into the world and a morph is opened for it than the morph is displayed at the position where the element was dropped. For a simple example so the gif attached.

To avoid confusions: I have already moved the change into trunk. However, I am thankful for you bringing this up as I am not sure about all implications yet.
________________________________________
From: Squeak-dev <[hidden email]> on behalf of H. Hirzel <[hidden email]>
Sent: Wednesday, March 22, 2017 10:02
To: [hidden email]
Subject: Re: [squeak-dev] The Inbox: Morphic-pre.1329.mcz

Could you please give more details and a use case? (screen shot)

--Hannes

On Wed, 15 Mar 2017 15:16:31 0000, [hidden email]
<[hidden email]> wrote:

> A new version of Morphic was added to project The Inbox:
> http://source.squeak.org/inbox/Morphic-pre.1329.mcz
>
> ==================== Summary ====================
>
> Name: Morphic-pre.1329
> Author: pre
> Time: 15 March 2017, 4:16:07.772309 pm
> UUID: bb5c49b1-402a-9443-b129-ae2e0f250f8f
> Ancestors: Morphic-edc.1328
>
> Changes the accept dropping behavior of the world to open the morph for a
> dropped object where it was dropped.
>
> =============== Diff against Morphic-edc.1328 ===============
>
> Item was changed:
>   ----- Method: PasteUpMorph>>acceptDroppingMorph:event: (in category
> 'dropping/grabbing') -----
>   acceptDroppingMorph: dropped event: evt
>       "The supplied morph, known to be acceptable to the receiver, is now to be
> assimilated; the precipitating event is supplied"
>
>       | aMorph |
>       aMorph := self morphToDropFrom: dropped.
>       self isWorldMorph
>               ifTrue:["Add the given morph to this world and start stepping it if it
> wants to be."
> +                             aMorph position: evt position.
>                               self addMorphFront: aMorph.
>                               (aMorph fullBounds intersects: self viewBox) ifFalse:
>                                       [Beeper beep.  aMorph position: self bounds center]]
>               ifFalse:[super acceptDroppingMorph: aMorph event: evt].
>
>       aMorph submorphsDo: [:m | (m isKindOf: HaloMorph) ifTrue: [m delete]].
>       aMorph allMorphsDo:  "Establish any penDown morphs in new world"
>               [:m | | tfm mm |
>               m player ifNotNil:
>                       [m player getPenDown ifTrue:
>                               [((mm := m player costume) notNil and: [(tfm := mm owner
> transformFrom: self) notNil])
>                                       ifTrue: [self noteNewLocation: (tfm localPointToGlobal: mm
> referencePosition)
>                                                                       forPlayer: m player]]]].
>
>       self isPartsBin
>               ifTrue:
>                       [aMorph isPartsDonor: true.
>                       aMorph stopSteppingSelfAndSubmorphs.
>                       aMorph suspendEventHandler]
>               ifFalse:
>                       [self world startSteppingSubmorphsOf: aMorph].
>
>   "   self presenter morph: aMorph droppedIntoPasteUpMorph: self."
>       self griddingOn ifTrue: [aMorph position: (self gridPoint: aMorph
> position)].
>       self showingListView ifTrue:
>               [self sortSubmorphsBy: (self valueOfProperty: #sortOrder).
>               self currentWorld abandonAllHalos].
>
>       self bringTopmostsToFront.
>   !
>
>
>



dndrop.gif (266K) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: The Inbox: Morphic-pre.1329.mcz

Bob Arning-2

I guess one question is why the bowl was attached to the hand at the lower left corner of the bowl rather than the upper left. If it had been attached at the upper left, then it probably would have dropped right where expected.


On 3/23/17 11:13 AM, Rein, Patrick wrote:
This allows for more "intuitive" drag and drop behavior. When I drop something into the world and a morph is opened for it than the morph is displayed at the position where the element was dropped. For a simple example so the gif attached.



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: The Inbox: Morphic-pre.1329.mcz

Patrick R.

Well before the change, the morph would have opened anywhere in the world. Most of the time that was not close to the hand.


You are right though, that the new behavior look weird too... Maybe this is because it looks good for dragging menu items?


From: Squeak-dev <[hidden email]> on behalf of Bob Arning <[hidden email]>
Sent: Thursday, March 23, 2017 16:36
To: [hidden email]
Subject: Re: [squeak-dev] The Inbox: Morphic-pre.1329.mcz
 

I guess one question is why the bowl was attached to the hand at the lower left corner of the bowl rather than the upper left. If it had been attached at the upper left, then it probably would have dropped right where expected.


On 3/23/17 11:13 AM, Rein, Patrick wrote:
This allows for more "intuitive" drag and drop behavior. When I drop something into the world and a morph is opened for it than the morph is displayed at the position where the element was dropped. For a simple example so the gif attached.



Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: The Inbox: Morphic-pre.1329.mcz

Bob Arning-2

The real question is how the morph got attached to the hand in the first place. People have been picking morphs up and dropping them for decades, so there is something new here. Do you have the code that put the bowl into the hand?


On 3/23/17 11:43 AM, Rein, Patrick wrote:

Well before the change, the morph would have opened anywhere in the world. Most of the time that was not close to the hand.


You are right though, that the new behavior look weird too... Maybe this is because it looks good for dragging menu items?


From: Squeak-dev [hidden email] on behalf of Bob Arning [hidden email]
Sent: Thursday, March 23, 2017 16:36
To: [hidden email]
Subject: Re: [squeak-dev] The Inbox: Morphic-pre.1329.mcz
 

I guess one question is why the bowl was attached to the hand at the lower left corner of the bowl rather than the upper left. If it had been attached at the upper left, then it probably would have dropped right where expected.


On 3/23/17 11:13 AM, Rein, Patrick wrote:
This allows for more "intuitive" drag and drop behavior. When I drop something into the world and a morph is opened for it than the morph is displayed at the position where the element was dropped. For a simple example so the gif attached.




    



Loading...