<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