diff options
-rw-r--r-- | libjava/ChangeLog | 11 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java | 12 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java | 3 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c | 29 |
4 files changed, 52 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 517aea5..959afc3 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,14 @@ +2004-01-16 Kim Ho <kho@redhat.com> + + * gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer): If + it is a FileDialog and has dimensions of 0 by 0, then the initial + size is set to size request plus insets. + * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java + (gtkWidgetGetDimensions): Override method. + * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c + (gtkWidgetGetDimensions): Override method. Returns size request plus + insets. + 2004-01-16 Andrew Haley <aph@redhat.com> * sysdep/x86-64/locks.h: Don't use in/out memory constraints. diff --git a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java index 6f71db9..ee067ce 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java @@ -1,5 +1,5 @@ /* GtkComponentPeer.java -- Implements ComponentPeer with GTK - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -124,6 +124,16 @@ public class GtkComponentPeer extends GtkGenericPeer setFont(awtComponent.getFont()); setCursor (awtComponent.getCursor ()); + if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0 + && awtComponent.getWidth() == 0) + { + int[] dims = new int[2]; + gtkWidgetGetDimensions(dims); + ((GtkFileDialogPeer) this).setBoundsCallback((Window)awtComponent, + awtComponent.getX(), + awtComponent.getY(), + dims[0], dims[1]); + } Rectangle bounds = awtComponent.getBounds (); setBounds (bounds.x, bounds.y, bounds.width, bounds.height); diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java index dc2c8b0..95f0dde 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFileDialogPeer.java @@ -1,5 +1,5 @@ /* GtkFileDialogPeer.java -- Implements FileDialogPeer with GTK - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -63,6 +63,7 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer native void connectJObject (); native void connectSignals (); native void nativeSetFile (String file); + native void gtkWidgetGetDimensions (int[] dims); public void setFile (String fileName) { diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c index c0f528a..8c6fc1f 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c @@ -1,5 +1,5 @@ /* gtkwindowpeer.c -- Native implementation of GtkWindowPeer - Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -400,6 +400,33 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight return height; } +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_gtkWidgetGetDimensions + (JNIEnv *env, jobject obj, jintArray jdims) +{ + void *ptr; + jint *dims; + int top, left, bottom, right; + GtkRequisition req; + + ptr = NSA_GET_PTR (env, obj); + dims = (*env)->GetIntArrayElements (env, jdims, 0); + dims[0] = dims[1] = 0; + + gdk_threads_enter (); + + gtk_widget_size_request (GTK_WIDGET (ptr), &req); + + window_get_frame_extents (GTK_WIDGET (ptr), &top, &left, &bottom, &right); + + dims[0] = req.width + left + right; + dims[1] = req.height + top + bottom; + + gdk_threads_leave (); + + (*env)->ReleaseIntArrayElements (env, jdims, dims, 0); +} + static void window_get_frame_extents (GtkWidget *window, int *top, int *left, int *bottom, int *right) |