@@ -542,6 +542,12 @@ impl WmState { |
| 542 | let _ = ax_set_size(ax_ref, rect.width, rect.height); | 542 | let _ = ax_set_size(ax_ref, rect.width, rect.height); |
| 543 | let _ = ax_set_position(ax_ref, rect.x, rect.y); | 543 | let _ = ax_set_position(ax_ref, rect.x, rect.y); |
| 544 | let _ = ax_set_size(ax_ref, rect.width, rect.height); | 544 | let _ = ax_set_size(ax_ref, rect.width, rect.height); |
| | 545 | + // Some apps silently ignore AX-set-position (observed: windows that |
| | 546 | + // were previously fullscreen/zoomed, or processes whose AX state has |
| | 547 | + // diverged from the WindowServer). Backstop the AX move with a direct |
| | 548 | + // SkyLight move so the visible position matches what we asked for. |
| | 549 | + // Idempotent for windows already at (rect.x, rect.y). |
| | 550 | + let _ = crate::platform::skylight::move_window(wid, rect.x, rect.y); |
| 545 | let _ = crate::platform::skylight::set_window_group_system_alpha(wid, 1.0); | 551 | let _ = crate::platform::skylight::set_window_group_system_alpha(wid, 1.0); |
| 546 | let _ = crate::platform::skylight::set_window_group_alpha(wid, 1.0); | 552 | let _ = crate::platform::skylight::set_window_group_alpha(wid, 1.0); |
| 547 | | 553 | |