On 4/27/2012 9:53 PM, Leonid Romanov wrote:
1. Yep, I've verified whether my solution works for AWT and indeed it does: returning NO from canBecomeMain/KeyWindow does prevent OS from bringing window to the front. Wonder why it doesn't work for FX. The thing is, if we allow OS to bring blocked window to the front, even for a fraction of second required to restack window back, then user would see window jumping forth and back in z-order, and this is something we want to avoid.

Please try clicking the title-bar of a blocked window, not its content area. Does it still not jump to the front?

Perhaps Apple fixed this in 10.7, but on my old 10.6.8 system the canBecome-NO windows did go to the top of the stacking order when being clicked.

Note that the restacking is unnoticed since in FX it's performed during the windowDidBecomeKey event processing. If we postpone this operation, then indeed, some flickering will be visible.

--
best regards,
Anthony


2. I need to check on this. Thanks for pointing it out.

Leonid.

On 27.04.2012, at 21:39, Anthony Petrov wrote:

Hi Leonid,

I was thinking of implementing a similar mechanism in order to fix 7124395. 
Please see the Comments section in that bug for some additional details.

Regarding the fix itself:

1. Even though you return NO from canBecomeMain/KeyWindow, the OS will still 
bring the window to front of the z-order when you click it. In FX we handle 
this by always returning YES from canBecome* methods, however, the 
windowDidBecomeKey: sends a special FOCUS_DISABLED event if the window is 
blocked. In that case the upper level code re-stacks windows so that the 
blocker window always appears on the top of the z-order. Have you verified if 
this works fine for AWT apps with your fix?

2. Also, we just don't send mouse events for blocked windows from native code 
to Java. Is this handled somewhere else for modally blocked windows in lwawt?

--
best regards,
Anthony

On 4/27/2012 6:11 PM, Leonid Romanov wrote:
Hi,
Please review a fix for 7124376: [macosx] Modal dialog lost focus. One can easily reproduce this 
bug by launching SwingSet2, choosing JOptionPane demo and then clicking "Show Message 
Dialog" button. Now, click on the "SwingSet2" window title bar and you'll see the 
window rapidly gaining and loosing focus.
Bug:  http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7124376
webrev: http://cr.openjdk.java.net/~leonidr/7124376/webrev.00/
Thanks,
Leonid.

Reply via email to