diff options
author | Kim Ho <kho@redhat.com> | 2004-01-29 14:34:31 +0000 |
---|---|---|
committer | Kim Ho <kho@gcc.gnu.org> | 2004-01-29 14:34:31 +0000 |
commit | 5efa76401ef16e8708ed5c3944e0918f738065d9 (patch) | |
tree | 9eeae3382aa981fb6ff66fa26a5bccbe8daa5916 /libjava | |
parent | 6d23f07f2bbe8e87a55a768381d13fc6da64edb5 (diff) | |
download | gcc-5efa76401ef16e8708ed5c3944e0918f738065d9.zip gcc-5efa76401ef16e8708ed5c3944e0918f738065d9.tar.gz gcc-5efa76401ef16e8708ed5c3944e0918f738065d9.tar.bz2 |
2004-01-29 Kim Ho <kho@redhat.com>
* gnu/java/awt/peer/gtk/GtkFramePeer.java
(gtkLayoutSetVisible): New method
(setMenuBar): Hide layout before setting MenuBar
and reshow it after.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(gtkLayoutSetVisible): Hide or show the Gtk Layout.
From-SVN: r76861
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 9 | ||||
-rw-r--r-- | libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java | 5 | ||||
-rw-r--r-- | libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c | 31 |
3 files changed, 45 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 8b1be41..4992cc1 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2004-01-29 Kim Ho <kho@redhat.com> + + * gnu/java/awt/peer/gtk/GtkFramePeer.java + (gtkLayoutSetVisible): New method + (setMenuBar): Hide layout before setting MenuBar + and reshow it after. + * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c + (gtkLayoutSetVisible): Hide or show the Gtk Layout. + 2004-01-28 Michael Koch <konqueror@gmx.de> * gnu/java/lang/ClassHelper.java diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java index 83516d1..c542b63 100644 --- a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java +++ b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java @@ -60,6 +60,7 @@ public class GtkFramePeer extends GtkWindowPeer 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 @@ public class GtkFramePeer extends GtkWindowPeer { 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 @@ public class GtkFramePeer extends GtkWindowPeer moveLayout(oldHeight - menuBarHeight); insets.top += menuBarHeight; awtComponent.doLayout(); + gtkLayoutSetVisible(true); } } 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 fb82aed..da1550f 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 @@ -491,7 +491,38 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout 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) |