A gentle reminder. Please review webrev with changes as per the inputs provided: cr.openjdk.java.net/~aniyogi/8146321/webrev.06/ <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.06/>
With Regards, Avik Niyogi > On 08-Feb-2016, at 12:42 pm, Avik Niyogi <avik.niy...@oracle.com> wrote: > > Hi Sergey, > Please review webrev with changes as per the inputs provided: > cr.openjdk.java.net/~aniyogi/8146321/webrev.06/ > <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.06/> > > With Regards, > Avik Niyogi > >> On 08-Feb-2016, at 2:29 am, Sergey Bylokhov <sergey.bylok...@oracle.com >> <mailto:sergey.bylok...@oracle.com>> wrote: >> >> Both updated methods have a typo, 0 will be returned if >> frame.getFrameIcon()==null: >> >> protected int getIconWidth(final JInternalFrame frame) { >> int width = 0; >> >> Icon icon = frame.getFrameIcon(); >> if (icon == null) { >> icon = UIManager.getIcon("InternalFrame.icon"); >> } >> else { >> width = Math.min(icon.getIconWidth(), sMaxIconWidth); >> } >> >> return width; >> } >> >> protected int getIconHeight(final JInternalFrame frame) { >> int height = 0; >> >> Icon icon = frame.getFrameIcon(); >> if (icon == null) { >> icon = UIManager.getIcon("InternalFrame.icon"); >> } >> else{ >> height = Math.min(icon.getIconHeight(), sMaxIconHeight); >> } >> >> return height; >> } >> >> Note that getIconWidth/getIconHeight should return width/height of the icon, >> but this is not true anymore, because paintTitleIcon() now use the aspect >> ratio, which can produce the different Width/Height for the same icon. >> >> >> On 04.02.16 12:26, Alexandr Scherbatiy wrote: >>> >>> The fix looks good to me. >>> >>> Thanks, >>> Alexandr. >>> >>> On 2/3/2016 8:51 PM, Avik Niyogi wrote: >>>> Hi All, >>>> Please review the code changes made as per the inputs provided: >>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.05/ >>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.05/> >>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.05/ >>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.05/>> >>>> >>>> With Regards, >>>> Avik Niyogi >>>> >>>>> On 03-Feb-2016, at 7:38 pm, Alexandr Scherbatiy >>>>> <alexandr.scherba...@oracle.com <mailto:alexandr.scherba...@oracle.com> >>>>> <mailto:alexandr.scherba...@oracle.com >>>>> <mailto:alexandr.scherba...@oracle.com>>> wrote: >>>>> >>>>> On 2/3/2016 12:47 AM, Avik Niyogi wrote: >>>>>> Hi All, >>>>>> Please review the code changes made as per the inputs provided: >>>>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.04 >>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.04> >>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.04 >>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.04>> >>>>> 326 g2.translate(0, 0); >>>>> The translation to the zero vector leaves the coordinate system the >>>>> same. >>>>> >>>>> 327 float xScaleFactor = (float) sMaxIconWidth / >>>>> icon.getIconWidth(); >>>>> It is better to use double values because the graphics transform >>>>> methods use them. >>>>> >>>>> 332 g2.scale(scaleFactorAspectRatio, >>>>> scaleFactorAspectRatio); >>>>> 333 g2.translate(x / scaleFactorAspectRatio, y / >>>>> scaleFactorAspectRatio); >>>>> Is it possible to use the translation first and the scale the >>>>> second? I this case where no need to re-scale translation coordinates. >>>>> >>>>> Thanks, >>>>> Alexandr. >>>>> >>>>>> >>>>>> With Regards, >>>>>> Avik Niyogi >>>>>>> On 02-Feb-2016, at 5:55 pm, Alexandr Scherbatiy >>>>>>> <<mailto:alexandr.scherba...@oracle.com >>>>>>> <mailto:alexandr.scherba...@oracle.com>>alexandr.scherba...@oracle.com >>>>>>> <mailto:alexandr.scherba...@oracle.com>> >>>>>>> wrote: >>>>>>> >>>>>>> On 2/2/2016 3:41 AM, Avik Niyogi wrote: >>>>>>>> Hi Alexander, >>>>>>>> >>>>>>>>> On 02-Feb-2016, at 3:44 pm, Alexandr Scherbatiy >>>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>>>>>> >>>>>>>>> On 2/2/2016 1:50 AM, Avik Niyogi wrote: >>>>>>>>>> Hi All, >>>>>>>>>> Please review the code changes made as per the inputs provided: >>>>>>>>>> cr.openjdk.java.net/~aniyogi/8146321/webrev.03 >>>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.03> >>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.03 >>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.03>> >>>>>>>>> >>>>>>>>> - Will it work with custom implementation of the Icon interface >>>>>>>>> which just draws an image? >>>>>>>>> For example: >>>>>>>>> ---------------------- >>>>>>>>> public class DukeIcon implements Icon { >>>>>>>>> >>>>>>>>> private BufferedImage dukeImage; >>>>>>>>> >>>>>>>>> public DukeIcon() throws IOException { >>>>>>>>> dukeImage = ImageIO.read(new File("<path to the duke >>>>>>>>> image>")); >>>>>>>>> } >>>>>>>>> >>>>>>>>> @Override >>>>>>>>> public void paintIcon(Component c, Graphics g, int x, int y) { >>>>>>>>> g.drawImage(dukeImage, x, y, c); >>>>>>>>> } >>>>>>>>> >>>>>>>>> @Override >>>>>>>>> public int getIconWidth() { >>>>>>>>> return dukeImage.getWidth(); >>>>>>>>> } >>>>>>>>> >>>>>>>>> @Override >>>>>>>>> public int getIconHeight() { >>>>>>>>> return dukeImage.getHeight(); >>>>>>>>> } >>>>>>>>> } >>>>>>>> >>>>>>>> This is a limitation for custom Icons because they will need to >>>>>>>> use toe drawImage with appropriate implementation. >>>>>>>> To fix that will be a major change and may need change in the >>>>>>>> implementation of drawImage method. >>>>>>> >>>>>>> It looks like the code below from the fix doesn't work for the >>>>>>> ImageIcon because x and y are now scaled. Is it possible to apply >>>>>>> some other transformations (may be some translations) to the >>>>>>> graphics to draw the image at the right position? >>>>>>> --------------- >>>>>>> 334 g2.scale((float) sMaxIconWidth / >>>>>>> icon.getIconWidth(), >>>>>>> 335 (float) sMaxIconWidth / >>>>>>> icon.getIconHeight()); >>>>>>> 336 icon.paintIcon(frame, g2, x, y); >>>>>>> --------------- >>>>>>>>> ---------------------- >>>>>>>>> >>>>>>>>> - "(icon != null && (icon instanceof Icon))" >>>>>>>>> Could the check to null also be omitted here? >>>>>>>>> In other words, are the "(icon != null && (icon instanceof >>>>>>>>> Icon))" and "(icon instanceof Icon)" checks return the same result? >>>>>>>>> >>>>>>>> If we remove the check, the cases where custom ImageIcon have no >>>>>>>> images will fail. >>>>>>> >>>>>>> The provided example should work with the check: "(icon >>>>>>> instanceof Icon)" in the same way as with the check "(icon != null >>>>>>> && (icon instanceof Icon))" because the used icon is not null and >>>>>>> it implements Icon interface, should not it? >>>>>>> >>>>>>> Thanks, >>>>>>> Alexandr. >>>>>>> >>>>>>>> Example: >>>>>>>> >>>>>>>> >>>>>>>> import java.awt.*; >>>>>>>> import javax.swing.*; >>>>>>>> >>>>>>>> public class JInternalFrameBug { >>>>>>>> >>>>>>>> public static void main(String[] args) { >>>>>>>> SwingUtilities.invokeLater( >>>>>>>> new Runnable() { >>>>>>>> public void run() { >>>>>>>> try { >>>>>>>> UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel"); } >>>>>>>> catch(Exception e) { >>>>>>>> System.out.println("This is not a Mac."); >>>>>>>> return; >>>>>>>> } >>>>>>>> JFrame f = new JFrame(); >>>>>>>> f.setSize(500, 500); >>>>>>>> JDesktopPane dtp = new JDesktopPane(); >>>>>>>> JInternalFrame jif = new JInternalFrame(); >>>>>>>> jif.setTitle("Test"); >>>>>>>> jif.setFrameIcon( >>>>>>>> new ImageIcon() { >>>>>>>> public int getIconWidth() { >>>>>>>> return 16; >>>>>>>> } >>>>>>>> public int getIconHeight() { >>>>>>>> return 16; >>>>>>>> } >>>>>>>> public void paintIcon(Component c, Graphics g, int x, int y) { >>>>>>>> g.setColor(java.awt.Color.green); >>>>>>>> g.fillRect(x, y, 16, 16); >>>>>>>> } >>>>>>>> }); >>>>>>>> jif.setSize(400, 400); >>>>>>>> jif.setVisible(true); >>>>>>>> dtp.add(jif); >>>>>>>> >>>>>>>> f.getContentPane().setLayout(new BorderLayout()); >>>>>>>> f.getContentPane().add(dtp, "Center"); >>>>>>>> f.setVisible(true); >>>>>>>> } >>>>>>>> }); >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> Alexandr. >>>>>>>>> >>>>>>>>>> >>>>>>>>>> With Regards, >>>>>>>>>> Avik Niyogi >>>>>>>>>>> On 02-Feb-2016, at 3:02 pm, Alexandr Scherbatiy >>>>>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com>> wrote: >>>>>>>>>>> >>>>>>>>>>> On 2/1/2016 11:25 PM, Avik Niyogi wrote: >>>>>>>>>>>> Hi All, >>>>>>>>>>>> Please review the code changes made as per inputs provided: >>>>>>>>>>>> cr.openjdk.java.net/~aniyogi/8146321/webrev.02 >>>>>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.02> >>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.02 >>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.02>> >>>>>>>>>>> >>>>>>>>>>> - is it possible to skip the ImageIcon parsing and handle it >>>>>>>>>>> as others icons (may be applying some translation to the graphics)? >>>>>>>>>>> - "(icon instanceof ImageIcon || icon instanceof Icon): >>>>>>>>>>> ImageIcons is also Icon so the whole condition should be >>>>>>>>>>> the same as just (icon instanceof Icon) >>>>>>>>>>> >>>>>>>>>>> Thanks, >>>>>>>>>>> Alexandr. >>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> With Regards, >>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>> On 20-Jan-2016, at 10:35 pm, Sergey Bylokhov >>>>>>>>>>>>> <sergey.bylok...@oracle.com <mailto:sergey.bylok...@oracle.com>> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>> On 20/01/16 18:43, Avik Niyogi wrote: >>>>>>>>>>>>>> if ((icon.getIconWidth() > sMaxIconWidth >>>>>>>>>>>>>> || icon.getIconHeight() > sMaxIconHeight)) { >>>>>>>>>>>>>> final Graphics2D g2 = (Graphics2D) g; >>>>>>>>>>>>>> final AffineTransform savedAT = g2.getTransform(); >>>>>>>>>>>>>> g2.scale((float)sMaxIconWidth/icon.getIconWidth(), >>>>>>>>>>>>>> (float)sMaxIconWidth/icon.getIconHeight()); >>>>>>>>>>>>>> icon.paintIcon(frame, g2, x, y); >>>>>>>>>>>>>> g2.setTransform(savedAT); >>>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> This code does not take into account that x,y whcih are >>>>>>>>>>>>> passed to the paintIcon should be adjusted, because after the >>>>>>>>>>>>> scale they contain incorrect starting points. >>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> then for a test code with the following: >>>>>>>>>>>>>> >>>>>>>>>>>>>> import java.awt.*; >>>>>>>>>>>>>> import javax.swing.*; >>>>>>>>>>>>>> >>>>>>>>>>>>>> public class JInternalFrameBug { >>>>>>>>>>>>>> >>>>>>>>>>>>>> public static void main(String[] args) { >>>>>>>>>>>>>> SwingUtilities.invokeLater( >>>>>>>>>>>>>> new Runnable() { >>>>>>>>>>>>>> public void run() { >>>>>>>>>>>>>> try { >>>>>>>>>>>>>> >>>>>>>>>>>>>> UIManager.setLookAndFeel("com.apple.laf.AquaLookAndFeel"); } >>>>>>>>>>>>>> catch(Exception e) { >>>>>>>>>>>>>> System.out.println("This is not a Mac."); >>>>>>>>>>>>>> return; >>>>>>>>>>>>>> } >>>>>>>>>>>>>> JFrame f = new JFrame(); >>>>>>>>>>>>>> f.setSize(400, 400); >>>>>>>>>>>>>> JDesktopPane dtp = new JDesktopPane(); >>>>>>>>>>>>>> JInternalFrame jif = new JInternalFrame(); >>>>>>>>>>>>>> jif.setTitle("Test"); >>>>>>>>>>>>>> jif.setFrameIcon(new >>>>>>>>>>>>>> ImageIcon("/Users/avniyogi/Downloads/FeedbinNotifier-master/FeedbinNotifier/Images.xcassets/AppIcon.appiconset/icon_128x...@2x.png")); >>>>>>>>>>>>>> jif.setSize(200, 200); >>>>>>>>>>>>>> jif.setVisible(true); >>>>>>>>>>>>>> dtp.add(jif); >>>>>>>>>>>>>> >>>>>>>>>>>>>> f.getContentPane().setLayout(new >>>>>>>>>>>>>> BorderLayout()); >>>>>>>>>>>>>> f.getContentPane().add(dtp, "Center"); >>>>>>>>>>>>>> f.setVisible(true); >>>>>>>>>>>>>> } >>>>>>>>>>>>>> }); >>>>>>>>>>>>>> } >>>>>>>>>>>>>> } >>>>>>>>>>>>>> >>>>>>>>>>>>>> results in this: >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 20-Jan-2016, at 4:42 pm, Alexander Scherbatiy >>>>>>>>>>>>>>> <alexandr.scherba...@oracle.com >>>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com> >>>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com >>>>>>>>>>>>>>> <mailto:alexandr.scherba...@oracle.com>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On 1/20/2016 7:59 AM, Avik Niyogi wrote: >>>>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>>>> A gentle reminder, please review my code changes as in the >>>>>>>>>>>>>>>> webrev >>>>>>>>>>>>>>>> below in the mail trail. >>>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>>> On 18-Jan-2016, at 3:01 pm, Avik Niyogi >>>>>>>>>>>>>>>>> <avik.niy...@oracle.com <mailto:avik.niy...@oracle.com> >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>> >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Sergey, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Please review the webrev taking inputs as per the >>>>>>>>>>>>>>>>> discussion before: >>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.01/ >>>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/~aniyogi/8146321/webrev.01/> >>>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.01/ >>>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.01/>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> The idea was to scale the graphics that the drawn icon >>>>>>>>>>>>>>> fits to the >>>>>>>>>>>>>>> target sizes. >>>>>>>>>>>>>>> Something like: >>>>>>>>>>>>>>> -------- >>>>>>>>>>>>>>> g2d.scale(targetIconWidth/icon.getWidth(), >>>>>>>>>>>>>>> targetIconHeight/icon.getHeight()); >>>>>>>>>>>>>>> icon.paintIcon(frame, g2d, x, y); >>>>>>>>>>>>>>> --------- >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> This should work not only for ImageIcon but for any type >>>>>>>>>>>>>>> of icons. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks, >>>>>>>>>>>>>>> Alexandr. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On 14-Jan-2016, at 12:55 pm, Avik Niyogi >>>>>>>>>>>>>>>>>> <avik.niy...@oracle.com <mailto:avik.niy...@oracle.com> >>>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>> >>>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com >>>>>>>>>>>>>>>>>> <mailto:avik.niy...@oracle.com>>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Sergey, >>>>>>>>>>>>>>>>>> I have verified it with the test case as well. If a test >>>>>>>>>>>>>>>>>> case >>>>>>>>>>>>>>>>>> overrides these methods to imply a change with icons >>>>>>>>>>>>>>>>>> larger than >>>>>>>>>>>>>>>>>> 16x16 it will show that for ImageIcon and Icon as >>>>>>>>>>>>>>>>>> before. The >>>>>>>>>>>>>>>>>> resize of ImageIcon is only in case it has an image file >>>>>>>>>>>>>>>>>> that it >>>>>>>>>>>>>>>>>> will try to fit. I had a similar query myself and have >>>>>>>>>>>>>>>>>> found out >>>>>>>>>>>>>>>>>> that *getImage()* exists for ImageIcon class only and >>>>>>>>>>>>>>>>>> not Icon class. >>>>>>>>>>>>>>>>>> Example: >>>>>>>>>>>>>>>>>> private static void createImageIconUI(final String >>>>>>>>>>>>>>>>>> lookAndFeelString) >>>>>>>>>>>>>>>>>> throws Exception { >>>>>>>>>>>>>>>>>> SwingUtilities.invokeAndWait(new Runnable() { >>>>>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>>>>> public void run() { >>>>>>>>>>>>>>>>>> desktopPane = new JDesktopPane(); >>>>>>>>>>>>>>>>>> internalFrame = new JInternalFrame(); >>>>>>>>>>>>>>>>>> frame = new JFrame(); >>>>>>>>>>>>>>>>>> internalFrame.setTitle(lookAndFeelString); >>>>>>>>>>>>>>>>>> titleImageIcon = new ImageIcon() { >>>>>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>>>>> public int getIconWidth() { >>>>>>>>>>>>>>>>>> return 16; >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>>>>> public int getIconHeight() { >>>>>>>>>>>>>>>>>> return 16; >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> @Override >>>>>>>>>>>>>>>>>> public void paintIcon( >>>>>>>>>>>>>>>>>> Component c, Graphics g, int x, int y) { >>>>>>>>>>>>>>>>>> g.setColor(java.awt.Color.black); >>>>>>>>>>>>>>>>>> *g.fillRect(x, y, 50, 50);* >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> }; >>>>>>>>>>>>>>>>>> internalFrame.setFrameIcon(titleImageIcon); >>>>>>>>>>>>>>>>>> internalFrame.setSize(500, 200); >>>>>>>>>>>>>>>>>> internalFrame.setVisible(true); >>>>>>>>>>>>>>>>>> desktopPane.add(internalFrame); >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); >>>>>>>>>>>>>>>>>> frame.getContentPane().setLayout(new BorderLayout()); >>>>>>>>>>>>>>>>>> frame.getContentPane().add(desktopPane, "Center"); >>>>>>>>>>>>>>>>>> frame.setSize(500, 500); >>>>>>>>>>>>>>>>>> frame.setLocationRelativeTo(null); >>>>>>>>>>>>>>>>>> frame.setVisible(true); >>>>>>>>>>>>>>>>>> frame.toFront(); >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> }); >>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>> In this case the ImageIcon will NOT be resized to 16 x >>>>>>>>>>>>>>>>>> 16 even >>>>>>>>>>>>>>>>>> before my fix was implemented. That resize as shown in >>>>>>>>>>>>>>>>>> code is >>>>>>>>>>>>>>>>>> *only for Image files to fit in default ImageIcon* size >>>>>>>>>>>>>>>>>> as returned >>>>>>>>>>>>>>>>>> from the getIconHeight() and getIconWidth() methods. If user >>>>>>>>>>>>>>>>>> changes the ImageIcon size as in the example, that is >>>>>>>>>>>>>>>>>> upto to user >>>>>>>>>>>>>>>>>> to choose to do so and no control exists to prevent >>>>>>>>>>>>>>>>>> that. *So, with >>>>>>>>>>>>>>>>>> or without my fix, this behaviour will be same for >>>>>>>>>>>>>>>>>> ImageIcon and >>>>>>>>>>>>>>>>>> Icon custom instances.* >>>>>>>>>>>>>>>>>> Hope this clarifies the query. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On 14-Jan-2016, at 11:36 am, Sergey Bylokhov >>>>>>>>>>>>>>>>>>> <sergey.bylok...@oracle.com >>>>>>>>>>>>>>>>>>> <mailto:sergey.bylok...@oracle.com> >>>>>>>>>>>>>>>>>>> <mailto:sergey.bylok...@oracle.com >>>>>>>>>>>>>>>>>>> <mailto:sergey.bylok...@oracle.com>> >>>>>>>>>>>>>>>>>>> <mailto:sergey.bylok...@oracle.com >>>>>>>>>>>>>>>>>>> <mailto:sergey.bylok...@oracle.com>>> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi, Avik. >>>>>>>>>>>>>>>>>>> In the fix you update getIconWidth() and getIconHeight, >>>>>>>>>>>>>>>>>>> so now we >>>>>>>>>>>>>>>>>>> take the Icon into account. but it seems if the Icon is >>>>>>>>>>>>>>>>>>> bigger >>>>>>>>>>>>>>>>>>> that the maximum size it will not be resided to 16x16, >>>>>>>>>>>>>>>>>>> right? >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On 14/01/16 07:49, Avik Niyogi wrote: >>>>>>>>>>>>>>>>>>>> Hi All, >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Kindly review the bug fix for JDK 9. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> *Bug:* >>>>>>>>>>>>>>>>>>>> https://bugs.openjdk.java.net/browse/JDK-8146321 >>>>>>>>>>>>>>>>>>>> <https://bugs.openjdk.java.net/browse/JDK-8146321> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> *Webrev:* >>>>>>>>>>>>>>>>>>>> http://cr.openjdk.java.net/~aniyogi/8146321/webrev.00/ >>>>>>>>>>>>>>>>>>>> <http://cr.openjdk.java.net/%7Eaniyogi/8146321/webrev.00/> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> *Issue:* >>>>>>>>>>>>>>>>>>>> Under the Mac Look&Feel, if an icon type other than an >>>>>>>>>>>>>>>>>>>> ImageIcon >>>>>>>>>>>>>>>>>>>> is used >>>>>>>>>>>>>>>>>>>> in JInternalFrame.setFrameIcon(), >>>>>>>>>>>>>>>>>>>> the icon will show up in the wrong position. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> *Cause:* >>>>>>>>>>>>>>>>>>>> the "instanceof Icon" was not checked for. Also, customs >>>>>>>>>>>>>>>>>>>> ImageIcon with >>>>>>>>>>>>>>>>>>>> color fill (and no image URL) which would >>>>>>>>>>>>>>>>>>>> have resulted in null value for resized ImageIcon >>>>>>>>>>>>>>>>>>>> image was not well >>>>>>>>>>>>>>>>>>>> handled. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> *Fix:* >>>>>>>>>>>>>>>>>>>> All places in Aqua LAF where "instanceof Icon” (and >>>>>>>>>>>>>>>>>>>> not just >>>>>>>>>>>>>>>>>>>> ImageIcon >>>>>>>>>>>>>>>>>>>> class) is required, >>>>>>>>>>>>>>>>>>>> inputs were added after significant analyses. >>>>>>>>>>>>>>>>>>>> Check for null for getImage was done to remove a Null >>>>>>>>>>>>>>>>>>>> Pointer >>>>>>>>>>>>>>>>>>>> Exception. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> With Regards, >>>>>>>>>>>>>>>>>>>> Avik Niyogi >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>>>> Best regards, Sergey. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> -- >>>>>>>>>>>>> Best regards, Sergey. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >> >> -- >> Best regards, Sergey. >