The Trunk: Morphic-mt.1426.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Morphic-mt.1426.mcz

commits-2
Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1426.mcz

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

Name: Morphic-mt.1426
Author: mt
Time: 4 May 2018, 8:49:10.20407 am
UUID: 1f2d43f7-f891-4a45-a18c-306ae6fa4094
Ancestors: Morphic-mt.1425

Minor fix to reset mouse cursor for drag-drop operations. Got annoying because of the text cursor in workspaces. Try: "Morph new openInHand".

Needs further clean-up because #attachMorph:, #grabMorph:, and #grabMorph:from: exhibit much code duplication.

=============== Diff against Morphic-mt.1425 ===============

Item was changed:
  ----- Method: HandMorph>>attachMorph: (in category 'grabbing/dropping') -----
  attachMorph: m
  "Position the center of the given morph under this hand, then grab it.
  This method is used to grab far away or newly created morphs."
  | delta |
  self releaseMouseFocus. "Break focus"
+ self showTemporaryCursor: nil.
  delta := m bounds extent // 2.
  m position: (self position - delta).
  m formerPosition: m position.
  targetOffset := m position - self position.
  self addMorphBack: m.!

Item was changed:
  ----- Method: HandMorph>>grabMorph: (in category 'meta-actions') -----
  grabMorph: aMorph
  "Grab the given morph (i.e., add it to this hand and remove it from its current owner) without changing its position. This is used to pick up a morph under the hand's current position, versus attachMorph: which is used to pick up a morph that may not be near this hand."
  | grabbed |
  self releaseMouseFocus. "Break focus"
+ self showTemporaryCursor: nil.
  grabbed := aMorph aboutToBeGrabbedBy: self.
  grabbed ifNil:[^self].
  grabbed := grabbed topRendererOrSelf.
  ^self grabMorph: grabbed from: grabbed owner!

Item was changed:
  ----- Method: HandMorph>>grabMorph:from: (in category 'grabbing/dropping') -----
  grabMorph: aMorph from: formerOwner
  "Grab the given morph (i.e., add it to this hand and remove it from its current owner) without changing its position. This is used to pick up a morph under the hand's current position, versus attachMorph: which is used to pick up a morph that may not be near this hand."
 
  | grabbed offset targetPoint grabTransform fullTransform |
  self releaseMouseFocus. "Break focus"
+ self showTemporaryCursor: nil.
  grabbed := aMorph.
  aMorph keepsTransform ifTrue:[
  grabTransform := fullTransform := IdentityTransform new.
  ] ifFalse:[
  "Compute the transform to apply to the grabbed morph"
  grabTransform := formerOwner
  ifNil: [IdentityTransform new]
  ifNotNil: [formerOwner grabTransform].
  "Compute the full transform for the grabbed morph"
  fullTransform := formerOwner
  ifNil: [IdentityTransform new]
  ifNotNil: [formerOwner transformFrom: owner].
  ].
  "targetPoint is point in aMorphs reference frame"
  targetPoint := fullTransform globalPointToLocal: self position.
  "but current position will be determined by grabTransform, so compute offset"
  offset := targetPoint - (grabTransform globalPointToLocal: self position).
  "apply the transform that should be used after grabbing"
  grabbed := grabbed transformedBy: grabTransform.
  grabbed == aMorph
  ifFalse: [grabbed setProperty: #addedFlexAtGrab toValue: true].
  "offset target to compensate for differences in transforms"
  grabbed position: grabbed position - offset asIntegerPoint.
  "And compute distance from hand's position"
  targetOffset := grabbed position - self position.
  self addMorphBack: grabbed.
  grabbed justGrabbedFrom: formerOwner.!