Stage Manager Problems
Jeremy Wood
mickleness at gmail.com
Mon Feb 27 10:10:29 UTC 2023
FWIW: I wrapped this exploration up by submitting two bug reports:
9074851, 9074856 .
Regards,
- Jeremy
------ Original Message ------
>From "Jeremy Wood" <mickleness at gmail.com>
To "Philip Race" <philip.race at oracle.com>; "Harshitha Onkar"
<harshitha.onkar at oracle.com>
Cc "client-libs-dev at openjdk.org" <client-libs-dev at openjdk.org>
Date 2/18/2023 5:22:25 AM
Subject Re[2]: Stage Manager Problems
>I made a 5 min video here:
>
>https://drive.google.com/file/d/1al0huWBGhdSeqXrNU_if8HpQGOrxFMFH/view?usp=sharing
>
>(I’ll delete this link in a month or two.)
>
>It shows the original complaint, but also around t=3 min it starts to
>show a worse problem:
>
>If you have Stage Manager active and you iconify a JFrame, the JFrame
>never returns to a Frame.NORMAL state. (At least not in this simple
>test.) This leads to major repaint problems.
>
>So… my immediate question is: now what?
>
>Should I take what I have and just submit an openJDK ticket? (Or a
>separate ticket for each problem?) Is it OK to write a ticket with an
>undefined expected behavior, or is that something we should try to
>clarify here first?
>
>Regards,
> - Jeremy
>
>
>------ Original Message ------
>From "Philip Race" <philip.race at oracle.com>
>To "Jeremy Wood" <mickleness at gmail.com>; "Harshitha Onkar"
><harshitha.onkar at oracle.com>
>Cc "client-libs-dev at openjdk.org" <client-libs-dev at openjdk.org>
>Date 2/16/2023 1:31:23 PM
>Subject Re: Stage Manager Problems
>
>> >The more I look at this: I’m afraid the crux of this problem is Stage
>>Manager has introduced a new window state that Java’s AWT architecture
>>can’t really describe yet. (But I’d love to be proved wrong…?)
>>
>>I think you are right. I do not have Ventura to see / test for myself
>>but everything I am hearing
>>sounds like with Stage Manager active the "minimise" button just
>>causes a different compositing transform
>>to be applied to the window and adds that gesture blocking overlay to
>>make it so that it can't see mouse events
>>or presumably receive focus for keyboard events, and the app is
>>*intentionally* (as in Apple's intention)
>>ignorant of anything having changed in its state.
>>
>>So it is anyone's guess what we can do about this and even if we
>>should do something what would it be ..
>>Maybe there's some clue in the latest SDK - ie a new API ?
>>
>>FWIW One of our team members said he tried this mode for 5 mins but
>>multiple (non-java) apps were
>>so broken in this mode he turned it off again.
>>
>>
>>
>>-phil.
>>
>>
>>On 2/16/23 2:04 AM, Jeremy Wood wrote:
>>>Harshitha,
>>>
>>>Thanks for the suggestions. I think those don’t really resolve the
>>>problem, though.
>>>
>>>In the original sample program (having only 1 frame) watching the
>>>keyboard focus could help identify when there’s a change, but if
>>>there’s a second frame: that second window could retain the focus and
>>>the first window still can’t answer the question, “Are you minimized
>>>now?”
>>>
>>>(I have an updated sample program
>>><https://drive.google.com/file/d/1uzUUDnAlPoHlFdbVgunwpFKvn4Ies-6-/view?usp=sharing>
>>>here with two frames if anyone’s interested.)
>>>
>>>Further: the window could lose the focus at any time (if a system
>>>dialog came up), so I don’t think focus should act as a proxy for
>>>visibility.
>>>
>>>I did find tonight a work-around for our app a few hours ago. We have
>>>some native code that identifies all visible windows, their bounds
>>>and their title. If I consult that list: I see a window that matches
>>>our (sufficiently unique) window title. And its bounds do not at all
>>>match with what Java says our window’s bounds are. And it is
>>>positioned so 99% of it overlaps with a window called “Gesture
>>>Blocking Overlay”. (All Stage Manager thumbnails appear to have an
>>>overlay window with this title.) So it’s a very kludgy and brittle
>>>work around, for for the time being it works.
>>>
>>>This leads me to believe the Mac OS windowing system doesn’t consider
>>>the frame to be “hidden”. I think the window remains technically
>>>visible. And Mac OS knows it has new bounds. But the peer in Java is
>>>oblivious to the new bounds/state. (I examined the peer LWWindowPeer
>>>in a debugger: it still thinks the window is visible (technically
>>>true) and its bounds are unchanged (not true).)
>>>
>>>The more I look at this: I’m afraid the crux of this problem is Stage
>>>Manager has introduced a new window state that Java’s AWT
>>>architecture can’t really describe yet. (But I’d love to be proved
>>>wrong…?)
>>>
>>> - Jeremy
>>>
>>>------ Original Message ------
>>>From "Harshitha Onkar" <harshitha.onkar at oracle.com>
>>>To "Jeremy Wood" <mickleness at gmail.com>
>>>Cc "client-libs-dev at openjdk.org" < client-libs-dev at openjdk.org>
>>>Date 2/16/2023 1:57:56 AM
>>>Subject RE: Stage Manager Problems
>>>
>>>>Hi Jeremy,
>>>>
>>>>
>>>>
>>>>Does any of the following options help in your case to determine
>>>>whether or not the frame is iconified?
>>>>
>>>>
>>>>
>>>>frame.isActive()
>>>>frame.isFocused()
>>>>frame.isAlwaysOnTop()
>>>>
>>>>
>>>>Thanks & Regards,
>>>>
>>>>Harshitha Onkar
>>>>
>>>>
>>>>
>>>>From: client-libs-dev <client-libs-dev-retn at openjdk.org> On Behalf
>>>>Of Jeremy Wood
>>>>Sent: Wednesday, February 15, 2023 10:08 PM
>>>>To:client-libs-dev at openjdk.org
>>>>Subject: Stage Manager Problems
>>>>
>>>>
>>>>
>>>>We’re experiencing problems related JFrames while Stage Manager
>>>><https://www.computerworld.com/article/3667999/what-is-apple-stage-manager-and-how-is-it-used.html>
>>>>is active Mac.
>>>>
>>>>
>>>>
>>>>When Stage Manager is active the yellow minimize button on our
>>>>JFrame’s appears to “minimize” our app. But as far as our Frame is
>>>>concerned:
>>>>
>>>>1. Frame.getExtendedState() does not indicate we’re in an ICONIFIED
>>>>state
>>>>
>>>>2. Frame.isShowing() returns true
>>>>
>>>>3. a java.awt.desktop.AppForegroundListener believes our app is in
>>>>the foreground.
>>>>
>>>>
>>>>
>>>>We want to identify when we’re in this hidden state. Is there any
>>>>other property we can consult to help identify this state?
>>>>
>>>>
>>>>
>>>>I’m happy to submit an openjdk ticket if needed, but first I wanted
>>>>to sanity check that I’m not missing something. (I also tried
>>>>querying
>>>><https://bugs.openjdk.org/issues/?jql=text%20~%20%22%5C%22Stage%20Manager%5C%22%22>
>>>>the openJDK bug database, but didn’t see any hits.)
>>>>
>>>>
>>>>
>>>>I tried rummaging around in Mac-specific classes (like
>>>>CPlatformWindow), but I didn’t see any promising leads. It’s always
>>>>possible I missed something, though.
>>>>
>>>>
>>>>
>>>>Attached is a small 200-line demo app.
>>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/client-libs-dev/attachments/20230227/49563d0c/attachment.htm>
More information about the client-libs-dev
mailing list