On Thu, 31 Jul 2025 15:05:20 GMT, Martin Fox <m...@openjdk.org> wrote:
>> This PR fixes numerous bugs in the handling of setMaximized() on macOS and >> also cleans up some issues seen when the user changes the maximized state >> manually. >> >> - After setMaximized(false) a notifyResize event was never sent so the width >> and height tracked by JavaFX was wrong. >> >> - During maximize and restore a series of notifyMove events were issued >> causing the maximized property to flip-flop during the animation. >> >> - Transparent windows were being maximized by passing native screen >> coordinates to a routine that expected JavaFX screen coordinates so the Y >> axis was flipped and the window was positioned incorrectly. >> >> - The restored frame is in native screen coordinates which was sent to a >> routine that expected flipped JavaFX coordinates. That routine corrected >> this by directly inspecting the call stack to see which routine was calling >> it. >> >> - When the user maximizes or restores the window a notifyResize event was >> always sent immediately stating that the window was maximized even when it >> was not. Then a series of notifyMove events were issued causing the >> maximized flag to flip-flop during the animation. >> >> This PR cleans all of this up. When using the setMaximized API only one >> notifyMove and one notifyResize event are sent and transparent windows are >> positioned correctly. When the user maximizes or restores manually we still >> see a series of notifyMove and notifyResize events but at least they all >> report the window’s state correctly. >> >> System tests are currently being written as part of #1789. It’s hard to >> create a system test that catches things like the mis-alignment of maximized >> transparent windows so that needs to be tested manually. The reproducer >> attached to the bug report can be used to verify this and also to see what >> happens when the user toggles the maximization state manually. >> >> Note that when the test programs tags something as “unexpected” it just >> means it saw a property change outside of any JavaFX API call. This is >> actually expected if the user manipulates the window manually. > > Martin Fox has updated the pull request incrementally with one additional > commit since the last revision: > > Cleaned up diff against master. Tighted up system test (tested on Windows > and Linux) Tested various scenarios on macOS 15.5 with the reproducer and the (updated) monkey tester from https://github.com/andy-goryachev-oracle/MonkeyTest , works as expected. Finally, can remove the hack from https://github.com/andy-goryachev/FxDock/blob/5d1128bd56a60d56ab743aa7c4f830bc248cc343/src/goryachev/fx/settings/WindowMonitor.java#L147 Many thanks! ------------- Marked as reviewed by angorya (Reviewer). PR Review: https://git.openjdk.org/jfx/pull/1860#pullrequestreview-3077116426