[squeak-dev] The Trunk: Morphic-KLC.1318.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Mar 10 22:03:40 UTC 2017


Nicolas Cellier uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-KLC.1318.mcz

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

Name: Morphic-KLC.1318
Author: KLC
Time: 10 March 2017, 3:57:38.932783 pm
UUID: 968604ea-690e-e84d-9905-e1ffc9b5dfc2
Ancestors: Morphic-bp.1317

Update Squeak Swiki link in Morph class comment.

=============== Diff against Morphic-bp.1316 ===============

Item was changed:
  Object subclass: #Morph
  	instanceVariableNames: 'bounds owner submorphs fullBounds color extension'
  	classVariableNames: 'IndicateKeyboardFocus PreferredCornerRadius UseSoftDropShadow'
  	poolDictionaries: ''
  	category: 'Morphic-Kernel'!
  
+ !Morph commentStamp: 'KLC 3/10/2017 15:50' prior: 0!
+ A Morph (from the Greek "shape" or "form") is an interactive graphical object. General information on the Morphic system can be found at http://wiki.squeak.org/squeak/30. 
- !Morph commentStamp: 'efc 2/26/2003 20:01' prior: 0!
- A Morph (from the Greek "shape" or "form") is an interactive graphical object. General information on the Morphic system can be found at http://minnow.cc.gatech.edu/squeak/30. 
  
  Morphs exist in a tree, rooted at a World (generally a PasteUpMorph). The morphs owned by a morph are its submorphs. Morphs are drawn recursively; if a Morph has no owner it never gets drawn. To hide a Morph and its submorphs, set its #visible property to false using the #visible: method. 
  
  The World (screen) coordinate system is used for most coordinates, but can be changed if there is a TransformMorph somewhere in the owner chain. 
  
  My instance variables have accessor methods (e.g., #bounds, #bounds:). Most users should use the accessor methods instead of using the instance variables directly.
  
  Structure:
  instance var 	Type 			Description 
  bounds 			Rectangle 		A Rectangle indicating my position and a size that will enclose 									me. 
  owner 			Morph		 	My parent Morph, or nil for the top-level Morph, which is a
   				or nil			world, typically a PasteUpMorph.
  submorphs 		Array 			My child Morphs. 
  fullBounds 		Rectangle 		A Rectangle minimally enclosing me and my submorphs. 
  color 			Color 			My primary color. Subclasses can use this in different ways. 
  extension 		MorphExtension Allows extra properties to be stored without adding a
  				or nil  				storage burden to all morphs. 
  
  By default, Morphs do not position their submorphs. Morphs may position their submorphs directly or use a LayoutPolicy to automatically control their submorph positioning.
  
  Although Morph has some support for BorderStyle, most users should use BorderedMorph if they want borders.!

Item was changed:
  MorphicModel subclass: #SystemWindow
+ 	instanceVariableNames: 'labelString stripes label closeBox collapseBox paneMorphs paneRects collapsedFrame fullFrame isCollapsed isActive isLookingFocused menuBox mustNotClose labelWidgetAllowance updatablePanes allowReframeHandles labelArea expandBox savedBounds'
- 	instanceVariableNames: 'labelString stripes label closeBox collapseBox paneMorphs paneRects collapsedFrame fullFrame isCollapsed isActive isLookingFocused menuBox mustNotClose labelWidgetAllowance updatablePanes allowReframeHandles labelArea expandBox'
  	classVariableNames: 'ClickOnLabelToEdit CloseBoxFrame CloseBoxImageFlat CloseBoxImageGradient CollapseBoxImageFlat CollapseBoxImageGradient DoubleClickOnLabelToExpand DragToEdges ExpandBoxFrame ExpandBoxImageFlat ExpandBoxImageGradient FocusFollowsMouse GradientWindow HideExpandButton MenuBoxFrame MenuBoxImageFlat MenuBoxImageGradient ResizeAlongEdges ReuseWindows RoundedWindowCorners TopWindow WindowTitleActiveOnFirstClick WindowsRaiseOnClick'
  	poolDictionaries: ''
  	category: 'Morphic-Windows'!
  
  !SystemWindow commentStamp: '<historical>' prior: 0!
  SystemWindow is the Morphic equivalent of StandardSystemView -- a labelled container for rectangular views, with iconic facilities for close, collapse/expand, and resizing.
  
  The attribute onlyActiveOnTop, if set to true (and any call to activate will set this), determines that only the top member of a collection of such windows on the screen shall be active.  To be not active means that a mouse click in any region will only result in bringing the window to the top and then making it active.!

Item was changed:
  ----- Method: SystemWindow>>handleListenEvent: (in category 'events') -----
  handleListenEvent: aUserInputEvent 
  	"See #mouseEnterDragging:. Watch for finished drag-and-drop action and lock contents accordingly."
- 
  	(aUserInputEvent isMouse and: [ aUserInputEvent hand hasSubmorphs not ]) ifTrue: 
  		[ self isKeyWindow ifFalse: [ self passivateIfNeeded ].
+ 		aUserInputEvent hand removeMouseListener: self ].
+ 
+ 	(aUserInputEvent hand submorphs includes: self) ifTrue: [
+ 		| clearArea selector |
+ 		clearArea := ActiveWorld clearArea.
+ 		(self class dragToEdges and: [(selector := self dragToEdgesSelectorFor: aUserInputEvent cursorPoint in: clearArea) notNil])
+ 			ifTrue: [
+ 				savedBounds ifNil: [savedBounds := self bounds].
+ 				self newBounds: (clearArea perform: selector)]
+ 			ifFalse: [
+ 				savedBounds ifNotNil: [
+ 					self newBounds: savedBounds.
+ 					savedBounds := nil]]]!
- 		aUserInputEvent hand removeMouseListener: self ].!

