The Trunk: System-mt.724.mcz

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

The Trunk: System-mt.724.mcz

commits-2
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@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@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!