From f9a55966c75da25f808cbc514d97f7112779cc60 Mon Sep 17 00:00:00 2001 From: Alexey Merkulov Date: Sun, 5 Feb 2023 15:31:29 +0100 Subject: [PATCH] Move fallback icon logic from ActionToolbarImpl to ActionButton itself It will unify buttons behaviour and allow to create the same buttons from createCustomComponent The base implementation of getDataContext is actually do the same as the removed one GitOrigin-RevId: 1827d0c8fa3bb393cfaa95c5c910d47422e556d1 --- .../actionSystem/impl/ActionButton.java | 11 ++++++-- .../actionSystem/impl/ActionToolbarImpl.java | 25 ++++++------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java index f2c4af96bda4..c1f91cd3cd1e 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionButton.java @@ -25,7 +25,10 @@ import com.intellij.ui.popup.PopupState; import com.intellij.ui.popup.WizardPopup; import com.intellij.ui.popup.util.PopupImplUtil; import com.intellij.util.ReflectionUtil; -import com.intellij.util.ui.*; +import com.intellij.util.ui.JBDimension; +import com.intellij.util.ui.JBInsets; +import com.intellij.util.ui.StartupUiUtil; +import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.accessibility.AccessibleContextUtil; import com.intellij.util.ui.accessibility.ScreenReader; import org.jetbrains.annotations.NonNls; @@ -388,7 +391,11 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A @NotNull protected Icon getFallbackIcon(boolean enabled) { - return EmptyIcon.ICON_18; + Presentation p = getAction().getTemplatePresentation(); + Icon icon = Objects.requireNonNullElse(p.getIcon(), AllIcons.Toolbar.Unknown); + if (enabled) return icon; + if (p.getDisabledIcon() != null) return p.getDisabledIcon(); + return IconLoader.getDisabledIcon(icon); } public void updateIcon() { diff --git a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java index d8a4414a192f..191edec3a39a 100644 --- a/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/actionSystem/impl/ActionToolbarImpl.java @@ -17,7 +17,10 @@ import com.intellij.openapi.diagnostic.ControlFlowException; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.ui.popup.*; import com.intellij.openapi.ui.popup.util.PopupUtil; -import com.intellij.openapi.util.*; +import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.Key; +import com.intellij.openapi.util.NlsContexts; +import com.intellij.openapi.util.Ref; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.openapi.wm.ToolWindow; @@ -51,8 +54,10 @@ import javax.swing.border.Border; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; +import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; -import java.util.*; +import java.util.Set; import java.util.concurrent.CancellationException; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -552,21 +557,7 @@ public class ActionToolbarImpl extends JPanel implements ActionToolbar, QuickAct return buttonWithText; } - ActionButton actionButton = new ActionButton(action, presentation, place, minimumSize) { - @Override - protected DataContext getDataContext() { - return getToolbarDataContext(); - } - - @Override - protected @NotNull Icon getFallbackIcon(boolean enabled) { - Presentation p = getAction().getTemplatePresentation(); - Icon icon = Objects.requireNonNullElse(p.getIcon(), AllIcons.Toolbar.Unknown); - if (enabled) return icon; - if (p.getDisabledIcon() != null) return p.getDisabledIcon(); - return IconLoader.getDisabledIcon(icon); - } - }; + ActionButton actionButton = new ActionButton(action, presentation, place, minimumSize); applyToolbarLook(look, presentation, actionButton); return actionButton;