<div dir="ltr">Well, this was the simplest fix.<div>When the number of collapsed windows overflowed the screen vertical space the algorithm gave up and piled them at 0@0.</div><div>Now they pile up 20 pixels down instead.</div>
<div><br></div><div>Feel free to enhance further :-)</div><div><br></div><div>Karl</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jul 19, 2014 at 6:25 PM, Chris Muller <span dir="ltr"><<a href="mailto:asqueaker@gmail.com" target="_blank">asqueaker@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It's very easy for there to be no Docking Bar. <div><br></div><div>It's very easy for the Docking Bar to be higher than 20 pixels.</div>
<div><div><br></div></div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br>
<div class="gmail_quote">On Sat, Jul 19, 2014 at 5:08 AM, <span dir="ltr"><<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Karl Ramberg uploaded a new version of System to project The Trunk:<br>
<a href="http://source.squeak.org/trunk/System-kfr.677.mcz" target="_blank">http://source.squeak.org/trunk/System-kfr.677.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: System-kfr.677<br>
Author: kfr<br>
Time: 19 July 2014, 11:59:39.569 am<br>
UUID: 433661e2-5f76-1f4b-9498-39bf61ed6bd0<br>
Ancestors: System-eem.676<br>
<br>
Don't put collapsed windows behind the docking bar.<br>
<br>
=============== Diff against System-eem.676 ===============<br>
<br>
Item was changed:<br>
----- Method: RealEstateAgent class>>assignCollapseFrameFor: (in category 'utilities') -----<br>
assignCollapseFrameFor: aSSView<br>
"Offer up a location along the left edge of the screen for a collapsed SSView. Make sure it doesn't overlap any other collapsed frames."<br>
<br>
| grid otherFrames topLeft viewBox collapsedFrame extent newFrame verticalBorderDistance top |<br>
grid := 8.<br>
verticalBorderDistance := 8.<br>
aSSView isMorph<br>
ifTrue: [otherFrames := (SystemWindow windowsIn: aSSView world satisfying: [:w | w ~= aSSView])<br>
collect: [:w | w collapsedFrame]<br>
thenSelect: [:rect | rect notNil].<br>
viewBox := self maximumUsableAreaInWorld: aSSView world]<br>
ifFalse: [otherFrames := ScheduledControllers scheduledWindowControllers<br>
collect: [:aController | aController view ~= aSSView ifTrue: [aController view collapsedFrame]]<br>
thenSelect: [:rect | rect notNil].<br>
viewBox := Display boundingBox].<br>
collapsedFrame := aSSView collapsedFrame.<br>
extent := collapsedFrame notNil<br>
ifTrue: [collapsedFrame extent]<br>
ifFalse: [aSSView isMorph<br>
ifTrue: [aSSView getRawLabel width + aSSView labelWidgetAllowance @ (aSSView labelHeight + 2)]<br>
ifFalse: [(aSSView labelText extent x + 70) @ aSSView labelHeight<br>
min: aSSView labelDisplayBox extent]].<br>
collapsedFrame notNil<br>
ifTrue: [(otherFrames anySatisfy: [:f | collapsedFrame intersects: f])<br>
ifFalse: ["non overlapping"<br>
^ collapsedFrame]].<br>
top := viewBox top + verticalBorderDistance.<br>
[topLeft := viewBox left @ top.<br>
newFrame := topLeft extent: extent.<br>
newFrame bottom <= (viewBox height - verticalBorderDistance)]<br>
whileTrue:<br>
[(otherFrames anySatisfy: [:w | newFrame intersects: w])<br>
ifFalse: ["no overlap"<br>
^ newFrame].<br>
top := top + grid].<br>
"If all else fails... (really to many wins here)"<br>
+ ^ 0 @ 20 extent: extent!<br>
- ^ 0 @ 0 extent: extent!<br>
<br>
<br>
</blockquote></div><br></div>
</div></div><br><br>
<br></blockquote></div><br></div>