diff --git a/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java b/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java index 1cfc6661df48..c6caa5036a93 100644 --- a/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java +++ b/platform/platform-impl/src/com/intellij/ide/SwingCleanuper.java @@ -29,6 +29,8 @@ import com.intellij.util.ReflectionUtil; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; +import javax.accessibility.Accessible; +import javax.accessibility.AccessibleContext; import javax.swing.FocusManager; import javax.swing.*; import javax.swing.event.CaretListener; @@ -237,6 +239,23 @@ public final class SwingCleanuper implements ApplicationComponent{ } } } + + AccessibleContext ac = c.getAccessibleContext(); + if (ac != null) { + try { + Field field = ReflectionUtil.findField(ac.getClass(), Object.class, "nativeAXResource"); + field.setAccessible(true); + Object resource = field.get(ac); + if (resource != null && resource.getClass().getName().equals("apple.awt.CAccessible")) { + Field accessible = ReflectionUtil.findField(resource.getClass(), Accessible.class, "accessible"); + accessible.setAccessible(true); + accessible.set(resource, null); + } + } + catch (Exception e) { + return; + } + } } } }