<AWT Dev> [9] Review Request: 8027324 The spec for Toolkit.setDynamicLayout() and Toolkit.isDynamicLayoutActive() needs to be clarified

Philip Race philip.race at oracle.com
Tue Apr 19 14:32:17 UTC 2016


Gosh, I had completely paged that one out.
I think this is fine as best as I remember the nuances.

-phil.

On 4/19/16, 7:21 AM, Sergey Bylokhov wrote:
> 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. -
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>


More information about the awt-dev mailing list