<Swing Dev> [PATCH] 6624717: Corrupted combo box, GTK L&F, Ubuntu 7.10
Damjan Jovanovic
damjan.jov at gmail.com
Sat Apr 5 09:18:30 UTC 2008
Hi
In http://www.mail-archive.com/swing-dev@openjdk.java.net/msg00092.html
Kirill Kirichenko said that the problem with combo boxes is that the
entry and the button are drawn separately, and they each need to be in
a GtkComboBoxEntry so the theme engine draws them right, but since
GtkComboBoxEntry now only supports GtkEntry subclasses as children (if
you try to add a button to a GtkComboBoxEntry it doesn't actually get
added), the button has to be drawn by us instead of GTK.
Well, from what I can see, we already draw the button correctly, and
with my patch below the button colour and arrow are identical to GTK's
own GtkComboBoxEntry under every theme that comes with Ubuntu
(Clearlooks, Human, Mist, ...). By just not adding the button to a
GtkComboBoxEntry, we get the right results.
Bye
Damjan
diff -r 0f955581dc0b src/solaris/native/sun/awt/gtk2_interface.c
--- a/src/solaris/native/sun/awt/gtk2_interface.c Mon Mar 24
06:33:16 2008 -0700
+++ b/src/solaris/native/sun/awt/gtk2_interface.c Sat Apr 05
10:20:00 2008 +0200
@@ -1410,13 +1410,12 @@ static GtkWidget *gtk2_get_widget(Widget
(*fp_gtk_menu_item_set_submenu)((GtkMenuItem*)root_menu, result);
(*fp_gtk_menu_shell_append)((GtkMenuShell *)menu_bar, root_menu);
}
- else if (widget_type == COMBO_BOX_ARROW_BUTTON ||
- widget_type == COMBO_BOX_TEXT_FIELD)
+ else if (widget_type == COMBO_BOX_TEXT_FIELD)
{
/*
- * We add a regular GtkButton/GtkEntry to a GtkComboBoxEntry
+ * We add a regular GtkEntry to a GtkComboBoxEntry
* in order to trick engines into thinking it's a real combobox
- * arrow button/text field.
+ * text field.
*/
GtkWidget *combo = (*fp_gtk_combo_box_entry_new)();
(*fp_gtk_container_add)((GtkContainer *)combo, result);
More information about the swing-dev
mailing list