JDK-2161626 : Corrupted combo box, GTK L&F, Ubuntu 7.10
  • Type: Backport
  • Backport of: JDK-6624717
  • Component: client-libs
  • Sub-Component: javax.swing
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2008-04-18
  • Updated: 2011-01-19
  • Resolved: 2008-06-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 7 Other
7Fixed OpenJDK6Fixed
Comments
SUGGESTED FIX --- old/src/solaris/native/sun/awt/gtk2_interface.c Mon Jun 23 10:03:25 2008 +++ new/src/solaris/native/sun/awt/gtk2_interface.c Mon Jun 23 10:03:25 2008 @@ -333,6 +333,7 @@ static GdkPixbuf* (*fp_gtk_widget_render_icon)(GtkWidget *widget, const gchar *stock_id, GtkIconSize size, const gchar *detail); static void (*fp_gtk_widget_set_name)(GtkWidget *widget, const gchar *name); +static void (*fp_gtk_widget_set_parent)(GtkWidget *widget, GtkWidget *parent); static void (*fp_gtk_widget_set_direction)(GtkWidget *widget, GtkTextDirection direction); static void (*fp_gtk_widget_style_get)(GtkWidget *widget, @@ -570,6 +571,8 @@ dl_symbol("gtk_widget_render_icon"); fp_gtk_widget_set_name = dl_symbol("gtk_widget_set_name"); + fp_gtk_widget_set_parent = + dl_symbol("gtk_widget_set_parent"); fp_gtk_widget_set_direction = dl_symbol("gtk_widget_set_direction"); fp_gtk_widget_style_get = @@ -1040,7 +1043,7 @@ (NULL == gtk2_widgets[_GTK_COMBO_BOX_ARROW_BUTTON_TYPE])) { gtk2_widgets[_GTK_COMBO_BOX_ARROW_BUTTON_TYPE] = - (*fp_gtk_button_new)(); + (*fp_gtk_toggle_button_new)(); } result = gtk2_widgets[_GTK_COMBO_BOX_ARROW_BUTTON_TYPE]; break; @@ -1414,12 +1417,20 @@ widget_type == COMBO_BOX_TEXT_FIELD) { /* - * We add a regular GtkButton/GtkEntry to a GtkComboBoxEntry - * in order to trick engines into thinking it's a real combobox - * arrow button/text field. - */ + * We add a regular GtkButton/GtkEntry to a GtkComboBoxEntry + * in order to trick engines into thinking it's a real combobox + * arrow button/text field. + */ GtkWidget *combo = (*fp_gtk_combo_box_entry_new)(); - (*fp_gtk_container_add)((GtkContainer *)combo, result); + + if (widget_type == COMBO_BOX_TEXT_FIELD) + (*fp_gtk_container_add)((GtkContainer *)combo, result); + else + { + (*fp_gtk_widget_set_parent)(result, combo); + ((GtkBin*)combo)->child = result; + } + (*fp_gtk_container_add)((GtkContainer *)gtk2_fixed, combo); (*fp_gtk_widget_realize)(result); return result;
01-10-2008

EVALUATION Port the JDK 7 fix.
18-04-2008