On Mon, 30 Mar 2026 05:21:22 GMT, Jeremy Wood <[email protected]> wrote:

>> If we made n-many calls to 
>> textPane.getAccessibleContext().getAccessibleText() then we'd add n-many 
>> DocumentListeners to the HTMLDocument.
>> 
>> These listeners are very light, but even so: after thousands of listeners it 
>> may start to degrade performance.
>
> Jeremy Wood has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   8380790: make sure new Documents get axText listener
>   
>   This is in response to:
>   https://github.com/openjdk/jdk/pull/30401#issuecomment-4144874584
>   
>   My current output from this test resembles:
>   2 listeners  at "A"
>       javax.swing.plaf.basic.BasicTextUI$UpdateHandler 0x165938a8
>       javax.swing.text.DefaultCaret$Handler 0x13ad4587
>   5 listeners  at "B"
>       javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport$1 
> 0x408dfc5d
>       javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport 0x6badfa89
>       javax.swing.JEditorPane$AccessibleJEditorPaneHTML 0x8542bca
>       javax.swing.plaf.basic.BasicTextUI$UpdateHandler 0x165938a8
>       javax.swing.text.DefaultCaret$Handler 0x13ad4587
>   4 listeners  at "C"
>       javax.swing.JEditorPane$AccessibleJEditorPaneHTML 0x8542bca
>       javax.swing.text.html.AccessibleHTML$DocumentHandler 0x2343eccf
>       javax.swing.plaf.basic.BasicTextUI$UpdateHandler 0x165938a8
>       javax.swing.text.DefaultCaret$Handler 0x13ad4587
>   6 listeners  at "D"
>       javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport$1 
> 0x13117e17
>       javax.swing.JEditorPane$JEditorPaneAccessibleHypertextSupport 0x491f0df7
>       javax.swing.JEditorPane$AccessibleJEditorPaneHTML 0x8542bca
>       javax.swing.text.html.AccessibleHTML$DocumentHandler 0x2343eccf
>       javax.swing.plaf.basic.BasicTextUI$UpdateHandler 0x165938a8
>       javax.swing.text.DefaultCaret$Handler 0x13ad4587
>   
>   I'm surprised at each point there are a different number of 
> DocumentListeners, but this confirms that a new 
> JEditorPane$JEditorPaneAccessibleHypertextSupport$1 is being added after 
> setDocument(..)

src/java.desktop/share/classes/javax/swing/JEditorPane.java line 1727:

> 1725:             if (axText == null) {
> 1726:                 axText = new JEditorPaneAccessibleHypertextSupport();
> 1727:                 JEditorPane.this.addPropertyChangeListener("document", 
> evt -> axText = null );

Will we accumulate these listeners overtime? (since each 
getAccessibleText->setDocument->getAccessibleText will re-add the new one).

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/30401#discussion_r3012663878

Reply via email to