diff options
author | Thomas Fitzsimmons <fitzsim@redhat.com> | 2003-09-19 19:27:59 +0000 |
---|---|---|
committer | Thomas Fitzsimmons <fitzsim@gcc.gnu.org> | 2003-09-19 19:27:59 +0000 |
commit | 5ec47f6049561ec52125da7f3e44ba269f9372ea (patch) | |
tree | ff7ca98acd33333b6e7381165d753e8f45b4876c /libjava/jni/gtk-peer | |
parent | 9e3bfa9b751ba8eeb11c0494c29df532fe3f91cb (diff) | |
download | gcc-5ec47f6049561ec52125da7f3e44ba269f9372ea.zip gcc-5ec47f6049561ec52125da7f3e44ba269f9372ea.tar.gz gcc-5ec47f6049561ec52125da7f3e44ba269f9372ea.tar.bz2 |
GtkDialogPeer.java (create()): Create a top-level GTK window.
2003-09-19 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/java/awt/peer/gtk/GtkDialogPeer.java (create()): Create a
top-level GTK window.
(getArgs): Add "title" property.
* gnu/java/awt/peer/gtk/GtkWindowPeer.java (setResizable): Use
"allow_shrink" and "allow_grow" properties.
* java/awt/Dialog.java: Initialize resizable to true and change
comments accordingly. Initialize visible to false in
constructors.
* java/awt/Frame.java (dispose): Remove method.
* java/awt/Window.java (ownedWindows): New field.
(Window(Window,GraphicsConfiguration)): Add a weak reference to
owner's ownedWindows vector.
(finalize): Remove method.
(hide): Hide owned windows.
(dispose): Dispose of owned windows.
(getOwnedWindows): Implement.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c: Remove
unused GtkArg code.
(set(String,boolean)): Clamp gboolean parameter to g_object_set
to TRUE or FALSE.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(create): Set window's size requisition.
(connectHooks): Fix indentation.
(setResizable): Remove function.
(static setBounds): Likewise.
(setBounds): Replace call to setBounds with GTK size requisition
and resize calls.
From-SVN: r71585
Diffstat (limited to 'libjava/jni/gtk-peer')
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c | 33 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c | 61 |
2 files changed, 29 insertions, 65 deletions
diff --git a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c index 46cd64f..ed94b7d 100644 --- a/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c +++ b/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c @@ -494,15 +494,11 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_S const char *name; const char *value; void *ptr; - GtkArg arg; ptr = NSA_GET_PTR (env, obj); name = (*env)->GetStringUTFChars (env, jname, NULL); value = (*env)->GetStringUTFChars (env, jvalue, NULL); - arg.type = GTK_TYPE_STRING; - arg.name = (char *) name; - GTK_VALUE_STRING (arg) = (char *) value; gdk_threads_enter(); g_object_set(ptr, name, value, NULL); gdk_threads_leave(); @@ -512,20 +508,20 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_S } JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Z - (JNIEnv *env, jobject obj, jstring jname, jboolean value) + (JNIEnv *env, jobject obj, jstring jname, jboolean jvalue) { const char *name; + gboolean value; void *ptr; - GtkArg arg; ptr = NSA_GET_PTR (env, obj); - name = (*env)->GetStringUTFChars (env, jname, NULL); - arg.type = GTK_TYPE_BOOL; - arg.name = (char *) name; - GTK_VALUE_BOOL (arg) = value; + name = (*env)->GetStringUTFChars (env, jname, NULL); + /* Apparently a jboolean can have a value greater than 1. gboolean + variables may only contain the value TRUE or FALSE. */ + value = jvalue ? TRUE : FALSE; - gdk_threads_enter(); + gdk_threads_enter(); g_object_set(ptr, name, value, NULL); gdk_threads_leave(); @@ -537,15 +533,10 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_la { const char *name; void *ptr; - GtkArg arg; ptr = NSA_GET_PTR (env, obj); name = (*env)->GetStringUTFChars (env, jname, NULL); - arg.type = GTK_TYPE_INT; - arg.name = (char *) name; - GTK_VALUE_INT (arg) = value; - gdk_threads_enter(); g_object_set(ptr, name, value, NULL); gdk_threads_leave(); @@ -558,15 +549,10 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_la { const char *name; void *ptr; - GtkArg arg; ptr = NSA_GET_PTR (env, obj); name = (*env)->GetStringUTFChars (env, jname, NULL); - arg.type = GTK_TYPE_FLOAT; - arg.name = (char *) name; - GTK_VALUE_FLOAT (arg) = value; - gdk_threads_enter(); g_object_set(ptr, name, value, NULL); gdk_threads_leave(); @@ -580,7 +566,6 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_O { const char *name; void *ptr1, *ptr2; - GtkArg arg; ptr1 = NSA_GET_PTR (env, obj1); ptr2 = NSA_GET_PTR (env, obj2); @@ -598,10 +583,6 @@ Java_gnu_java_awt_peer_gtk_GtkComponentPeer_set__Ljava_lang_String_2Ljava_lang_O return; } - arg.type = GTK_TYPE_OBJECT; - arg.name = (char *) name; - GTK_VALUE_OBJECT (arg) = GTK_OBJECT (ptr2); - gdk_threads_enter(); g_object_set(ptr1, name, ptr2, NULL); gdk_threads_leave(); 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 35f7a20..982a5cb 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 @@ -42,8 +42,6 @@ exception statement from your version. */ #include <gdk/gdkprivate.h> #include <gdk/gdkx.h> -static void setBounds (GtkWidget *, jint, jint, jint, jint); - /* * Make a new window (any type) */ @@ -60,6 +58,13 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create gtk_window_set_default_size (GTK_WINDOW(window), width, height); + /* We must set this window's size requisition. Otherwise when a + resize is queued (when gtk_widget_queue_resize is called) the + window will snap to its default requisition of 0x0. If we omit + this call, Frames and Dialogs shrink to degenerate 1x1 windows + when their resizable property changes. */ + gtk_widget_set_size_request (window, width, height); + vbox = gtk_vbox_new (0, 0); layout = gtk_layout_new (NULL, NULL); gtk_box_pack_end (GTK_BOX (vbox), layout, 1, 1, 0); @@ -88,6 +93,7 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setVisible gtk_widget_hide (GTK_WIDGET (ptr)); XFlush (GDK_DISPLAY ()); + gdk_threads_leave (); } @@ -102,20 +108,20 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_connectHooks gdk_threads_enter (); - children = gtk_container_get_children(GTK_CONTAINER(ptr)); - vbox = children->data; + children = gtk_container_get_children(GTK_CONTAINER(ptr)); + vbox = children->data; - if(!GTK_IS_VBOX(vbox)) - { - printf("*** this is not a vbox\n"); - } - children = gtk_container_get_children(GTK_CONTAINER(vbox)); - layout = children->data; + if(!GTK_IS_VBOX(vbox)) + { + printf("*** this is not a vbox\n"); + } + children = gtk_container_get_children(GTK_CONTAINER(vbox)); + layout = children->data; - if(!GTK_IS_LAYOUT(layout)) - { + if(!GTK_IS_LAYOUT(layout)) + { printf("*** widget is not a layout ***"); - } + } gtk_widget_realize (layout); @@ -177,24 +183,6 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setTitle } /* - * Set a window's resizing policy - */ - -JNIEXPORT void JNICALL -Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setResizable - (JNIEnv *env, jobject obj, jboolean resize) -{ - void *ptr; - - ptr = NSA_GET_PTR (env, obj); - - gdk_threads_enter (); - gtk_window_set_policy (GTK_WINDOW (ptr), resize, resize, 0); - gdk_threads_leave (); -} - - -/* * Lower the z-level of a window. */ @@ -230,12 +218,6 @@ Java_gnu_java_awt_peer_gtk_GtkWindowPeer_toFront (JNIEnv *env, gdk_threads_leave (); } -static void -setBounds (GtkWidget *widget, jint x, jint y, jint width, jint height) -{ - gtk_window_resize (GTK_WINDOW(widget), width, height); -} - JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBounds (JNIEnv *env, jobject obj, jint x, jint y, jint width, jint height) { @@ -247,7 +229,8 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBounds gdk_threads_enter (); widget = GTK_WIDGET (ptr); - setBounds (widget, x, y, width, height); + gtk_widget_set_size_request (widget, width, height); + gtk_window_resize (GTK_WINDOW(widget), width, height); gdk_threads_leave (); } @@ -306,7 +289,7 @@ gdk_window_get_root_geometry (GdkWindow *window, gint *depth) { GdkWindow *private; - + g_return_if_fail (window != NULL); private = (GdkWindow*) window; |