Item was changed:
  ----- Method: SystemWindow>>justDroppedInto:event: (in category 'geometry') -----
  justDroppedInto: aMorph event: anEvent
+ 	savedBounds := nil.
- 
  	isCollapsed
  		ifTrue: [self position: ((self position max: 0 at 0) grid: 8 at 8).
  				collapsedFrame := self bounds]
  		ifFalse: [fullFrame := self bounds].
  
  	self beKeyWindow.
  	self hasDropShadow: Preferences menuAppearance3d. "See #startDragFromLabel:."
  			
  	aMorph == self world ifTrue: [self assureLabelAreaVisible].
  
  	(Project uiManager openToolsAttachedToMouseCursor and: (self hasProperty: #initialDrop))
  		ifTrue: [
  			self removeProperty: #initialDrop.
  			(self submorphs detect: [:m | m isKindOf: BottomRightGripMorph] ifNone: [])
  				ifNotNil: [:grip | 
  					grip
  						referencePoint: anEvent position;
  						setProperty: #targetHadDropShadow toValue: true "See MorphicToolBuilder >> #open:".
  					self hasDropShadow: false.
  					anEvent hand newMouseFocus: grip]].
  			
  	^super justDroppedInto: aMorph event: anEvent!

Item was changed:
  ----- Method: SystemWindow>>startDragFromLabel: (in category 'events') -----
  startDragFromLabel: evt
  	"When label events are active, we need to pass dragging to the window explicitely
  	 The window only recognizes a drag with an offset of more than 3 pixels"
  	
  	self isSticky ifTrue: [^ self].
  	self fastFramingOn 
  		ifTrue: [self doFastFrameDrag: evt cursorPoint]
  		ifFalse: [
  			self hasDropShadow: false.
+ 			evt hand grabMorph: self topRendererOrSelf.
+ 			evt hand addMouseListener: self]
- 			evt hand grabMorph: self topRendererOrSelf]
  !



More information about the Squeak-dev mailing list