diff options
Diffstat (limited to 'native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c')
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c | 35 |
1 files changed, 31 insertions, 4 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c index 3e39b0ee2..e49ee1779 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c @@ -102,18 +102,43 @@ Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetGetPreferredDimensions dims = (*env)->GetIntArrayElements (env, jdims, 0); dims[0] = dims[1] = 0; - + #if GTK_MAJOR_VERSION == 3 /* Save the button's current size request. */ + gtk_widget_get_preferred_size(GTK_WIDGET(button), ¤t_req, NULL); + + /* Save the label's current size request. */ + gtk_widget_get_preferred_size(GTK_WIDGET(label), ¤t_label_req, NULL); + + /* Get the widget's "natural" size request. */ + gtk_widget_set_size_request (GTK_WIDGET (button), -1, -1); + gtk_widget_set_size_request (GTK_WIDGET (label), -1, -1); + + gtk_widget_get_preferred_size(GTK_WIDGET(button), NULL, &natural_req); + + /* Reset the button's size request. */ + gtk_widget_set_size_request (GTK_WIDGET (button), + current_req.width, current_req.height); + + /* Reset the label's size request. */ + gtk_widget_set_size_request (GTK_WIDGET (label), + current_label_req.width, current_label_req.height); + #endif + + #if GTK_MAJOR_VERSION == 2 + /* Save the button's current size request. */ gtk_widget_size_request (GTK_WIDGET (button), ¤t_req); + /* Save the label's current size request. */ gtk_widget_size_request (GTK_WIDGET (label), ¤t_label_req); + /* Get the widget's "natural" size request. */ gtk_widget_set_size_request (GTK_WIDGET (button), -1, -1); gtk_widget_set_size_request (GTK_WIDGET (label), -1, -1); gtk_widget_size_request (GTK_WIDGET (button), &natural_req); + /* Reset the button's size request. */ gtk_widget_set_size_request (GTK_WIDGET (button), @@ -122,7 +147,7 @@ Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetGetPreferredDimensions /* Reset the label's size request. */ gtk_widget_set_size_request (GTK_WIDGET (label), current_label_req.width, current_label_req.height); - + #endif dims[0] = natural_req.width; dims[1] = natural_req.height; @@ -311,6 +336,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkButtonPeer_gtkWidgetRequestFocus (JNIEnv *env, jobject obj) { + void *ptr; GtkWidget *button; @@ -352,8 +378,9 @@ Java_gnu_java_awt_peer_gtk_GtkButtonPeer_setNativeBounds /* ...and the label's size request. */ gtk_widget_set_size_request (gtk_bin_get_child (GTK_BIN (child)), width, height); - 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 (); |