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

Semyon Sadetsky semyon.sadetsky at oracle.com
Mon Nov 6 18:16:30 UTC 2017


+1

--Semyon


On 11/02/2017 12:55 AM, Prasanta Sadhukhan wrote:
> 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