aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorKim Ho <kho@redhat.com>2004-01-29 14:34:31 +0000
committerKim Ho <kho@gcc.gnu.org>2004-01-29 14:34:31 +0000
commit5efa76401ef16e8708ed5c3944e0918f738065d9 (patch)
tree9eeae3382aa981fb6ff66fa26a5bccbe8daa5916 /libjava
parent6d23f07f2bbe8e87a55a768381d13fc6da64edb5 (diff)
downloadgcc-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/ChangeLog9
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java5
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c31
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)