- 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 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.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 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.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 > >>>>> 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