The Trunk: MorphicExtras-nice.143.mcz

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

The Trunk: MorphicExtras-nice.143.mcz

commits-2
Nicolas Cellier uploaded a new version of MorphicExtras to project The Trunk:
http://source.squeak.org/trunk/MorphicExtras-nice.143.mcz

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

Name: MorphicExtras-nice.143
Author: nice
Time: 15 December 2013, 10:55:31.161 pm
UUID: f8c6df1c-bcd3-409a-98bb-8530a01bae91
Ancestors: MorphicExtras-nice.142

Reintegrate methods for supporting strictlyStaggered window placement policy in System.
The methods do not refer to Flaps directly anymore.

=============== Diff against MorphicExtras-nice.142 ===============

Item was removed:
- ----- Method: RealEstateAgent class>>strictlyStaggeredInitialFrameFor:initialExtent: (in category '*MorphicExtras-framing') -----
- strictlyStaggeredInitialFrameFor: aStandardSystemView initialExtent: initialExtent
-
- self error: 'please use #strictlyStaggeredInitialFrameFor:initialExtent:world:'!

Item was removed:
- ----- Method: RealEstateAgent class>>strictlyStaggeredInitialFrameFor:initialExtent:world: (in category '*MorphicExtras-framing') -----
- strictlyStaggeredInitialFrameFor: aStandardSystemView initialExtent: initialExtent world: aWorld
- "This method implements a staggered window placement policy that I (di) like.
- Basically it provides for up to 4 windows, staggered from each of the 4 corners.
- The windows are staggered so that there will always be a corner visible."
-
- | allowedArea grid initialFrame otherFrames cornerSel corner delta putativeCorner free maxLevel |
-
- allowedArea :=(self maximumUsableAreaInWorld: aWorld)
- insetBy: (self scrollBarSetback @ self screenTopSetback extent: 0@0).
- (Smalltalk isMorphic and: [Flaps sharedFlapsAllowed]) ifTrue:
- [allowedArea := self reduceByFlaps: allowedArea].
- "Number to be staggered at each corner (less on small screens)"
- maxLevel := allowedArea area > 300000 ifTrue: [3] ifFalse: [2].
- "Amount by which to stagger (less on small screens)"
- grid := allowedArea area > 500000 ifTrue: [40] ifFalse: [20].
- initialFrame := 0@0 extent: ((initialExtent
- "min: (allowedArea extent - (grid*(maxLevel+1*2) + (grid//2))))
- min: 600@400")).
- otherFrames := Smalltalk isMorphic
- ifTrue: [(SystemWindow windowsIn: aWorld satisfying: [:w | w isCollapsed not])
- collect: [:w | w bounds]]
- ifFalse: [ScheduledControllers scheduledWindowControllers
- select: [:aController | aController view ~~ nil]
- thenCollect: [:aController | aController view isCollapsed
- ifTrue: [aController view expandedFrame]
- ifFalse: [aController view displayBox]]].
- 0 to: maxLevel do:
- [:level |
- 1 to: 4 do:
- [:ci | cornerSel := #(topLeft topRight bottomRight bottomLeft) at: ci.
- corner := allowedArea perform: cornerSel.
- "The extra grid//2 in delta helps to keep title tabs distinct"
- delta := (maxLevel-level*grid+(grid//2)) @ (level*grid).
- 1 to: ci-1 do: [:i | delta := delta rotateBy: #right centerAt: 0@0]. "slow way"
- putativeCorner := corner + delta.
- free := true.
- otherFrames do:
- [:w |
- free := free & ((w perform: cornerSel) ~= putativeCorner)].
- free ifTrue:
- [^ (initialFrame align: (initialFrame perform: cornerSel)
- with: putativeCorner)
- translatedAndSquishedToBeWithin: allowedArea]]].
- "If all else fails..."
- ^ (self scrollBarSetback @ self screenTopSetback extent: initialFrame extent)
- translatedAndSquishedToBeWithin: allowedArea!