<Swing Dev> [11] Review Request: 8201552 Ellipsis in "Classical" label in SwingSet2 demo with Windows L&F at Hidpi
Phil Race
philip.race at oracle.com
Fri Jun 22 21:09:27 UTC 2018
The bug was seen when switching L&F .. how is that related to
GraphicsConfiguration ?
-phil.
On 06/22/2018 01:48 PM, Sergey Bylokhov wrote:
> Any volunteers for review?
> =)
>
> On 17/06/2018 15:37, Sergey Bylokhov wrote:
>> Unfortunately after additional testing I found a bug in our text
>> related components. In the JTextPane the text looks broken if we
>> request some change in the component after it is became visible.
>>
>> For example if we change the font then the text will be overlapping.
>> So if I will be applied this fix, which will force text component to
>> relayout(because of the change in graphics config), then the text
>> will be broken from the beginning.
>>
>> But before the fix it will be broken only if the application will
>> change the pane after it became visible(BTW text rendering during
>> editing is broken in both cases).
>>
>> So I temporary reverted the changes in the text related components:
>> http://cr.openjdk.java.net/~serb/8201552/webrev.02
>>
>> Two follow bugs were created:
>> - Text components: https://bugs.openjdk.java.net/browse/JDK-8205143
>> - JSpinner: https://bugs.openjdk.java.net/browse/JDK-8205144
>>
>> On 15/06/2018 23:31, Sergey Bylokhov wrote:
>>> Hello.
>>> Please review the fix for jdk11.
>>>
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8201552
>>> Webrev: http://cr.openjdk.java.net/~serb/8201552/webrev.01/
>>>
>>> Short description:
>>> This fix enhance implementation of JDK-8178025[1] for most of our
>>> Swing components. The main rule which I tried to follow:
>>> "If layout of the component depends from the font then it should
>>> depend on the current graphics configuration as well, because
>>> FontMetrics depends on graphics configuration".
>>>
>>> Long description:
>>> The fix for JDK-8178025 added a special property
>>> "graphicsConfiguration" which: fired when the graphicsConfiguration
>>> is changed from one non-null value to another non-null value.
>>> Those fix also updated some of the components(to refresh/re-validate
>>> its states when the "graphicsConfiguration" or "ancestor" were
>>> changed).
>>>
>>> The usage of "ancestor" was not obvious, so I modify the code to
>>> fire "graphicsConfiguration" every time, this cover a situation when
>>> the "GC=null" is changed to "GC=non-null"(previously it was covered
>>> by "ancestor" property). So after this fix our components will
>>> listen only "font" and "graphicsConfiguration".
>>>
>>> In implementation of JDK-8178025 the "graphicsConfiguration" is
>>> fired immediately after GC is changed, it caused the issues in some
>>> containers like JTree. When the container get such notification it
>>> usually tries to get some information from children, but in this
>>> moment children had previous graphic config, so the result
>>> calculated(and usually cached) in the container was wrong. In this
>>> fix I changed implementation of this property. Now it will fired
>>> only when the container and all its children are updated.
>>>
>>> ===
>>> Note that the new test StalePreferredSize.java has a TODO block.
>>> Because JSpinner does not work properly even after the current fix.
>>> The reason is that during validation it is unexpectedly change the
>>> font from normal to bold(I'll fix this in a separate bug)
>>>
>>>
>>> [1] https://bugs.openjdk.java.net/browse/JDK-8178025
>>>
>>
>>
>
>
More information about the swing-dev
mailing list