[ui] IJPL-237218 Refactor: use setTitle with escaping in some API classes

Consider action presentation text shouldn't contain HTML.

(cherry picked from commit 11a22949b3859e334e70232a9c06ee8da6806e93)

IJ-CR-196509

GitOrigin-RevId: 63a897a872ddb7701a059f83242b7cd7bf48f25a
This commit is contained in:
Konstantin.Hudyakov
2026-03-18 19:25:11 +00:00
committed by intellij-monorepo-bot
parent 915ae821fe
commit 4e71849228
5 changed files with 11 additions and 7 deletions
@@ -3,6 +3,7 @@ package com.intellij.ide;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.util.text.HtmlChunk;
import com.intellij.ui.ClientProperty;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
@@ -20,7 +21,8 @@ public final class HelpTooltipManager extends HelpTooltip {
}
public void showTooltip(@NotNull JComponent component, @NotNull MouseEvent event) {
setTitle(component.getToolTipText(event));
String tooltipText = component.getToolTipText(event);
setTitle(tooltipText != null ? HtmlChunk.raw(tooltipText) : null);
Supplier<String> shortcutSupplier = ClientProperty.get(component, SHORTCUT_PROPERTY);
setShortcut(shortcutSupplier == null ? null : shortcutSupplier.get());
@@ -89,8 +89,9 @@ public final class JBListWithOpenInRightSplit<T> extends JBList<T> {
AnAction action = ActionManager.getInstance().getAction(getActionId());
if (action != null) {
String text = KeymapUtil.getFirstKeyboardShortcutText(action);
myTooltip = new HelpTooltip().setTitle(StringUtil.notNullize(action.getTemplatePresentation().getText())).setShortcut(text);
String tooltipText = StringUtil.notNullize(action.getTemplatePresentation().getText());
String shortcutText = KeymapUtil.getFirstKeyboardShortcutText(action);
myTooltip = new HelpTooltip().setPlainTextTitle(tooltipText).setShortcut(shortcutText);
myTooltip.installOn(this);
HelpTooltip.setMasterPopupOpenCondition(this, () -> {
return isHovered();
@@ -37,6 +37,7 @@ import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.NlsContexts;
import com.intellij.openapi.util.NlsSafe;
import com.intellij.openapi.util.text.HtmlChunk;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.util.text.Strings;
import com.intellij.ui.ExperimentalUI;
@@ -480,7 +481,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A
if (UISettings.isIdeHelpTooltipEnabled()) {
HelpTooltip ht = myPresentation.getClientProperty(CUSTOM_HELP_TOOLTIP);
if ((Strings.isNotEmpty(text) || Strings.isNotEmpty(description)) && ht == null) {
ht = new HelpTooltip().setTitle(text).setShortcut(getShortcutText());
ht = new HelpTooltip().setPlainTextTitle(text).setShortcut(getShortcutText());
if (myAction instanceof TooltipLinkProvider) {
TooltipLinkProvider.TooltipLink link = ((TooltipLinkProvider)myAction).getTooltipLink(this);
if (link != null) {
@@ -489,7 +490,7 @@ public class ActionButton extends JComponent implements ActionButtonComponent, A
}
String id = ActionManager.getInstance().getId(myAction);
if (!Objects.equals(text, description) && ((id != null && WHITE_LIST.contains(id)) || myAction instanceof TooltipDescriptionProvider)) {
ht.setDescription(description);
ht.setDescription(HtmlChunk.raw(description));
}
}
if (ht != null) {
@@ -277,7 +277,7 @@ internal class SquareStripeButton(action: SquareAnActionButton, val toolWindow:
override fun updateToolTipText() {
@Suppress("DialogTitleCapitalization")
HelpTooltip()
.setTitle(toolWindow.stripeTitleProvider)
.setPlainTextTitle(toolWindow.stripeTitleProvider)
.setLocation(getAlignment(toolWindow.anchor, toolWindow.isSplitMode))
.setShortcut(ActionManager.getInstance().getKeyboardShortcut(ActivateToolWindowAction.Manager.getActionIdForToolWindow(toolWindow.id)))
.setInitialDelay(0)
@@ -98,7 +98,7 @@ class StripeButton internal constructor(@JvmField internal val toolWindow: ToolW
private fun updateHelpTooltip() {
HelpTooltip.dispose(this)
val tooltip = HelpTooltip()
tooltip.setTitle(toolWindow.stripeTitleProvider)
tooltip.setPlainTextTitle(toolWindow.stripeTitleProvider)
val activateActionId = ActivateToolWindowAction.Manager.getActionIdForToolWindow(toolWindow.id)
tooltip.setShortcut(ActionManager.getInstance().getKeyboardShortcut(activateActionId))
tooltip.installOn(this)