From 66a45a8f71fee8195af9256a40712e3dd7709fb7 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 4 Apr 2012 12:31:12 +0400 Subject: [PATCH 1/5] do not add minimize listener if problem is already fixed in JDK --- .../intellij/ui/mac/MacMainFrameDecorator.java | 16 +++++++++------- platform/util/src/com/intellij/Patches.java | 5 +++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/mac/MacMainFrameDecorator.java b/platform/platform-impl/src/com/intellij/ui/mac/MacMainFrameDecorator.java index 24a3ebb4b1a1..fe295604c47b 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/MacMainFrameDecorator.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/MacMainFrameDecorator.java @@ -136,14 +136,16 @@ public class MacMainFrameDecorator implements UISettingsListener, Disposable { final ID pool = invoke("NSAutoreleasePool", "new"); int v = UNIQUE_COUNTER.incrementAndGet(); - frame.addWindowListener(new WindowAdapter() { - @Override - public void windowDeiconified(WindowEvent e) { - if (e.getWindow() == frame && frame.getState() == Frame.ICONIFIED) { - frame.setState(Frame.NORMAL); + if (Patches.APPLE_BUG_ID_10514018) { + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowDeiconified(WindowEvent e) { + if (e.getWindow() == frame && frame.getState() == Frame.ICONIFIED) { + frame.setState(Frame.NORMAL); + } } - } - }); + }); + } try { if (SystemInfo.isMacOSLion) { if (!FULL_SCREEN_AVAILABLE) return; diff --git a/platform/util/src/com/intellij/Patches.java b/platform/util/src/com/intellij/Patches.java index 8008080b4b12..2a542176b2cf 100644 --- a/platform/util/src/com/intellij/Patches.java +++ b/platform/util/src/com/intellij/Patches.java @@ -110,6 +110,11 @@ public class Patches { public static final boolean APPLE_BUG_ID_10207064 = SystemInfo.isMac && (!SystemInfo.isMacOSLeopard || !SystemInfo.isJavaVersionAtLeast("1.6.0_30")); + /** + * Minimizing and restoring application via View | Minimize leads to visual artifacts + */ + public static final boolean APPLE_BUG_ID_10514018 = SystemInfo.isMac && !SystemInfo.isJavaVersionAtLeast("1.6.0_31"); + /** * Index out of bounds at apple.laf.AquaTabbedPaneUI.tabForCoordinate * http://www.jetbrains.net/jira/browse/IDEADEV-15769 From cbefa5466005d597c313d1da594e809d2f3ab1cf Mon Sep 17 00:00:00 2001 From: "Denis.Zhdanov" Date: Wed, 4 Apr 2012 13:05:05 +0400 Subject: [PATCH 2/5] IDEA-83645 Editor: Correct '`' (backtick) symbol drawing inside the editor Detect problem glyphs lazily --- .../intellij/openapi/editor/impl/FontInfo.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FontInfo.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FontInfo.java index 2af8896b00ee..83e23c2c2c3a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/FontInfo.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/FontInfo.java @@ -32,26 +32,23 @@ public class FontInfo { private final TIntHashSet mySymbolsToBreakDrawingIteration = new TIntHashSet(); - private final String myFamilyName; private final Font myFont; private final int mySize; @JdkConstants.FontStyle private final int myStyle; private final TIntHashSet mySafeCharacters = new TIntHashSet(); private FontMetrics myFontMetrics = null; private final int[] charWidth = new int[128]; - private final boolean myHasGlyphsToBreakDrawingIteration; + private boolean myHasGlyphsToBreakDrawingIteration; + private boolean myCheckedForProblemGlyphs; public FontInfo(final String familyName, final int size, @JdkConstants.FontStyle int style) { - myFamilyName = familyName; mySize = size; myStyle = style; myFont = new Font(familyName, style, size); - - parseProblemGlyphs(); - myHasGlyphsToBreakDrawingIteration = !mySymbolsToBreakDrawingIteration.isEmpty(); } private void parseProblemGlyphs() { + myCheckedForProblemGlyphs = true; BufferedImage buffer = new BufferedImage(20, 20, BufferedImage.TYPE_INT_RGB); final Graphics graphics = buffer.getGraphics(); if (!(graphics instanceof Graphics2D)) { @@ -70,6 +67,7 @@ public class FontInfo { mySymbolsToBreakDrawingIteration.add(c); } } + myHasGlyphsToBreakDrawingIteration = !mySymbolsToBreakDrawingIteration.isEmpty(); } /** @@ -86,6 +84,9 @@ public class FontInfo { * @return true if the {@link #getFont() target font} has problem glyphs; false otherwise */ public boolean hasGlyphsToBreakDrawingIteration() { + if (!myCheckedForProblemGlyphs) { + parseProblemGlyphs(); + } return myHasGlyphsToBreakDrawingIteration; } @@ -95,6 +96,9 @@ public class FontInfo { */ @NotNull public TIntHashSet getSymbolsToBreakDrawingIteration() { + if (!myCheckedForProblemGlyphs) { + parseProblemGlyphs(); + } return mySymbolsToBreakDrawingIteration; } From 04b46f7924cb2d41b6d25649b9254ab10ec44ce7 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Wed, 4 Apr 2012 11:17:18 +0200 Subject: [PATCH 3/5] anonymous parameters of anonymous classes were skipped --- .../ide/util/JavaAnonymousClassesHelper.java | 17 ++++++++++++++--- .../lang/java/JavaAnonymousClassesProvider.java | 8 +++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/util/JavaAnonymousClassesHelper.java b/java/java-impl/src/com/intellij/ide/util/JavaAnonymousClassesHelper.java index f3902470507c..731f8cce23e5 100644 --- a/java/java-impl/src/com/intellij/ide/util/JavaAnonymousClassesHelper.java +++ b/java/java-impl/src/com/intellij/ide/util/JavaAnonymousClassesHelper.java @@ -16,9 +16,7 @@ package com.intellij.ide.util; import com.intellij.openapi.util.Key; -import com.intellij.psi.JavaRecursiveElementWalkingVisitor; -import com.intellij.psi.PsiAnonymousClass; -import com.intellij.psi.PsiClass; +import com.intellij.psi.*; import com.intellij.psi.util.CachedValue; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; @@ -49,6 +47,19 @@ public class JavaAnonymousClassesHelper { @Override public void visitAnonymousClass(PsiAnonymousClass aClass) { + final PsiExpressionList arguments = aClass.getArgumentList(); + if (arguments != null) { + for (PsiExpression expression : arguments.getExpressions()) { + expression.acceptChildren(new JavaRecursiveElementVisitor() { + @Override + public void visitAnonymousClass(PsiAnonymousClass aClass) { + index++; + map.put(aClass, "$" + String.valueOf(index)); + } + }); + } + } + index++; map.put(aClass, "$" + String.valueOf(index)); } diff --git a/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java b/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java index e1b2259e735c..0d01c1b762e1 100644 --- a/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java +++ b/java/java-impl/src/com/intellij/lang/java/JavaAnonymousClassesProvider.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2011 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -37,6 +37,12 @@ public class JavaAnonymousClassesProvider implements AnonymousElementProvider { element.accept(new JavaRecursiveElementWalkingVisitor() { @Override public void visitAnonymousClass(PsiAnonymousClass aClass) { + final PsiExpressionList arguments = aClass.getArgumentList(); + if (arguments != null) { + for (PsiExpression expression : arguments.getExpressions()) { + visitExpression(expression); + } + } elements.add(aClass); } From 961f4b53882b89a6cff5e61f4c0d03ef876b8379 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 3 Apr 2012 21:07:05 +0200 Subject: [PATCH 4/5] intentions tree: make it possible to up/down through the tree without lags --- .../impl/config/IntentionSettingsPanel.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsPanel.java b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsPanel.java index ecf39f78ba11..d07075eb2034 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsPanel.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/intention/impl/config/IntentionSettingsPanel.java @@ -23,6 +23,7 @@ import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.ui.DetailsComponent; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.GuiUtils; +import com.intellij.util.Alarm; import org.jetbrains.annotations.NonNls; import javax.swing.*; @@ -41,19 +42,27 @@ public class IntentionSettingsPanel implements MasterDetails { private JPanel myTreePanel; private JPanel myDescriptionPanel; private DetailsComponent myDetailsComponent; + + private Alarm myResetAlarm = new Alarm(); public IntentionSettingsPanel() { myIntentionSettingsTree = new IntentionSettingsTree() { protected void selectionChanged(Object selected) { if (selected instanceof IntentionActionMetaData) { - IntentionActionMetaData actionMetaData = (IntentionActionMetaData)selected; - intentionSelected(actionMetaData); - if (myDetailsComponent != null) { - String[] text = new String[actionMetaData.myCategory.length + 1]; - System.arraycopy(actionMetaData.myCategory, 0, text,0,actionMetaData.myCategory.length); - text[text.length - 1] = actionMetaData.getFamily(); - myDetailsComponent.setText(text); - } + final IntentionActionMetaData actionMetaData = (IntentionActionMetaData)selected; + final Runnable runnable = new Runnable() { + public void run() { + intentionSelected(actionMetaData); + if (myDetailsComponent != null) { + String[] text = new String[actionMetaData.myCategory.length + 1]; + System.arraycopy(actionMetaData.myCategory, 0, text,0,actionMetaData.myCategory.length); + text[text.length - 1] = actionMetaData.getFamily(); + myDetailsComponent.setText(text); + } + } + }; + myResetAlarm.cancelAllRequests(); + myResetAlarm.addRequest(runnable, 100); } else { categorySelected((String)selected); @@ -102,9 +111,9 @@ public class IntentionSettingsPanel implements MasterDetails { public void reset() { myIntentionSettingsTree.reset(); - SwingUtilities.invokeLater(new Runnable(){ + SwingUtilities.invokeLater(new Runnable() { public void run() { - myIntentionDescriptionPanel.init(myPanel.getWidth()/2); + myIntentionDescriptionPanel.init(myPanel.getWidth() / 2); } }); } From dea8f000ac3b9a8de33ba74e3869f394850f57a6 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 3 Apr 2012 21:21:56 +0200 Subject: [PATCH 5/5] icon for any file type (IDEA-83851) --- platform/icons/src/fileTypes/any_type.png | Bin 0 -> 1350 bytes .../ide/util/scopeChooser/ShowFilesAction.java | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 platform/icons/src/fileTypes/any_type.png diff --git a/platform/icons/src/fileTypes/any_type.png b/platform/icons/src/fileTypes/any_type.png new file mode 100644 index 0000000000000000000000000000000000000000..fb48c6be846dc416ceff5119acaa139150205e92 GIT binary patch literal 1350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+n3Xa^B1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh*)icxGNo zet9uiy|1s8XI^nhVqS8pr;Du;&;-5A%oHn2V^$o&6x?nx!Kqgt=oo!a#3DsBObD2IKumbD1#;jCKQ#}S+KYh6dcvx@y$lSDyF6VS zLn?0d1fTb2auoS@jpbsrxL^y1t5plTqSpm4o7TojjU_MaH}nOzbJ(bs@@w_6*M$lKTuKHH_a`sizn;l% zX0vAC0;BG=*Vwmh<9E&7c*DR__TJ+;R!q5@6kY}hcel-~QF`ar_BO)vZPafq0fl`j zTib$u3aWWJU3lMo`K3TsPMCN2{*wi)*CO_r;HUX1rj1A$o&dH%Z*?tIF=Rzc>66+VI_JQufR6Kd(LBzHx70WcWRg&Ea&| RuScMg&C}J-Wt~$(696;D=oJ6} literal 0 HcmV?d00001 diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ShowFilesAction.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ShowFilesAction.java index e2690acf621a..f2376dbbd314 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ShowFilesAction.java +++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ShowFilesAction.java @@ -31,7 +31,7 @@ public final class ShowFilesAction extends ToggleAction { public ShowFilesAction(final Runnable update) { super(IdeBundle.message("action.show.files"), - IdeBundle.message("action.description.show.files"), IconLoader.getIcon("/fileTypes/unknown.png")); + IdeBundle.message("action.description.show.files"), IconLoader.getIcon("/fileTypes/any_type.png")); myUpdate = update; }