On 2024-02-10 21:16, Paul Dupuis via use-livecode wrote:
My desktopChanged handler, at one point, executes either a:

  set the effective width of window tWindow to tMontiorWidth
OR a
  set the effective height of window tWindow to tMonitorHeight

Either of which sends a resizeStack message to the stack/window. However, when it is sent this 2nd time as a result of the window maximization (which does a successful resizeStack, then desktopChanged, which sets teh effecting width/height, that causes a resizeStack) the resizeStack parameters, pNewWidth and pNewHeight are EMPTY, so any placement of controls based on the parameters use empty, which gets treated as zero.

As far as I can see, the engine only ever sends resizeStack with all parameters - so if your stack is getting a resizeStack with only two arguments - that's being sent from your code or a library you are using I think.

The work-around is the do Example 2 for resizeStack, but I think is might be considered an ENGINE BUG that on macOS, not Windows, maximization sends a resizeStack and then a desktopChanged message. No monitor has been added or removed, nor has the resolution of any monitor been changed, therefore I don't think a desktopChanged message SHOULD be sent on macOS window maximization. I think this is a bug?

Does anyone have a valid reason why macOS should receive a desktopChanged message on window maximization when Windows does not?

So the engine hooks into the notification from the OS for a change in screen parameters... The engine then checks the new ones against the old and sends desktopChanged if there are any differences.

In the case of maximization on macOS - using (what is now!) the fullscreen gadget on the titlebar of windows causes the OS furniture to ebb away - i.e. the *working* screenRect changes - and thus the engine sends the desktopChanged notification.*

(You can test this by creating a stack and 'answer the screenRect & return & the working screenRect' - click before and after the fullscreen gadget on the title bar, and there will be a difference.)

Warmest Regards,

Mark.

P.S. The message is also sent when the dock is adjusted in size too - so presumably you would see the same problem then (assuming your handling of the desktopChanged message is causing the errant resizeStack with only two arguments to be sent from script somehow).

--
Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/
LiveCode: Build Amazing Things

_______________________________________________
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