On Thu, 11 Jan 2024 05:21:51 GMT, Abhishek Kumar <[email protected]> wrote:
>> The collapsed icon for JTree is not painted using `Icon.paintIcon(Component
>> c, Graphics g, int x, int y)` in GTK LAF. The collapsed icon is returned
>> from BasicTreeUI class which doesn't contain any icon image whereas the
>> expanded icon is returned from SynthTreeUI class and expanded icon is
>> rendered correctly.
>> The proposed fix is to return collapsed icon as an object of collapsed icon
>> wrapper which implements synthIcon and is similar to the expanded icon
>> implementation.
>>
>> Test mentioned in JBS is an applet based which is converted to main based
>> now and extended for all installed LAFs on the system.
>>
>> No regression caused with the fix, link is attached in JBS .
>
> Abhishek Kumar has updated the pull request incrementally with one additional
> commit since the last revision:
>
> Review comment fix and move file outside folder
src/java.desktop/share/classes/javax/swing/plaf/synth/SynthTreeUI.java line 161:
> 159:
> 160: expandedIconWrapper = new IconWrapper(expandedIcon);
> 161: collapsedIconWrapper = new IconWrapper(collapsedIcon);
It seems `updateStyle` is called for all `propertyChange` event so it can cause
memory leak by doing the class instantiation every time it is called..
Probably better place to instantiate this objects is in `installDefaults`
after calling `updateStyle`
src/java.desktop/share/classes/javax/swing/plaf/synth/SynthTreeUI.java line 809:
> 807: }
> 808: else {
> 809: SynthGraphicsUtils.paintIcon(iconType, context, g, x, y,
> w, h);
Guess it can be further optimized in all these methods
if (context == null) {
context = getContext(tree);
}
SynthGraphicsUtils.paintIcon(iconType, context, g, x, y, w, h);
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17294#discussion_r1448379415
PR Review Comment: https://git.openjdk.org/jdk/pull/17294#discussion_r1448380657