A new version of Morphic was added to project The Inbox: http://source.squeak.org/inbox/Morphic-bp.1317.mcz
==================== Summary ====================
Name: Morphic-bp.1317 Author: bp Time: 8 December 2016, 9:07:14.528425 pm UUID: 6ed0a859-f5e2-423a-b600-fd5a45aa0736 Ancestors: Morphic-bp.1316
Make Drag To Edges also work if fastDragWindowForMorphic is turned off
=============== Diff against Morphic-bp.1316 ===============
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@0) grid: 8@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] !
Dear Squeakers,
In addition to my changes from a year ago which I implemented the Drag To Edges feature also for slow window dragging. I would be grateful if someone with more Morphic experience did a review of my implementation. I am not sure if this is the correct way to do this.
Cheers, Bernhard
Am 08.12.2016 um 21:07 schrieb commits@source.squeak.org:
A new version of Morphic was added to project The Inbox: http://source.squeak.org/inbox/Morphic-bp.1317.mcz
==================== Summary ====================
Name: Morphic-bp.1317 Author: bp Time: 8 December 2016, 9:07:14.528425 pm UUID: 6ed0a859-f5e2-423a-b600-fd5a45aa0736 Ancestors: Morphic-bp.1316
Make Drag To Edges also work if fastDragWindowForMorphic is turned off
=============== Diff against Morphic-bp.1316 ===============
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@0) grid: 8@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]
!
squeak-dev@lists.squeakfoundation.org