From 558fbf6029bf457bfcccad9f2cd114398ee80f36 Mon Sep 17 00:00:00 2001 From: Sergei Tachenov Date: Mon, 22 Jun 2026 14:13:13 +0300 Subject: [PATCH] [UI, TW] IJPL-242950 Remove the Show Toolbar action Remove the action itself. Make the TW setToolbarVisible overload no-op, so the toolbars retain their initial visibility (and they should be visible by default). Make the TW overload of isToolbarVisible always return true to indicate the new behavior. Reviewed at IJ-CR-209740. (cherry picked from commit ba486b06af049ad87f3226e44829f6bda5ee7d42) GitOrigin-RevId: 6955cb859f6e595f95f57c6c911b2320556c20fc --- .../platform-impl/api-dump-unreviewed.txt | 2 - .../ide/actions/ToggleToolbarAction.java | 61 ++++--------------- .../openapi/wm/impl/ToolWindowImpl.kt | 12 ---- 3 files changed, 12 insertions(+), 63 deletions(-) diff --git a/platform/platform-impl/api-dump-unreviewed.txt b/platform/platform-impl/api-dump-unreviewed.txt index e17a26139fa6..37466a5afe41 100644 --- a/platform/platform-impl/api-dump-unreviewed.txt +++ b/platform/platform-impl/api-dump-unreviewed.txt @@ -1052,7 +1052,6 @@ f:com.intellij.ide.actions.TogglePresentationModeAction f:com.intellij.ide.actions.ToggleToolbarAction - s:createAction(java.lang.String,com.intellij.ide.util.PropertiesComponent,java.util.function.Supplier):com.intellij.ide.actions.ToggleToolbarAction - s:createToggleToolbarGroup(com.intellij.openapi.project.Project,com.intellij.openapi.wm.ToolWindow):com.intellij.openapi.actionSystem.DefaultActionGroup -- s:createToolWindowAction(com.intellij.openapi.wm.ToolWindow,com.intellij.ide.util.PropertiesComponent):com.intellij.ide.actions.ToggleToolbarAction - getActionUpdateThread():com.intellij.openapi.actionSystem.ActionUpdateThread - isSelected(com.intellij.openapi.actionSystem.AnActionEvent):Z - s:isToolbarVisible(com.intellij.openapi.wm.ToolWindow):Z @@ -1066,7 +1065,6 @@ f:com.intellij.ide.actions.ToggleToolbarAction - s:setToolbarVisible(java.lang.Iterable,Z):V - s:setToolbarVisible(java.lang.String,com.intellij.ide.util.PropertiesComponent,java.lang.Iterable,java.lang.Boolean):V - update(com.intellij.openapi.actionSystem.AnActionEvent):V -- s:updateToolbarVisibility(com.intellij.openapi.wm.ToolWindow,com.intellij.openapi.actionSystem.ActionToolbar,com.intellij.ide.util.PropertiesComponent):V c:com.intellij.ide.actions.ToolWindowTabRenameActionBase - (java.lang.String,java.lang.String):V - actionPerformed(com.intellij.openapi.actionSystem.AnActionEvent,com.intellij.openapi.wm.ToolWindow,com.intellij.ui.content.Content):V diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ToggleToolbarAction.java b/platform/platform-impl/src/com/intellij/ide/actions/ToggleToolbarAction.java index 9ac98a067cb2..2293e90753c6 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ToggleToolbarAction.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ToggleToolbarAction.java @@ -22,9 +22,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.ToolWindow; import com.intellij.ui.content.Content; import com.intellij.ui.content.ContentManager; -import com.intellij.ui.content.ContentManagerEvent; -import com.intellij.ui.content.ContentManagerListener; -import com.intellij.ui.content.impl.ContentManagerImpl; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.JBIterable; import com.intellij.util.ui.UIUtil; @@ -44,9 +41,9 @@ import java.util.function.Supplier; * @author gregsh */ public final class ToggleToolbarAction extends ToggleAction implements DumbAware { + @SuppressWarnings("unused") // published API, can't change the signature public static @NotNull DefaultActionGroup createToggleToolbarGroup(@NotNull Project project, @NotNull ToolWindow toolWindow) { - return new DefaultActionGroup(new OptionsGroup(toolWindow), - createToolWindowAction(toolWindow, PropertiesComponent.getInstance(project))); + return new DefaultActionGroup(new OptionsGroup(toolWindow)); } public static @NotNull ToggleToolbarAction createAction(@NotNull String id, @@ -55,52 +52,18 @@ public final class ToggleToolbarAction extends ToggleAction implements DumbAware return new ToggleToolbarAction(properties, getShowToolbarProperty(id), components); } - public static @NotNull ToggleToolbarAction createToolWindowAction(@NotNull ToolWindow toolWindow, - @NotNull PropertiesComponent properties) { - updateToolbarsVisibility(toolWindow, properties); - toolWindow.addContentManagerListener(new ContentManagerListener() { - @Override - public void contentAdded(@NotNull ContentManagerEvent event) { - JComponent component = event.getContent().getComponent(); - setToolbarVisible(Collections.singletonList(component), isToolbarVisible(toolWindow, properties)); - - // support nested content managers, e.g. RunnerLayoutUi as content component - ContentManager contentManager = ContentManagerImpl.getContentManager(component); - if (contentManager != null) { - contentManager.addContentManagerListener(this); - } - } - - @Override - public void selectionChanged(@NotNull ContentManagerEvent event) { - if (event.getOperation() != ContentManagerEvent.ContentOperation.remove) { - updateToolbarsVisibility(toolWindow, properties); - } - } - }); - return new ToggleToolbarAction(properties, getShowToolbarProperty(toolWindow), () -> { - ContentManager manager = toolWindow.getContentManagerIfCreated(); - return ContainerUtil.createMaybeSingletonList(manager == null ? null : manager.getComponent()); - }); - } - - private static void updateToolbarsVisibility(@NotNull ToolWindow toolWindow, - @NotNull PropertiesComponent properties) { - if (toolWindow.getContentManagerIfCreated() == null) return; - setToolbarVisible(Collections.singletonList(toolWindow.getComponent()), isToolbarVisible(toolWindow, properties)); - } - - public static void updateToolbarVisibility(@NotNull ToolWindow toolWindow, - @NotNull ActionToolbar toolbar, - @NotNull PropertiesComponent properties) { - setToolbarVisible(toolbar, isToolbarVisible(toolWindow, properties)); - } - + /** + * No-op since 2026.3. + * @param toolWindow + * @param properties + * @param visible + * @deprecated The Show Toolbar action is dropped in 2026.3, so toolbars are always visible. + */ + @Deprecated + @SuppressWarnings("unused") // published API, can't change the signature public static void setToolbarVisible(@NotNull ToolWindow toolWindow, @NotNull PropertiesComponent properties, @Nullable Boolean visible) { - boolean state = visible == null ? isToolbarVisible(toolWindow, properties) : visible; - setToolbarVisibleImpl(getShowToolbarProperty(toolWindow), properties, Collections.singletonList(toolWindow.getComponent()), state); } public static void setToolbarVisible(@NotNull String id, @@ -148,7 +111,7 @@ public final class ToggleToolbarAction extends ToggleAction implements DumbAware } public static boolean isToolbarVisible(@NotNull ToolWindow toolWindow, @NotNull PropertiesComponent properties) { - return isSelectedImpl(properties, getShowToolbarProperty(toolWindow)); + return true; } private final PropertiesComponent myPropertiesComponent; diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.kt index 1b68a7712781..6df2b435e2de 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/ToolWindowImpl.kt @@ -14,7 +14,6 @@ import com.intellij.ide.actions.ToolWindowMoveAction import com.intellij.ide.actions.ToolwindowFusEventFields import com.intellij.ide.impl.ContentManagerWatcher import com.intellij.ide.ui.UISettings -import com.intellij.ide.util.PropertiesComponent import com.intellij.idea.ActionsBundle import com.intellij.internal.statistic.eventLog.events.EventPair import com.intellij.openapi.Disposable @@ -64,7 +63,6 @@ import com.intellij.toolWindow.InternalDecoratorImpl import com.intellij.toolWindow.ToolWindowEventSource import com.intellij.toolWindow.ToolWindowProperty import com.intellij.ui.ClientProperty -import com.intellij.ui.ComponentTreeWatcher import com.intellij.ui.ComponentUtil import com.intellij.ui.ExperimentalUI import com.intellij.ui.LayeredIcon @@ -79,7 +77,6 @@ import com.intellij.ui.content.impl.ContentImpl import com.intellij.ui.content.impl.ContentManagerImpl import com.intellij.ui.content.tabs.TabbedContentAction import com.intellij.ui.scale.JBUIScale -import com.intellij.util.ArrayUtil import com.intellij.util.ModalityUiUtil import com.intellij.util.SingleAlarm import com.intellij.util.cancelOnDispose @@ -299,15 +296,6 @@ private val LOG = logger() onMovedOrResized() } }) - object : ComponentTreeWatcher(ArrayUtil.EMPTY_CLASS_ARRAY) { - override fun processComponent(component: Component) { - if (component !is ActionToolbar) return - ToggleToolbarAction.updateToolbarVisibility( - this@ToolWindowImpl, component, PropertiesComponent.getInstance(project)) - } - - override fun unprocessComponent(component: Component) = Unit - }.register(decorator) if (ExperimentalUI.isNewUI()) { scrollPaneTracker = ScrollPaneTracker(container = decorator, filter = { true }) { updateScrolledState()