summaryrefslogtreecommitdiff
path: root/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkButtonPeer.c
diff options
context:
space:
mode:
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.c35
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), &current_req, NULL);
+
+ /* Save the label's current size request. */
+ gtk_widget_get_preferred_size(GTK_WIDGET(label), &current_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), &current_req);
+
/* Save the label's current size request. */
gtk_widget_size_request (GTK_WIDGET (label), &current_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 ();