Looks good to me.

--
Thanks,
Alexander.

On 26.04.2016 16:14, Semyon Sadetsky wrote:


On 4/26/2016 3:49 PM, Philip Race wrote:
> In applications one may need to know the reason why focus is requested

I do not mean why should apps want to *know* the cause.

I am asking why apps should be able to *specify* the cause as
proposed by this change.

Being "symmetric" is not a sufficient reason.
I just clarified that there are no a lot of needs for apps here.
But if a framework is developed it may require to develop a custom implementation of KeyboardFocusManager, for example. Such KFM may simply override any logic that uses focus cause.
Just from general consideration: JFC have been made open for extensions.

--Semyon

-phil.

On 4/26/16, 12:27 AM, Semyon Sadetsky wrote:
On 4/25/2016 10:33 PM, Phil Race wrote:
You will need to convince me of the appropriateness of opening these methods.
It seems to me that are for the focus system, not for applications.

Why should an application be allowed to say "I would like component X" to receive focus and tell it the reason is a mouse event" when in fact it is nothing of the kind.
This is a continuation of the 8080395. I think it would be mostly interesting for framework developers not for applications. In applications one may need to know the reason why focus is requested to the component before the focus is set to it. As I heard from Anton (that was his task initially) opening the cause was requested by some client, but, unfortunately, I don't have any references.

--Semyon

I would like to hear from others if they see a valid use case and that there are no
down-sides to mis-use.

-phil.

On 04/19/2016 02:30 AM, Semyon Sadetsky wrote:
Hello,

Please review fix for JDK9:

bug: https://bugs.openjdk.java.net/browse/JDK-8154434
webrev: http://cr.openjdk.java.net/~ssadetsky/8154434/webrev.00/

To support the new FocusEvent cause concept introduced by JDK-8080395 the next package-private methods of the java.awt.Component class are opened in the fix:

boolean requestFocus(FocusEvent.Cause cause) -> public void requestFocus(FocusEvent.Cause cause)

boolean requestFocus(boolean temporary, FocusEvent.Cause cause) -> protected boolean requestFocus(boolean temporary, FocusEvent.Cause cause)

boolean requestFocusInWindow(FocusEvent.Cause cause) -> public boolean requestFocusInWindow(FocusEvent.Cause cause)

The methods are changed to be symmetric with the focus request methods of the same class which do not accept the cause parameter. The method requestFocus(FocusEvent.Cause cause) was changed to return no value similarly to the requestFocus() because the returning boolean true cannot guarantee the focus gain.

--Semyon






Reply via email to