From df1c2298d660115a3b50ccae27581eee3bc464ff Mon Sep 17 00:00:00 2001 From: Egor Ushakov Date: Wed, 13 Dec 2017 18:34:51 +0300 Subject: [PATCH] correctly paint LayeredIcon on the second screen --- .../com/intellij/openapi/util/IconLoader.java | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/platform/util/src/com/intellij/openapi/util/IconLoader.java b/platform/util/src/com/intellij/openapi/util/IconLoader.java index 1415a6feb379..e8b08694aad7 100644 --- a/platform/util/src/com/intellij/openapi/util/IconLoader.java +++ b/platform/util/src/com/intellij/openapi/util/IconLoader.java @@ -1,17 +1,5 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.openapi.util; @@ -318,7 +306,13 @@ public final class IconLoader { if (icon instanceof CachedImageIcon) { disabledIcon = ((CachedImageIcon)icon).asDisabledIcon(); } else { - final float scale = UIUtil.isJreHiDPI() ? JBUI.sysScale() : 1f; // [tav] todo: no screen available + final float scale; + if (icon instanceof JBUI.ScaleContextAware) { + scale = (float)((JBUI.ScaleContextAware)icon).getScale(SYS_SCALE); + } + else { + scale = UIUtil.isJreHiDPI() ? JBUI.sysScale() : 1f; // [tav] todo: no screen available + } @SuppressWarnings("UndesirableClassUsage") BufferedImage image = new BufferedImage((int)(scale * icon.getIconWidth()), (int)(scale * icon.getIconHeight()), BufferedImage.TYPE_INT_ARGB); final Graphics2D graphics = image.createGraphics();