From 6496faa31f3abae4fe0c415fc0a2acbf33489db5 Mon Sep 17 00:00:00 2001 From: "Vassiliy.Kudryashov" Date: Tue, 15 Mar 2022 20:49:26 +0300 Subject: [PATCH] IDEA-289478 Terminal tab name is hidden when tool window open for the first time (cherry picked from commit a354d1b16dd339a7135de0716c6320bde91db48c) IJ-CR-22047 GitOrigin-RevId: 6546cc0c64ae11717d93df32856aa7d4730e6163 --- .../wm/impl/content/ContentTabLabel.java | 46 ++++++++++++------- 1 file changed, 29 insertions(+), 17 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ContentTabLabel.java b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ContentTabLabel.java index 1e0fc4bdba63..02605eaf5581 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ContentTabLabel.java +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/content/ContentTabLabel.java @@ -18,6 +18,9 @@ import com.intellij.ui.LayeredIcon; import com.intellij.ui.content.Content; import com.intellij.ui.content.ContentManager; import com.intellij.ui.scale.JBUIScale; +import com.intellij.util.Alarm; +import com.intellij.util.ObjectUtils; +import com.intellij.util.SingleAlarm; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtilities; import org.jetbrains.annotations.NotNull; @@ -66,24 +69,33 @@ public class ContentTabLabel extends ContentLabel { } private void updateText() { - if (myText != null && myText.startsWith("")) { - super.setText(myText); // SwingUtilities2.clipString does not support HTML - return; + try { + if (myText != null && myText.startsWith("")) { + super.setText(myText); // SwingUtilities2.clipString does not support HTML + return; + } + FontMetrics fm = getFontMetrics(getFont()); + int textWidth = UIUtilities.stringWidth(this, fm, myText); + int prefWidth = myIconWithInsetsWidth + textWidth; + + int maxWidth = getMaximumSize().width; + + if (prefWidth > maxWidth) { + int offset = maxWidth - myIconWithInsetsWidth; + String s = UIUtilities.clipString(this, fm, myText, offset); + super.setText(s); + return; + } + + super.setText(myText); + } finally { + new SingleAlarm(() -> { + ObjectUtils.consumeIfNotNull(getParent(), c -> { + c.revalidate(); + c.repaint(); + }); + }, 50, myContent, Alarm.ThreadToUse.SWING_THREAD).request(); } - FontMetrics fm = getFontMetrics(getFont()); - int textWidth = UIUtilities.stringWidth(this, fm, myText); - int prefWidth = myIconWithInsetsWidth + textWidth; - - int maxWidth = getMaximumSize().width; - - if (prefWidth > maxWidth) { - int offset = maxWidth - myIconWithInsetsWidth; - String s = UIUtilities.clipString(this, fm, myText, offset); - super.setText(s); - return; - } - - super.setText(myText); } ContentTabLabel(@NotNull Content content, @NotNull TabContentLayout layout) {