GTW-7827 3Set Korean inputs are garbled

GitOrigin-RevId: 487c051dc2f312bad8e127f1eb45cd52a2dbc74a
This commit is contained in:
Dmitry Batrak
2024-07-29 13:53:24 +03:00
committed by intellij-monorepo-bot
parent 3ea2f70e1e
commit 6787cfc4e6
5 changed files with 32 additions and 15 deletions

View File

@@ -23,7 +23,7 @@ import com.intellij.platform.ide.bootstrap.startApplication
import com.intellij.platform.impl.toolkit.IdeFontManager
import com.intellij.platform.impl.toolkit.IdeGraphicsEnvironment
import com.intellij.platform.impl.toolkit.IdeToolkit
import com.intellij.util.ui.JBHtmlEditorKit
import com.intellij.util.ui.UIUtil
import com.jetbrains.JBR
import kotlinx.coroutines.*
import org.jetbrains.annotations.ApiStatus.Internal
@@ -217,7 +217,7 @@ private fun initLux() {
@Suppress("SpellCheckingInspection")
System.setProperty("sun.font.fontmanager", IdeFontManager::class.java.canonicalName)
JBHtmlEditorKit.DISABLE_TEXT_LAYOUT = true
UIUtil.DISABLE_LAYOUT_IN_TEXT_COMPONENTS = true
}
private fun addBootstrapTiming(name: String, startupTimings: MutableList<Any>) {

View File

@@ -8479,6 +8479,7 @@ c:com.intellij.ui.components.JBTextField
- <init>(I):V
- <init>(java.lang.String):V
- <init>(java.lang.String,I):V
- p:createDefaultModel():javax.swing.text.Document
- getAccessibleContext():javax.accessibility.AccessibleContext
- p:getComponentGraphics(java.awt.Graphics):java.awt.Graphics
- getEmptyText():com.intellij.util.ui.StatusText

View File

@@ -12,6 +12,7 @@ import org.jetbrains.annotations.NotNull;
import javax.accessibility.AccessibleContext;
import javax.swing.*;
import javax.swing.plaf.TextUI;
import javax.swing.text.Document;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.util.Objects;
@@ -120,6 +121,13 @@ public class JBTextField extends JTextField implements ComponentWithEmptyText, T
return accessibleContext;
}
@Override
protected Document createDefaultModel() {
Document model = super.createDefaultModel();
UIUtil.disableTextLayoutIfNeeded(model);
return model;
}
private class AccessibleJBTextField extends AccessibleJTextField {
@Override
public String getAccessibleDescription() {

View File

@@ -18,7 +18,6 @@ import java.awt.*;
import java.awt.event.MouseEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
@@ -28,10 +27,6 @@ import java.util.stream.StreamSupport;
public class JBHtmlEditorKit extends HTMLEditorKit {
private static final Logger LOG = Logger.getInstance(JBHtmlEditorKit.class);
@SuppressWarnings("StaticNonFinalField")
@ApiStatus.Internal
public static boolean DISABLE_TEXT_LAYOUT = false;
private final @NotNull ViewFactory myViewFactory;
private final @NotNull StyleSheet myStyle;
@@ -217,14 +212,7 @@ public class JBHtmlEditorKit extends HTMLEditorKit {
private final class OurDocument extends HTMLDocument {
private OurDocument(StyleSheet styles) {
super(styles);
if (DISABLE_TEXT_LAYOUT) {
setDocumentProperties(new Hashtable<>(2) {
@Override
public synchronized Object get(Object key) {
return "i18n".equals(key) ? Boolean.FALSE : super.get(key);
}
});
}
UIUtil.disableTextLayoutIfNeeded(this);
}
@Override

View File

@@ -3346,4 +3346,24 @@ public final class UIUtil {
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
return gd.isFullScreenSupported();
}
@SuppressWarnings("StaticNonFinalField")
@ApiStatus.Internal
public static boolean DISABLE_LAYOUT_IN_TEXT_COMPONENTS = false;
/**
* Disables performing text layout for 'complex' text in the document, if configured globally.
* Should be called before the document is used for anything, i.e., right after construction.
*/
@ApiStatus.Internal
public static void disableTextLayoutIfNeeded(@NotNull Document document) {
if (DISABLE_LAYOUT_IN_TEXT_COMPONENTS && document instanceof AbstractDocument ad) {
ad.setDocumentProperties(new Hashtable<>(2) {
@Override
public synchronized Object get(Object key) {
return "i18n".equals(key) ? Boolean.FALSE : super.get(key);
}
});
}
}
}