diff options
Diffstat (limited to 'native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c')
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c index 3703858fe..24dbabc20 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkLabelPeer.c @@ -85,16 +85,29 @@ Java_gnu_java_awt_peer_gtk_GtkLabelPeer_gtkWidgetGetPreferredDimensions dims = (*env)->GetIntArrayElements (env, jdims, 0); dims[0] = dims[1] = 0; + #if GTK_MAJOR_VERSION == 3 /* Save the widget's current size request. */ + + gtk_widget_get_preferred_size(GTK_WIDGET (label), ¤t_req, NULL); + /* Get the widget's "natural" size request. */ + gtk_widget_set_size_request (GTK_WIDGET (label), -1, -1); + gtk_widget_get_preferred_size(GTK_WIDGET (label), NULL, &natural_req); + + /* Reset the widget's size request. */ + gtk_widget_set_size_request (GTK_WIDGET (label), + current_req.width, current_req.height); + #elif GTK_MAJOR_VERSION == 2 + /* Save the widget's current size request. */ gtk_widget_size_request (GTK_WIDGET (label), ¤t_req); - + /* Get the widget's "natural" size request. */ gtk_widget_set_size_request (GTK_WIDGET (label), -1, -1); gtk_widget_size_request (GTK_WIDGET (label), &natural_req); - + /* Reset the widget's size request. */ gtk_widget_set_size_request (GTK_WIDGET (label), current_req.width, current_req.height); + #endif dims[0] = natural_req.width; dims[1] = natural_req.height; @@ -213,8 +226,11 @@ Java_gnu_java_awt_peer_gtk_GtkLabelPeer_setNativeBounds gtk_widget_set_size_request (gtk_bin_get_child (GTK_BIN (widget)), width, height); - if (widget->parent != NULL && GTK_IS_FIXED (widget->parent)) - gtk_fixed_move (GTK_FIXED (widget->parent), widget, x, y); + /* if (widget->parent != NULL && GTK_IS_FIXED (widget->parent)) + gtk_fixed_move (GTK_FIXED (widget->parent), widget, x, y);*/ + + if (gtk_widget_get_parent(widget) != NULL && GTK_IS_FIXED (gtk_widget_get_parent(widget))) + gtk_fixed_move (GTK_FIXED (gtk_widget_get_parent(widget)), widget, x, y); } gdk_threads_leave (); |