The Inbox: MorphicExtras-dtl.210.mcz

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

The Inbox: MorphicExtras-dtl.210.mcz

commits-2
David T. Lewis uploaded a new version of MorphicExtras to project The Inbox:
http://source.squeak.org/inbox/MorphicExtras-dtl.210.mcz

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

Name: MorphicExtras-dtl.210
Author: dtl
Time: 30 September 2017, 11:00:57.627669 am
UUID: 4c13263d-1a0c-4857-8906-4ea09598f70b
Ancestors: MorphicExtras-tpr.209

Reimplement RealEstateAgent class>>reduceByFlaps: to protect margins for size of flap handles, but no special case logic for 'Painting' flap, and do not reduce margins by 64 in any case.

This affects placement of SystemWindows, which avoids covering top flaps with a repositioned window. The previous implementation prevented placement of windows at the top portion of the display area if flaps were enabled in a project.

=============== Diff against MorphicExtras-tpr.209 ===============

Item was changed:
  ----- Method: RealEstateAgent class>>reduceByFlaps: (in category '*MorphicExtras-utilities') -----
  reduceByFlaps: aScreenRect
  "Return a rectangle that won't interfere with default shared flaps"
 
+ | top bottom left right |
  Flaps sharedFlapsAllowed ifFalse: [^ aScreenRect copy].
+
+ top := bottom := left := right := 0.
+ Flaps globalFlapTabs do: [ :ft | | w h |
+ w := ft width.
+ h := ft height.
+ ft edgeToAdhereTo
+ caseOf: {
+ [ #top ] -> [ top := top max: h ].
+ [ #bottom ] -> [ bottom := bottom max: h ] .
+ [ #left ] -> [ left := left max: w ] .
+ [ #right ] -> [ right := right max: w ] .
+ }
+ otherwise: [] ].
+ ^ Rectangle
+ origin: aScreenRect origin + (left @ top)
+ extent: aScreenRect extent - (bottom @ right).
+ !
- (Flaps globalFlapTabsIfAny allSatisfy:
- [:ft | ft flapID = 'Painting' translated or: [ft edgeToAdhereTo == #bottom]])
- ifTrue: [^ aScreenRect withHeight: aScreenRect height - 18]
- ifFalse: [^ aScreenRect insetBy: 64]!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: MorphicExtras-dtl.210.mcz

David T. Lewis
This is my attempt to fix a problem with positioning of system windows
in a project that has flaps enabled. I am not certain of the intent of
#reduceByFlaps: because the previous logic may have been trying to
accommodate Etoys geometry, and I do know know if this changee will have
broken something in that regard.

I also do not know if the check to prevent obscuring flaps along the top
margin is actually needed at all, since a repositioned window can cover
the flaps along the left, right, and bottom margins anyway.

Dave


On Sat, Sep 30, 2017 at 03:01:06PM +0000, [hidden email] wrote:

> David T. Lewis uploaded a new version of MorphicExtras to project The Inbox:
> http://source.squeak.org/inbox/MorphicExtras-dtl.210.mcz
>
> ==================== Summary ====================
>
> Name: MorphicExtras-dtl.210
> Author: dtl
> Time: 30 September 2017, 11:00:57.627669 am
> UUID: 4c13263d-1a0c-4857-8906-4ea09598f70b
> Ancestors: MorphicExtras-tpr.209
>
> Reimplement RealEstateAgent class>>reduceByFlaps: to protect margins for size of flap handles, but no special case logic for 'Painting' flap, and do not reduce margins by 64 in any case.
>
> This affects placement of SystemWindows, which avoids covering top flaps with a repositioned window. The previous implementation prevented placement of windows at the top portion of the display area if flaps were enabled in a project.
>
> =============== Diff against MorphicExtras-tpr.209 ===============
>
> Item was changed:
>   ----- Method: RealEstateAgent class>>reduceByFlaps: (in category '*MorphicExtras-utilities') -----
>   reduceByFlaps: aScreenRect
>   "Return a rectangle that won't interfere with default shared flaps"
>  
> + | top bottom left right |
>   Flaps sharedFlapsAllowed ifFalse: [^ aScreenRect copy].
> +
> + top := bottom := left := right := 0.
> + Flaps globalFlapTabs do: [ :ft | | w h |
> + w := ft width.
> + h := ft height.
> + ft edgeToAdhereTo
> + caseOf: {
> + [ #top ] -> [ top := top max: h ].
> + [ #bottom ] -> [ bottom := bottom max: h ] .
> + [ #left ] -> [ left := left max: w ] .
> + [ #right ] -> [ right := right max: w ] .
> + }
> + otherwise: [] ].
> + ^ Rectangle
> + origin: aScreenRect origin + (left @ top)
> + extent: aScreenRect extent - (bottom @ right).
> + !
> - (Flaps globalFlapTabsIfAny allSatisfy:
> - [:ft | ft flapID = 'Painting' translated or: [ft edgeToAdhereTo == #bottom]])
> - ifTrue: [^ aScreenRect withHeight: aScreenRect height - 18]
> - ifFalse: [^ aScreenRect insetBy: 64]!
>
>