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/ >> <http://cr.openjdk.java.net/%7Epsadhukhan/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-June/007419.html> >>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2017-May/007406.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.sadhuk...@oracle.com >>>>>>> <mailto:prasanta.sadhuk...@oracle.com> wrote: >>>>>>> >>>>>>>> I tried to incorporate your comments. Please find modified webrev >>>>>>>> >>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.03/ >>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/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.bylok...@oracle.com <mailto:sergey.bylok...@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.sadhuk...@oracle.com >>>>>>>>>> <mailto:prasanta.sadhuk...@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/ >>>>>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/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/006931.html> >>>>>>>> http://mail.openjdk.java.net/pipermail/swing-dev/2016-November/006902.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.sadhuk...@oracle.com >>>>>>>>>>>> <mailto:prasanta.sadhuk...@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 >>>>>>>> >>>>>>>> <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 >>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8075918> >>>>>>>>>>>>> webrev: >>>>>>>>>> http://cr.openjdk.java.net/~psadhukhan/8075918/webrev.00/ >>>>>>>>>> <http://cr.openjdk.java.net/%7Epsadhukhan/8075918/webrev.00/> >>>>>>>>>>>>> Regards >>>>>>>>>>>>> Prasanta >>>>>> >>>>> >>>> >>> >> >