From 0bccf48a3de3898951f4536b6af24712953dd20c Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 6 Mar 2024 15:06:23 +0100 Subject: [PATCH] IDEA-346408 diff: hide promo badge if Combined diff was enabled in FindAction GitOrigin-RevId: 46bc4032f2aa86b968213934e60f23a951d5ddaa --- .../ui/codereview/CodeReviewAdvancedSettings.kt | 5 +++++ .../diff/actions/impl/SetEditorSettingsAction.kt | 16 +++------------- .../diff/tools/combined/CombinedDiffRegistry.kt | 4 ++++ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/platform/collaboration-tools/src/com/intellij/collaboration/ui/codereview/CodeReviewAdvancedSettings.kt b/platform/collaboration-tools/src/com/intellij/collaboration/ui/codereview/CodeReviewAdvancedSettings.kt index 866b35b2d456..74894db32e59 100644 --- a/platform/collaboration-tools/src/com/intellij/collaboration/ui/codereview/CodeReviewAdvancedSettings.kt +++ b/platform/collaboration-tools/src/com/intellij/collaboration/ui/codereview/CodeReviewAdvancedSettings.kt @@ -3,6 +3,7 @@ package com.intellij.collaboration.ui.codereview import com.intellij.collaboration.file.codereview.CodeReviewDiffVirtualFile import com.intellij.diff.editor.DiffEditorViewerFileEditor +import com.intellij.diff.tools.combined.CombinedDiffRegistry import com.intellij.diff.util.CombinedDiffToggle import com.intellij.idea.AppMode import com.intellij.openapi.options.advanced.AdvancedSettings @@ -16,6 +17,10 @@ object CodeReviewAdvancedSettings { private fun setCombinedDiffEnabled(enabled: Boolean) { AdvancedSettings.setBoolean(COMBINED_DIFF_SETTING_ID, enabled) + + if (enabled) { + CombinedDiffRegistry.resetBadge() + } } val CodeReviewCombinedDiffToggle: CombinedDiffToggle = object : CombinedDiffToggle { diff --git a/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.kt b/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.kt index 7991eeb326fc..cd0a3fcfc24d 100644 --- a/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.kt +++ b/platform/diff-impl/src/com/intellij/diff/actions/impl/SetEditorSettingsAction.kt @@ -17,7 +17,6 @@ import com.intellij.openapi.actionSystem.impl.PresentationFactory import com.intellij.openapi.diff.DiffBundle import com.intellij.openapi.editor.Editor import com.intellij.openapi.project.DumbAwareAction -import com.intellij.openapi.ui.popup.JBPopup import com.intellij.openapi.ui.popup.JBPopupListener import com.intellij.openapi.ui.popup.LightweightWindowEvent import com.intellij.openapi.ui.popup.util.PopupUtil @@ -46,18 +45,13 @@ class SetEditorSettingsAction( } } - override fun actionPerformed(e: AnActionEvent) { - val popup = createMainPopup(editorSettingsActionGroup, e.dataContext) - + val popup = MyPopup(editorSettingsActionGroup, e.dataContext) PopupUtil.showForActionButtonEvent(popup, e) - val diffModeToggle = getDiffModeToggle(e) ?: return popup.addListener(object : JBPopupListener { override fun onClosed(event: LightweightWindowEvent) { - if (!diffModeToggle.isCombinedDiffEnabled) { - CombinedDiffRegistry.resetBadge() - } + CombinedDiffRegistry.resetBadge() } }) } @@ -75,16 +69,12 @@ class SetEditorSettingsAction( private val presentationFactory = PresentationFactory() - private fun createMainPopup(actionGroup: ActionGroup, dataContext: DataContext): JBPopup { - return MyPopup(actionGroup, dataContext) - } - private fun getDiffModeToggle(e: AnActionEvent): CombinedDiffToggle? { val context = e.getData(DiffDataKeys.DIFF_CONTEXT) ?: return null return context.getUserData(DiffUserDataKeysEx.COMBINED_DIFF_TOGGLE) } - inner class MyPopup( + private inner class MyPopup( group: ActionGroup, context: DataContext ) : PopupFactoryImpl.ActionGroupPopup(null, group, context, false, false, true, true, null, -1, null, null, presentationFactory, false) { diff --git a/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffRegistry.kt b/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffRegistry.kt index 21cfc1022d13..2d93ce79b4c6 100644 --- a/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffRegistry.kt +++ b/platform/diff-impl/src/com/intellij/diff/tools/combined/CombinedDiffRegistry.kt @@ -19,6 +19,10 @@ object CombinedDiffRegistry { fun setCombinedDiffEnabled(enabled: Boolean) { AdvancedSettings.setBoolean(COMBINED_DIFF_SETTING_ID, enabled) + + if (enabled) { + resetBadge() + } } fun getPreloadedBlocksCount(): Int = Registry.intValue("combined.diff.visible.viewport.delta", 3, 1, 100)