Index: ChangeLog =================================================================== RCS file: /cvsroot/classpath/classpath/ChangeLog,v retrieving revision 1.1854 diff -u -r1.1854 ChangeLog --- ChangeLog 28 Jan 2004 19:38:24 -0000 1.1854 +++ ChangeLog 29 Jan 2004 14:43:06 -0000 @@ -1,3 +1,14 @@ +2004-01-29 Kim Ho + + * gnu/java/awt/peer/gtk/GtkFramePeer.java + (gtkLayoutSetVisible): New method + (setMenuBar): Hide layout before setting MenuBar + and reshow it after. + * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c + (gtkLayoutSetVisible): Hide or show the Gtk Layout. + * include/gnu_java_awt_peer_gtk_GtkFramePeer.h: + Regenerated. + 2004-01-28 Michael Koch * java/lang/Thread.java: Reordered methods to match libgcj. Index: gnu/java/awt/peer/gtk/GtkFramePeer.java =================================================================== RCS file: /cvsroot/classpath/classpath/gnu/java/awt/peer/gtk/GtkFramePeer.java,v retrieving revision 1.23 diff -u -r1.23 GtkFramePeer.java --- gnu/java/awt/peer/gtk/GtkFramePeer.java 28 Jan 2004 16:36:38 -0000 1.23 +++ gnu/java/awt/peer/gtk/GtkFramePeer.java 29 Jan 2004 14:43:06 -0000 @@ -60,6 +60,7 @@ native void setMenuBarPeer (MenuBarPeer bar); native void removeMenuBarPeer (); native void moveLayout (int offset); + native void gtkLayoutSetVisible (boolean vis); public void setMenuBar (MenuBar bar) { @@ -67,16 +68,19 @@ { if (menuBar != null) { + gtkLayoutSetVisible(false); removeMenuBarPeer(); menuBar = null; moveLayout(menuBarHeight); insets.top -= menuBarHeight; menuBarHeight = 0; awtComponent.doLayout(); + gtkLayoutSetVisible(true); } } else { + gtkLayoutSetVisible(false); int oldHeight = 0; if (menuBar != null) { @@ -91,6 +95,7 @@ moveLayout(oldHeight - menuBarHeight); insets.top += menuBarHeight; awtComponent.doLayout(); + gtkLayoutSetVisible(true); } } Index: include/gnu_java_awt_peer_gtk_GtkFramePeer.h =================================================================== RCS file: /cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_GtkFramePeer.h,v retrieving revision 1.5 diff -u -r1.5 gnu_java_awt_peer_gtk_GtkFramePeer.h --- include/gnu_java_awt_peer_gtk_GtkFramePeer.h 27 Jan 2004 22:30:38 -0000 1.5 +++ include/gnu_java_awt_peer_gtk_GtkFramePeer.h 29 Jan 2004 14:43:06 -0000 @@ -14,6 +14,7 @@ extern JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_setMenuBarPeer (JNIEnv *env, jobject, jobject); extern JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_removeMenuBarPeer (JNIEnv *env, jobject); extern JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout (JNIEnv *env, jobject, jint); +extern JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkFramePeer_gtkLayoutSetVisible (JNIEnv *env, jobject, jboolean); #ifdef __cplusplus } Index: native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c =================================================================== RCS file: /cvsroot/classpath/classpath/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v retrieving revision 1.21 diff -u -r1.21 gnu_java_awt_peer_gtk_GtkWindowPeer.c --- native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 27 Jan 2004 22:30:38 -0000 1.21 +++ native/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c 29 Jan 2004 14:43:08 -0000 @@ -492,7 +492,38 @@ gdk_threads_leave (); } +JNIEXPORT void JNICALL +Java_gnu_java_awt_peer_gtk_GtkFramePeer_gtkLayoutSetVisible + (JNIEnv *env, jobject obj, jboolean vis) +{ + void* ptr; + GList* children; + GtkBox* vbox; + GtkLayout* layout; + ptr = NSA_GET_PTR (env, obj); + + gdk_threads_enter (); + + children = gtk_container_get_children (GTK_CONTAINER (ptr)); + vbox = children->data; + g_assert (GTK_IS_VBOX (vbox)); + + children = gtk_container_get_children (GTK_CONTAINER (vbox)); + do + { + layout = children->data; + children = children->next; + } + while (!GTK_IS_LAYOUT (layout) && children != NULL); + g_assert (GTK_IS_LAYOUT (layout)); + + if (vis) + gtk_widget_show (GTK_WIDGET (layout)); + else + gtk_widget_hide (GTK_WIDGET (layout)); + gdk_threads_leave (); +} static void window_get_frame_extents (GtkWidget *window, int *top, int *left, int *bottom, int *right)