From e4647dadffb2accda5132ece0537bcec3e9bf884 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Tue, 8 Sep 2015 21:06:24 +0300 Subject: [PATCH] IDEA-94602 IDEA window is incorrectly repainted after automatic window resizing in Windows 7 --- .../openapi/wm/impl/IdeFrameImpl.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java index 017687985f23..fa5d3f2ea735 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java @@ -37,10 +37,7 @@ import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; -import com.intellij.openapi.util.ActionCallback; -import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.Key; -import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.*; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.IdeRootPaneNorthExtension; @@ -53,6 +50,7 @@ import com.intellij.openapi.wm.impl.status.*; import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame; import com.intellij.ui.*; import com.intellij.ui.mac.MacMainFrameDecorator; +import com.intellij.util.Alarm; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -136,6 +134,25 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider { } }; Toolkit.getDefaultToolkit().addPropertyChangeListener("win.xpstyle.themeActive", myWindowsBorderUpdater); + if (!SystemInfo.isJavaVersionAtLeast("1.8")) { + final Ref myDimensionRef = new Ref(new Dimension()); + final Alarm alarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); + final Runnable runnable = new Runnable() { + @Override + public void run() { + if (isDisplayable() && !getSize().equals(myDimensionRef.get())) { + Rectangle bounds = getBounds(); + bounds.width--; + setBounds(bounds); + bounds.width++; + setBounds(bounds); + myDimensionRef.set(getSize()); + } + alarm.addRequest(this, 50); + } + }; + alarm.addRequest(runnable, 50); + } } IdeMenuBar.installAppMenuIfNeeded(this);