[squeak-dev] The Trunk: Morphic-KLC.1318.mcz
Nicolas Cellier
nicolas.cellier.aka.nice at gmail.com
Fri Mar 10 22:51:24 UTC 2017
Maybe I moved it a bit fast to trunk because it's based on Morphic-bp.1317
But Morphic-bp.1317 does not work that great for me:
After activating Drag To Edges and disabling fastDragWindowForMorphic,
windows are effectively resized...
But they are kind of bouncing on the edge when I release mouse button
Well it's not catastrophic, but needs more care.
I'll wait a bit before merging.
2017-03-10 23:03 GMT+01:00 <commits at source.squeak.org>:
> 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]
> !
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20170310/b09a28e8/attachment.html>
More information about the Squeak-dev
mailing list
|