From ce5b97b7f809495d2d41a7202cf6b3ac22cdb0c8 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Wed, 12 Mar 2014 17:37:28 +0100 Subject: [PATCH] fix UI artifacts after exiting from Presentation Mode --- .../intellij/ide/ui/laf/LafManagerImpl.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java index 8d6ff1c06035..035f7eaad846 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/LafManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2013 JetBrains s.r.o. + * Copyright 2000-2014 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. @@ -29,6 +29,8 @@ import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; import com.intellij.openapi.components.*; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.ui.JBPopupMenu; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.popup.util.PopupUtil; @@ -36,8 +38,11 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.wm.ToolWindow; +import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.ui.JBColor; import com.intellij.ui.ScreenUtil; +import com.intellij.ui.content.Content; import com.intellij.ui.mac.MacPopupMenuUI; import com.intellij.util.IJSwingUtilities; import com.intellij.util.PlatformUtils; @@ -513,12 +518,33 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo fixSeparatorColor(uiDefaults); + updateToolWindows(); + for (Frame frame : Frame.getFrames()) { updateUI(frame); } fireLookAndFeelChanged(); } + public static void updateToolWindows() { + for (Project project : ProjectManager.getInstance().getOpenProjects()) { + final ToolWindowManager toolWindowManager = ToolWindowManager.getInstance(project); + for (String id : toolWindowManager.getToolWindowIds()) { + final ToolWindow toolWindow = toolWindowManager.getToolWindow(id); + for (Content content : toolWindow.getContentManager().getContents()) { + final JComponent component = content.getComponent(); + if (component != null) { + IJSwingUtilities.updateComponentTreeUI(component); + } + } + final JComponent c = toolWindow.getComponent(); + if (c != null) { + IJSwingUtilities.updateComponentTreeUI(c); + } + } + } + } + private static void fixMenuIssues(UIDefaults uiDefaults) { if (UIUtil.isUnderAquaLookAndFeel()) { // update ui for popup menu to get round corners @@ -629,7 +655,7 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo } private static void patchFileChooserStrings(final UIDefaults defaults) { - if (!defaults.containsKey(ourFileChooserTextKeys [0])) { + if (!defaults.containsKey(ourFileChooserTextKeys[0])) { // Alloy L&F does not define strings for names of context menu actions, so we have to patch them in here for (String key : ourFileChooserTextKeys) { defaults.put(key, IdeBundle.message(key));