<Swing Dev> [10] RFR JDK-8178025:HiDPI with non-integer scale factor - SPANs in HTML are rendered overlapping each other

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Thu Nov 2 07:55:12 UTC 2017


Hi Semyon,

Updated webrev to update the cache metrics when graphicsConfig changes 
and use it to recalculate
http://cr.openjdk.java.net/~psadhukhan/8178025/webrev.05/

Regards
Prasanta
On 11/2/2017 12:09 AM, Semyon Sadetsky wrote:
> Hi Prasanta,
>
> The change in GlyphPainter1 looks suspicious to me. It uses 
> component's metrics to get the span but leaves the cashed metrics 
> equals to default. Can you explain this?
>
> --Semyon
>
>
> On 10/31/2017 10:35 PM, Prasanta Sadhukhan wrote:
>> Hi Semyon,
>>
>> Yes, BasicMenuItemUI also suffers from same issue. Here's the 
>> modified webrev fixing it also
>> http://cr.openjdk.java.net/~psadhukhan/8178025/webrev.04/
>>
>> Regards
>> Prasanta
>> On 10/31/2017 8:28 PM, Semyon Sadetsky wrote:
>>> Hi Prasanta,
>>>
>>> Can you also check at BasicMenuItemUI. It seems it may have the 
>>> similar issue.
>>>
>>> --Semyon
>>>
>>>
>>> On 10/30/2017 11:12 PM, Prasanta Sadhukhan wrote:
>>>> Ok. Modified webrev to make sure data is recalculated by listening 
>>>> to "graphicsConfig" change
>>>>
>>>> http://cr.openjdk.java.net/~psadhukhan/8178025/webrev.03/
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 10/27/2017 11:57 AM, Sergey Bylokhov wrote:
>>>>> I am not sure that it is called when the window is moved from one 
>>>>> screen(HiDPI) to another screen(lowDpi). In this case the 
>>>>> updateGraphicsData() will be called and we need to recalculate our 
>>>>> data.
>>>>>
>>>>> On 23/10/2017 23:06, Prasanta Sadhukhan wrote:
>>>>>> Whatever testing I have done, propertyChange gets called during. 
>>>>>> If you have any test/steps which changes GC at "later" stage, 
>>>>>> please provide and I will see if it does not call propertyChange.
>>>>>>
>>>>>>
>>>>>> On 10/24/2017 11:13 AM, Alan Snyder wrote:
>>>>>>> You’re guessing? Really?
>>>>>>>
>>>>>>>> On Oct 23, 2017, at 10:19 PM, Prasanta Sadhukhan 
>>>>>>>> <prasanta.sadhukhan at oracle.com 
>>>>>>>> <mailto:prasanta.sadhukhan at oracle.com>> wrote:
>>>>>>>>
>>>>>>>> I would guess so as "ancestor" listener is to support 
>>>>>>>> notification when changes occur to a JComponent or one of its 
>>>>>>>> ancestors.
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> Prasanta
>>>>>>>> On 10/23/2017 7:45 PM, Alan Snyder wrote:
>>>>>>>>> Does it handle the case where the graphics configuration is 
>>>>>>>>> later changed?
>>>>>>>>>
>>>>>>>>>   Alan
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> On Oct 22, 2017, at 11:23 PM, Prasanta Sadhukhan 
>>>>>>>>>> <prasanta.sadhukhan at oracle.com 
>>>>>>>>>> <mailto:prasanta.sadhukhan at oracle.com>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On 10/19/2017 3:42 PM, Prasanta Sadhukhan wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 10/19/2017 3:49 AM, Sergey Bylokhov wrote:
>>>>>>>>>>>> On 17/10/2017 03:48, Prasanta Sadhukhan wrote:
>>>>>>>>>>>>> It seems for JLabel, Component.updateGraphicsData() with 
>>>>>>>>>>>>> proper GraphicsConfiguraiton is never called which it does 
>>>>>>>>>>>>> for JTextComponent or JDialog. Do you know why? Because of 
>>>>>>>>>>>>> this, correct FRC is not created.
>>>>>>>>>>>>> I am not sure what else I can do to create correct FRC.
>>>>>>>>>>>>
>>>>>>>>>>>> But at some point we will get a correct 
>>>>>>>>>>>> GraphicsConfiguraiton for a component, right? It should be 
>>>>>>>>>>>> called for the window and child when we show the window on 
>>>>>>>>>>>> the screen, when we move the window to another screen, etc.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> Yes, it seems to be called when JLabel is added to JFrame 
>>>>>>>>>>> but not before.
>>>>>>>>>>> Span is calculated in GlyphPainter1.getSpan() which is 
>>>>>>>>>>> called when JLabel is created and
>>>>>>>>>>> as it seems, not when JLabel is added to JFrame (which is 
>>>>>>>>>>> when we get the correct graphics configuration and therefore 
>>>>>>>>>>> correct transform).
>>>>>>>>>>>
>>>>>>>>>>> So, we need to make sure spans are recalculated when the 
>>>>>>>>>>> JLabel is added to frame, which is what modified webrev does 
>>>>>>>>>>> by calling JLabel.updateUI()
>>>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8178025/webrev.01/ 
>>>>>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/8178025/webrev.01/>
>>>>>>>>>>>
>>>>>>>>>> Modified webrev to only update html renderer when JLabel is 
>>>>>>>>>> added to frame by listening to property "ancestor" which 
>>>>>>>>>> implies component is added/made visible, at which point 
>>>>>>>>>> correct graphics configuration is set.
>>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8178025/webrev.02/ 
>>>>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/8178025/webrev.02/>
>>>>>>>>>>
>>>>>>>>>> Regards
>>>>>>>>>> Prasanta
>>>>>>>>>>> Regards
>>>>>>>>>>> Prasana
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>




More information about the swing-dev mailing list