diff --git a/platform/platform-api/api-dump.txt b/platform/platform-api/api-dump.txt index 0b83db231896..6aa50e9a6c51 100644 --- a/platform/platform-api/api-dump.txt +++ b/platform/platform-api/api-dump.txt @@ -232,6 +232,8 @@ com.intellij.openapi.actionSystem.ex.TooltipLinkProvider - a:getTooltipLink(javax.swing.JComponent):com.intellij.openapi.actionSystem.ex.TooltipLinkProvider$TooltipLink com.intellij.openapi.components.SettingsSavingComponent - a:save():V +f:com.intellij.openapi.editor.EditorModificationUtil +- s:setShowReadOnlyHint(com.intellij.openapi.editor.Editor,Z):V com.intellij.openapi.editor.actionSystem.ActionPlan - a:getCaretOffset():I - a:getText():com.intellij.util.text.ImmutableCharSequence diff --git a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java index c23e03d95b49..52fd125f228a 100644 --- a/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java +++ b/platform/platform-api/src/com/intellij/openapi/editor/EditorModificationUtil.java @@ -24,6 +24,7 @@ import java.util.Objects; public final class EditorModificationUtil extends EditorModificationUtilEx { private static final Key READ_ONLY_VIEW_HINT_KEY = Key.create("READ_ONLY_VIEW_HINT_KEY"); + private static final Key IGNORE_READ_ONLY_HINT_KEY = Key.create("IGNORE_READ_ONLY_HINT_KEY"); private EditorModificationUtil() { } @@ -141,6 +142,9 @@ public final class EditorModificationUtil extends EditorModificationUtilEx { if (!editor.isViewer()) return true; if (ApplicationManager.getApplication().isHeadlessEnvironment() || editor instanceof TextComponentEditor) return false; + Boolean ignoreHint = IGNORE_READ_ONLY_HINT_KEY.get(editor); + if (ignoreHint == Boolean.TRUE) return false; + ReadOnlyHint hint = ObjectUtils.chooseNotNull(READ_ONLY_VIEW_HINT_KEY.get(editor), new ReadOnlyHint(EditorBundle.message("editing.viewer.hint"), null)); HintManager.getInstance().showInformationHint(editor, hint.message, hint.linkListener); return false; @@ -163,6 +167,14 @@ public final class EditorModificationUtil extends EditorModificationUtilEx { editor.putUserData(READ_ONLY_VIEW_HINT_KEY, message != null ? new ReadOnlyHint(message, linkListener) : null); } + /** + * @param shouldShow whether the read-only hint should be shown in the provided editor if it is in a view mode. + * By default, the hint is showing. + */ + public static void setShowReadOnlyHint(@NotNull Editor editor, boolean shouldShow) { + editor.putUserData(IGNORE_READ_ONLY_HINT_KEY, shouldShow ? null : true); + } + private record ReadOnlyHint(@NotNull @NlsContexts.HintText String message, @Nullable HyperlinkListener linkListener) { } } diff --git a/plugins/terminal/src/org/jetbrains/plugins/terminal/block/ui/TerminalUiUtils.kt b/plugins/terminal/src/org/jetbrains/plugins/terminal/block/ui/TerminalUiUtils.kt index 24680a6df07a..754fe63c02f1 100644 --- a/plugins/terminal/src/org/jetbrains/plugins/terminal/block/ui/TerminalUiUtils.kt +++ b/plugins/terminal/src/org/jetbrains/plugins/terminal/block/ui/TerminalUiUtils.kt @@ -15,10 +15,7 @@ import com.intellij.openapi.application.ModalityState import com.intellij.openapi.application.invokeLater import com.intellij.openapi.command.undo.UndoUtil import com.intellij.openapi.diagnostic.logger -import com.intellij.openapi.editor.Document -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.editor.EditorFactory -import com.intellij.openapi.editor.EditorKind +import com.intellij.openapi.editor.* import com.intellij.openapi.editor.colors.EditorColorsListener import com.intellij.openapi.editor.colors.EditorColorsManager import com.intellij.openapi.editor.colors.EditorFontType @@ -105,6 +102,8 @@ object TerminalUiUtils { val editor = EditorFactory.getInstance().createEditor(document, project, EditorKind.CONSOLE) as EditorImpl editor.isScrollToCaret = false editor.isRendererMode = true + EditorModificationUtil.setShowReadOnlyHint(editor, false) + editor.scrollPane.border = JBUI.Borders.empty() editor.scrollPane.horizontalScrollBarPolicy = JScrollPane.HORIZONTAL_SCROLLBAR_NEVER editor.gutterComponentEx.isPaintBackground = false