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