mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-96110 Disabled icons are double-sized under Retina
This commit is contained in:
@@ -20,6 +20,7 @@ import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import com.intellij.util.ImageLoader;
|
||||
import com.intellij.util.RetinaImage;
|
||||
import com.intellij.util.containers.ConcurrentHashMap;
|
||||
import com.intellij.util.containers.WeakHashMap;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -248,16 +249,19 @@ public final class IconLoader {
|
||||
LOG.error(icon); // # 22481
|
||||
return EMPTY_ICON;
|
||||
}
|
||||
final BufferedImage image = UIUtil.createImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||
final int scale = UIUtil.isRetina() ? 2 : 1;
|
||||
@SuppressWarnings("UndesirableClassUsage")
|
||||
final BufferedImage image = new BufferedImage(scale*icon.getIconWidth(), scale*icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
|
||||
final Graphics2D graphics = image.createGraphics();
|
||||
|
||||
graphics.setColor(UIUtil.TRANSPARENT_COLOR);
|
||||
graphics.fillRect(0, 0, icon.getIconWidth(), icon.getIconHeight());
|
||||
graphics.scale(scale, scale);
|
||||
icon.paintIcon(LabelHolder.ourFakeComponent, graphics, 0, 0);
|
||||
|
||||
graphics.dispose();
|
||||
|
||||
disabledIcon = new MyImageIcon(createDisabled(image));
|
||||
final Image img = UIUtil.isRetina() ? RetinaImage.createFrom(createDisabled(image), 2, ImageLoader.ourComponent) : image;
|
||||
disabledIcon = new MyImageIcon(img);
|
||||
ourIcon2DisabledIcon.put(icon, disabledIcon);
|
||||
}
|
||||
return disabledIcon;
|
||||
|
||||
@@ -39,7 +39,7 @@ import java.util.List;
|
||||
|
||||
@Deprecated
|
||||
public class ImageLoader implements Serializable {
|
||||
private static final Component ourComponent = new Component() {
|
||||
public static final Component ourComponent = new Component() {
|
||||
};
|
||||
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.util.ImageLoader");
|
||||
|
||||
Reference in New Issue
Block a user