Hi Paul,
thanks for your reply but unfortunately this workaround cannot suit the need 
for different reasons:
- the stacks that have a maxHeight lower than the height resolution of the 
screen will not be triggered by this condition;
- the condition that you suggest can be triggered manually in other conditions 
without maximizing the window (multiple screens, windows dragged over the top 
of the screen etc)

As far as I can say there is no way to detect a maximized window with the plus 
button and I think that should be tracked by LC

> Il giorno 20/nov/2019, alle ore 14:17, Paul Dupuis via use-livecode 
> <use-livecode@lists.runrev.com> ha scritto:
> 
> On 11/20/2019 3:45 AM, Giovanni via use-livecode wrote:
>> Hi everybody,
>> as already said the main problem is that there is no way to intercept the 
>> maximization action and to understand if the window is maximized or not.
>> screenrects or windowBoundingRect are not useful in this case mainly when 
>> the maximized window has a maxWidth or maxHeight value lower than the 
>> maximum width/height of the screenrect.
>> 
>> Moreover due to the bug #21311 
>> (https://quality.livecode.com/show_bug.cgi?id=21311 
>> <https://quality.livecode.com/show_bug.cgi?id=21311>) it’s not possible to 
>> prevent the windows maximization for the resizable stacks.
>> 
>> So, any other hint about this topic?
> 
> As this is really an issue mainly on recent versions of macOS where maximize 
> goes to full screen and then really on on the primary monitor as it covers 
> things like the menu bar, I think a work-around in resizeStack is the way to 
> go. in the resizeStack handler see get the rect of the stack - this will be 
> the stacks new rect. If the top in the space normally reserved for the menu 
> bar. It doesn't have to equal the rect of the primary monitor. You just eed 
> to check the top and see if it is less than the height of the macOS menubar 
> (I think 44px?  Can't remember off the top of my head). If top is less than 
> 44px then the stack has been maximized and then you can reset the rect to the 
> effective working rect of the primary screen
> 
> so something like:
> 
> on resizeStack
>   lock screen
>   if the screen of this stack = 1 then -- this stack is on the primary monitor
>    if (the effective top of this stack < (item 2 of the screenRect + 44)) 
> then -- this stack has been maximized as its top is "above" the menubar
>     set the effective rect of this stack to the effective working screenRect
>    end if
>   end if
>   -- do the rest of resizeStack based on the (now) revised stack rect, so 
> don't use the height or width passed as params, but get the height, width, or 
> rect after this line so you have the revised rect.
>   ...
>   unlock screen
> end resizeStack
> 
> I have not tested this - I just wrote it off the top of my head, so check to 
> see if it works.
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode


_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to