<AWT Dev> [9] Review Request: 8027324 The spec for Toolkit.setDynamicLayout() and Toolkit.isDynamicLayoutActive() needs to be clarified
Sergey Bylokhov
Sergey.Bylokhov at oracle.com
Tue Apr 19 14:21:45 UTC 2016
On 22.03.16 23:05, Phil Race wrote:
> I think a subset of the words I used :-
>
> * Returns whether dynamic layout of Containers on resize is
> currently
> * enabled on the underlying operating system and/or window manager)
> * and which will be followed by the JDK in determining layout
> policy during resizing.
>
> are clearer and the rest should be covered by @see so people can then know
> they must read the docs on at least the setXX method to see how that is
> involved.
Something like this?
http://cr.openjdk.java.net/~serb/8027324/webrev.01
>
> -phil
>
>>> * <p>
>>> * If dynamic layout is currently inactive then Containers
>>> * re-layout their components when resizing is completed. As a
>>> result
>>> * the {@code Component.validate()} method will be invoked only
>>> * once per resize.
>>> * If dynamic layout is currently active then Containers
>>> * re-layout their components on every native resize event and
>>> * the {@code validate()} method will be invoked each time.
>>> * The OS/WM support can be queried using
>>> * the getDesktopProperty("awt.dynamicLayoutSupported") method.
>>> * This property will reflect the platform capability but is
>>> * not sufficient to tell if it is presently enabled.
>>> ...
>>>
>>> If this sounds right then we would need to make sure the other docs
>>> clearly support this interpretation.
>>>
>>> And it seems messy that if you want to find out if you can
>>> change the behaviour programmatically, you need to
>>> call setDynamicLayout(true) and setDynamicLayout(false) and
>>> after each then call isDynamicLayoutActive() and
>>> compare results to see if it made any difference ..
>>
>> true.
>>
>>>
>>> -phil.
>>>
>>>
>>> On 03/22/2016 11:50 AM, Sergey Bylokhov wrote:
>>>> On 22.03.16 21:12, Phil Race wrote:
>>>>> On 03/22/2016 11:01 AM, Sergey Bylokhov wrote:
>>>>>>>
>>>>>>> That flag is used to determine the behaviour of
>>>>>>> isDynamicLayoutActive()
>>>>>>> If it is set to "false" then isDynamicLayoutActive() will always
>>>>>>> return
>>>>>>> false,
>>>>>>> (regardless of what the underlying platform is doing)
>>>>>>> If it is set to "true" then isDynamicLayoutActive() will will
>>>>>>> consult
>>>>>>> the desktop property which is *supposed* to reflect the platform
>>>>>>> support
>>>>>>> and so should agree with what the desktop property says.
>>>>>>
>>>>>> Nope, the isDynamicLayoutActive() always returns the current status.
>>>>>> It cannot return true if this feature is unsupported by the OS,
>>>>>> but it
>>>>>> can return true if the user sets the flag to false, but the OS cannot
>>>>>> disable the feature.
>>>>>
>>>>> In that case I don't think the old wording or your current
>>>>> re-wording is
>>>>> correct.
>>>>
>>>> That's actually a problem how to describe it.
>>>>
>>>>> The latter looks like this :-
>>>>>
>>>>> 11 * Returns whether dynamic layout of Containers on resize is
>>>>> currently
>>>>> 212 * active (both set in program ({@code isDynamicLayoutSet()}), and
>>>>> supported
>>>>> ^^^^^^
>>>>> 213 * by the underlying operating system and/or window manager).
>>>>> That
>>>>> "and" means *both* conditions must be true for this to return true,
>>>>
>>>> Both conditions(flag + os_support) must be true if the OS can change
>>>> the current status. But if the native system cannot change the status
>>>> then the flag will be skipped.
>>>>
>>>>> whereas you are telling me that even if I call setDynamicLayout(false)
>>>>> it might return true. -phil. -
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
--
Best regards, Sergey.
More information about the awt-dev
mailing list