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