[squeak-dev] The Trunk: System-mt.724.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Apr 21 15:03:43 UTC 2015
Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.724.mcz
==================== Summary ====================
Name: System-mt.724
Author: mt
Time: 21 April 2015, 5:02:56.983 pm
UUID: 52871848-7fab-d248-801d-0043ca48c4f7
Ancestors: System-ul.723
Move check for big displays from SystemWindow to RealEstateManager. Some refactorings in RealEstateManager.
=============== Diff against System-ul.723 ===============
Item was removed:
- ----- Method: RealEstateAgent class>>initialFrameFor: (in category 'framing') -----
- initialFrameFor: aView
- "Find a plausible initial screen area for the supplied view. See called method."
-
- self error: 'please use #initialFrameFor:world:'!
Item was removed:
- ----- Method: RealEstateAgent class>>initialFrameFor:initialExtent: (in category 'framing') -----
- initialFrameFor: aView initialExtent: initialExtent
-
- self error: 'please use #initialFrameFor:initialExtent:world:'!
Item was changed:
----- Method: RealEstateAgent class>>initialFrameFor:initialExtent:world: (in category 'framing') -----
initialFrameFor: aView initialExtent: initialExtent world: aWorld
- "Find a plausible initial screen area for the supplied view, which should be a StandardSystemView, taking into account the 'reverseWindowStagger' Preference, the size needed, and other windows currently on the screen."
+ | scaledExtent |
+ scaledExtent := Preferences bigDisplay
+ ifTrue: [(initialExtent * 1.75) rounded]
+ ifFalse: [initialExtent].
- | allOrigins screenRight screenBottom putativeOrigin putativeFrame allowedArea staggerOrigin otherFrames |
+ ^ Preferences reverseWindowStagger
+ ifTrue: [self strictlyStaggeredInitialFrameFor: aView initialExtent: scaledExtent world: aWorld]
+ ifFalse: [self normalInitialFrameFor: aView initialExtent: scaledExtent world: aWorld]!
- Preferences reverseWindowStagger ifTrue:
- [^ self strictlyStaggeredInitialFrameFor: aView initialExtent: initialExtent world: aWorld].
-
- allowedArea := self maximumUsableAreaInWorld: aWorld.
- screenRight := allowedArea right.
- screenBottom := allowedArea bottom.
-
- 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]]].
-
- allOrigins := otherFrames collect: [:f | f origin].
- (self standardPositionsInWorld: aWorld) do: "First see if one of the standard positions is free"
- [:aPosition | (allOrigins includes: aPosition)
- ifFalse:
- [^ (aPosition extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea]].
-
- staggerOrigin := (self standardPositionsInWorld: aWorld) first. "Fallback: try offsetting from top left"
- putativeOrigin := staggerOrigin.
-
- [putativeOrigin := putativeOrigin + StaggerOffset.
- putativeFrame := putativeOrigin extent: initialExtent.
- (putativeFrame bottom < screenBottom) and:
- [putativeFrame right < screenRight]]
- whileTrue:
- [(allOrigins includes: putativeOrigin)
- ifFalse:
- [^ (putativeOrigin extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea]].
- ^ (self scrollBarSetback @ self screenTopSetback extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea!
Item was added:
+ ----- Method: RealEstateAgent class>>normalInitialFrameFor:initialExtent:world: (in category 'framing - private') -----
+ normalInitialFrameFor: aView initialExtent: initialExtent world: aWorld
+ "Find a plausible initial screen area for the supplied view, which should be a StandardSystemView, taking into account the 'reverseWindowStagger' Preference, the size needed, and other windows currently on the screen."
+
+ | allOrigins screenRight screenBottom putativeOrigin putativeFrame allowedArea staggerOrigin otherFrames |
+
+ allowedArea := self maximumUsableAreaInWorld: aWorld.
+ screenRight := allowedArea right.
+ screenBottom := allowedArea bottom.
+
+ 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]]].
+
+ allOrigins := otherFrames collect: [:f | f origin].
+ (self standardPositionsInWorld: aWorld) do: "First see if one of the standard positions is free"
+ [:aPosition | (allOrigins includes: aPosition)
+ ifFalse:
+ [^ (aPosition extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea]].
+
+ staggerOrigin := (self standardPositionsInWorld: aWorld) first. "Fallback: try offsetting from top left"
+ putativeOrigin := staggerOrigin.
+
+ [putativeOrigin := putativeOrigin + StaggerOffset.
+ putativeFrame := putativeOrigin extent: initialExtent.
+ (putativeFrame bottom < screenBottom) and:
+ [putativeFrame right < screenRight]]
+ whileTrue:
+ [(allOrigins includes: putativeOrigin)
+ ifFalse:
+ [^ (putativeOrigin extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea]].
+ ^ (self scrollBarSetback @ self screenTopSetback extent: initialExtent) translatedAndSquishedToBeWithin: allowedArea!
Item was removed:
- ----- Method: RealEstateAgent class>>strictlyStaggeredInitialFrameFor:initialExtent: (in category 'framing') -----
- strictlyStaggeredInitialFrameFor: aStandardSystemView initialExtent: initialExtent
-
- self error: 'please use #strictlyStaggeredInitialFrameFor:initialExtent:world:'!
Item was changed:
+ ----- Method: RealEstateAgent class>>strictlyStaggeredInitialFrameFor:initialExtent:world: (in category 'framing - private') -----
- ----- Method: RealEstateAgent class>>strictlyStaggeredInitialFrameFor:initialExtent:world: (in category '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 at 0).
"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 at 0 extent: ((initialExtent
"min: (allowedArea extent - (grid*(maxLevel+1*2) + (grid//2))))
min: 600 at 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 at 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!
More information about the Squeak-dev
mailing list
|