Closed dmitrii-drobotov closed 6 months ago
I also fixed a performance issue when selecting a lot of children, for example by pressing Cmd+A in a project tree or git log table with thousands of children. Calculating frames of all children caused long freezes in such cases, so I decided to use only the frame of the first selected child, which should be good enough in most cases.
Next step after https://github.com/JetBrains/JetBrainsRuntime/pull/255, making the Accessibility Zoom follow keyboard focus changes.
UAZoomChangeFocus
function when the keyboard focus is changed or when an accessible selection event is fired. Zoom viewport fill follow the accessible frame of the newly focused component, and if it has selected children, their frame will be passed as part that needs to be highlighted.ComboBoxAccessibility.accessibilitySelectedChildren
when its selection is nil. This happens when a combo box doesn't have a selected item, and without this fix, Zoom wouldn't be able to follow the combo box location.CAccessibility.focusChanged
method from the legacyJavaComponentAccessibility
to the newCommonComponentAccessibility
class. It calls a class method (like a static method in Java), so there is no difference in which specific class it's located, but it allows to write the new code in the appropriate class.Demo in IntelliJ and SwingSet: https://youtrack.jetbrains.com/issue/JBR-6325/macOS-No-keyboard-focus-tracking-while-using-Accessibility-Zoom-feature-with-IDE#focus=Comments-27-9125755.0-0.