RFR: 8258979: The image didn't show correctly with GTK LAF [v5]

Prasanta Sadhukhan psadhukhan at openjdk.org
Thu Jan 11 11:31:28 UTC 2024


On Thu, 11 Jan 2024 05:21:51 GMT, Abhishek Kumar <abhiscxk at openjdk.org> 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


More information about the client-libs-dev mailing list