<Swing Dev> [10] RFR: JDK-8075918:The regression-swing case failed as the long Tab titles are not clipped with dots at the end with NimbusLookAndFeel

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Tue Jun 20 08:00:41 UTC 2017


So far I have checked, it is always sun.awt.SunGraphics2D instance. If 
there is no more objection, I would proceed to commit this.

Regards
Prasanta
On 6/19/2017 8:38 PM, Sergey Bylokhov wrote:
> I am only not sure about type casting w/o instanceof, if we always 
> have Graphics2D then this fix looks fine.
>
>> Hi Sergey,
>>
>> Is anything more needed to be done for this? I guess I have modified 
>> as per the review comment.
>>
>> Regards
>> Prasanta
>> On 6/9/2017 11:33 AM, Prasanta Sadhukhan wrote:
>>>
>>> Ok. Rectified. Please find the modified webrev with clip at correct 
>>> place(s)
>>>
>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.05/
>>>
>>> Regards
>>> Prasanta
>>> On 6/8/2017 9:34 PM, Sergey Bylokhov wrote:
>>>> I have referenced these methods:
>>>>
>>>> "BasicTabbedPaneUI.paintIcon() as well as 
>>>> SynthGraphicsUtils.paintText() are called in SynthTabbedPaneUI.
>>>> �- paintText() at line 681
>>>> �- paintIcon() at line 634
>>>> Both methods have a rectangle as a parameter, but it is ignored."
>>>> The first is in the BasicTabbedPaneUI.java and the second is in the 
>>>> SynthGraphicsUtils.java
>>>>
>>>>>
>>>>> Why? clip is invoked in SynthTabbedPaneUI#paintText() at line 687 
>>>>> and SynthTabbedPaneUI#paintTab() at line 637, where you asked for, 
>>>>> I guess.
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>> On 6/8/2017 12:59 PM, Sergey Bylokhov wrote:
>>>>>> But in this version the clip operation still not executed in 
>>>>>> methods mentioned here:
>>>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2017-June/007419.html
>>>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2017-May/007406.html
>>>>>>
>>>>>>>
>>>>>>> Please find the modified webrev incorporating your review comment
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.04/ 
>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/8075918/webrev.04/>
>>>>>>>
>>>>>>> Regards
>>>>>>> Prasanta
>>>>>>> On 6/2/2017 12:33 AM, Sergey Bylokhov wrote:
>>>>>>>> �- There is a problem in your algorithm which merges the old 
>>>>>>>> and new clips. The getClipBounds() returns a rectangle which is 
>>>>>>>> a bounds of the current clip(which is not necessary a rectangle 
>>>>>>>> but can be a shape). you can use the Graphics2D.clip(Shape) 
>>>>>>>> method which will intersect the passed shape and a current clip 
>>>>>>>> of the graphics.
>>>>>>>> �- In this version you forgot to restore the changed clip.
>>>>>>>> �- Also can you try to move the code which change a clip to the 
>>>>>>>> methods which currently ignore the passed clip(see below):
>>>>>>>>>>> BasicTabbedPaneUI.paintIcon() as well as
>>>>>>>>>>> SynthGraphicsUtils.paintText() are called in SynthTabbedPaneUI.
>>>>>>>>>>> ��- paintText() at line 681
>>>>>>>>>>> ��- paintIcon() at line 634
>>>>>>>>>>> Both methods have a rectangle as a parameter, but it is ignored.
>>>>>>>>
>>>>>>>> ----- prasanta.sadhukhan at oracle.com wrote:
>>>>>>>>
>>>>>>>>> I tried to incorporate your comments. Please find modified webrev
>>>>>>>>>
>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.03/
>>>>>>>>>
>>>>>>>>> Regards
>>>>>>>>> Prasanta
>>>>>>>>> On 5/28/2017 8:01 AM, Sergey Bylokhov wrote:
>>>>>>>>>> Note that you shouldn't replace the clip, but should apply 
>>>>>>>>>> the new
>>>>>>>>> clip on top of the old. This is necessary if the old clip is 
>>>>>>>>> smaller
>>>>>>>>> than new.
>>>>>>>>>> ----- sergey.bylokhov at oracle.com wrote:
>>>>>>>>>>
>>>>>>>>>>> Hi, Prasanta.
>>>>>>>>>>>
>>>>>>>>>>> BasicTabbedPaneUI.paintIcon() as well as
>>>>>>>>>>> SynthGraphicsUtils.paintText() are called in SynthTabbedPaneUI.
>>>>>>>>>>> ��- paintText() at line 681
>>>>>>>>>>> ��- paintIcon() at line 634
>>>>>>>>>>> Both methods have a rectangle as a parameter, but it is ignored.
>>>>>>>>>>>
>>>>>>>>>>> ----- prasanta.sadhukhan at oracle.com wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi Sergey,
>>>>>>>>>>>>
>>>>>>>>>>>> I could get your concern for paintText() but could not find
>>>>>>>>>>>> paintIcon()
>>>>>>>>>>>> in SynthGraphicsUtils() so not sure how icon drawing 
>>>>>>>>>>>> contradicts
>>>>>>>>>>>> spec.
>>>>>>>>>>>> Modified webrev:
>>>>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.01/
>>>>>>>>>>>>
>>>>>>>>>>>> Also, if we are not calling
>>>>>>>>> SwingUtilities2.clipStringIfNecessary()
>>>>>>>>>>>> then
>>>>>>>>>>>> we are not going to get "..." at the end which this test 
>>>>>>>>>>>> expects.
>>>>>>>>>>> But
>>>>>>>>>>>> I
>>>>>>>>>>>> could not find anything in spec, that mandates ending with 
>>>>>>>>>>>> "..."
>>>>>>>>> for
>>>>>>>>>>>> long tab outside
>>>>>>>>>>>> tab bounds. If source change is ok, I guess we then need to
>>>>>>>>> modify
>>>>>>>>>>> the
>>>>>>>>>>>> html file modifying the expected result for NimbusL&F.
>>>>>>>>>>>>
>>>>>>>>>>>> Regards
>>>>>>>>>>>> Prasanta
>>>>>>>>>>>> On 5/25/2017 3:11 AM, Sergey Bylokhov wrote:
>>>>>>>>>>>>> Hi, Prasanta.
>>>>>>>>>>>>> Please take a look to my comments at:
>>>>>>>>>>>>>
>>>>>>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2016-November/006931.html
>>>>>>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2016-November/006902.html
>>>>>>>>>>>>> The two methods paintText() and paintIcon() are contradict the
>>>>>>>>>>> spec
>>>>>>>>>>>> and draw the text and icons outside of the tab.
>>>>>>>>>>>>> ----- prasanta.sadhukhan at oracle.com wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Please review a fix for an issue where long Tab titiles 
>>>>>>>>>>>>>> are not
>>>>>>>>>>>>>> clipped
>>>>>>>>>>>>>> with dots at end for NimbusLookAndFeel L&F.
>>>>>>>>>>>>>> Other L&Fs works ok.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Issue was in SynthTabbedPaneUI#paintTab(), the title is not
>>>>>>>>>>>> clipped
>>>>>>>>>>>>>> but
>>>>>>>>>>>>>> passed to paintText() as it is received.
>>>>>>>>>>>>>> Other L&F such as Metal, Motif, Windows which uses
>>>>>>>>>>>>>> BasicTabbedPaneUI#paintTab(), the title is clipped
>>>>>>>>>>>>>>
>>>>>>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/e748c6a2d2e6/src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTabbedPaneUI.java#l950
>>>>>>>>>>>>>> before it is passed to paintText().
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Proposed fix is to do the same for
>>>>>>>>> SynthTabbedPaneUI#paintTab().
>>>>>>>>>>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8075918
>>>>>>>>>>>>>> webrev:
>>>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.00/
>>>>>>>>>>>>>> Regards
>>>>>>>>>>>>>> Prasanta
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20170620/4ab90553/attachment.html>


More information about the swing-dev mailing list