<Swing Dev> Request for review 7155887: ComboBox does not paint focus correctly on GTK L&F
Pavel Porvatov
pavel.porvatov at oracle.com
Thu Mar 22 14:24:40 UTC 2012
Hi Jonathan,
> Hi Swing-dev,
>
> ComboBox on linux GTK L&F does not works as gtk native applications,
> when get focused, the apperance of Java ComboBox remains unchanged but
> native GTK ComboBox control will have a outline to indicate it has got
> focused.
>
> The problem seems similar to bug
> 6947671 ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6947671),
> except that I did not reproduced the problem on Nimbus L&F, so another
> bug
> 7155887 (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7155887)
> was created for this issue,
>
> And here's the proposed patch to fix this problem,
> http://cr.openjdk.java.net/~luchsh/7155887/
>
> Could anybody please help to take a look?
I have several comments about the patch:
1. "c.getName().equals("ComboBox.renderer")": I think we can get NPE here
2.
+ for (Component comboBoxParent = c.getParent();
comboBoxParent != null; comboBoxParent = comboBoxParent
+ .getParent()) {
+ if (comboBoxParent instanceof JComboBox
+ && comboBoxParent.hasFocus()) {
+ comboBoxFocused = true;
+ }
+ }
I'm not sure we should do such deep parent investigation. Why don't you
check first parent only?
3. "if (ENGINE.paintCachedImage(g, x, y, w, h, id, state) &&
!comboBoxFocused)"
If you are going to ignore ENGINE.paintCachedImage when comboBoxFocused,
then there is no need to invoke it at all
4. "if (comboBoxFocused || focusSize > 0)"
I'm not sure we should paint focus if focusSize == 0
Regards, Pavel
More information about the swing-dev
mailing list