< prev index next >

src/java.desktop/windows/classes/sun/awt/windows/WTrayIconPeer.java

Print this page

        

@@ -26,20 +26,23 @@
 package sun.awt.windows;
 
 import java.awt.Graphics2D;
 import java.awt.AWTEvent;
 import java.awt.Frame;
+import java.awt.GraphicsEnvironment;
 import java.awt.PopupMenu;
 import java.awt.Point;
 import java.awt.TrayIcon;
 import java.awt.Image;
+import java.awt.geom.AffineTransform;
 import java.awt.peer.TrayIconPeer;
 import java.awt.image.*;
 
 import sun.awt.AWTAccessor;
 import sun.awt.SunToolkit;
 import sun.awt.image.IntegerComponentRaster;
+import sun.java2d.pipe.Region;
 
 final class WTrayIconPeer extends WObjectPeer implements TrayIconPeer {
     static final int TRAY_ICON_WIDTH = 16;
     static final int TRAY_ICON_HEIGHT = 16;
     static final int TRAY_ICON_MASK_SIZE = (TRAY_ICON_WIDTH * TRAY_ICON_HEIGHT) / 8;

@@ -121,20 +124,25 @@
     synchronized void updateNativeImage(Image image) {
         if (isDisposed())
             return;
 
         boolean autosize = ((TrayIcon)target).isImageAutoSize();
+        AffineTransform tx = GraphicsEnvironment.getLocalGraphicsEnvironment().
+                getDefaultScreenDevice().getDefaultConfiguration().
+                getDefaultTransform();
+        int w = Region.clipScale(TRAY_ICON_WIDTH, tx.getScaleX());
+        int h = Region.clipScale(TRAY_ICON_HEIGHT, tx.getScaleY());
 
-        BufferedImage bufImage = new BufferedImage(TRAY_ICON_WIDTH, TRAY_ICON_HEIGHT,
-                                                   BufferedImage.TYPE_INT_ARGB);
+        BufferedImage bufImage = new BufferedImage(w,
+                h, BufferedImage.TYPE_INT_ARGB);
         Graphics2D gr = bufImage.createGraphics();
         if (gr != null) {
             try {
                 gr.setPaintMode();
 
-                gr.drawImage(image, 0, 0, (autosize ? TRAY_ICON_WIDTH : image.getWidth(observer)),
-                             (autosize ? TRAY_ICON_HEIGHT : image.getHeight(observer)), observer);
+                gr.drawImage(image, 0, 0, (autosize ? w : image.getWidth(observer)),
+                             (autosize ? h : image.getHeight(observer)), observer);
 
                 createNativeImage(bufImage);
 
                 updateNativeIcon(!firstUpdate);
                 if (firstUpdate) firstUpdate = false;
< prev index next >