<Swing Dev>  Review Request: 8201552 Ellipsis in "Classical" label in SwingSet2 demo with Windows L&F at Hidpi
Sergey.Bylokhov at oracle.com
Fri Jun 22 20:48:49 UTC 2018
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:
> 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:
>> 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 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)
>>  https://bugs.openjdk.java.net/browse/JDK-8178025
Best regards, Sergey.
More information about the swing-dev