OSDN Git Service

2004-01-29 Kim Ho <kho@redhat.com>
authorkho <kho@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Jan 2004 14:34:31 +0000 (14:34 +0000)
committerkho <kho@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Jan 2004 14:34:31 +0000 (14:34 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76861 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java
libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c

index 8b1be41..4992cc1 100644 (file)
@@ -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
index 83516d1..c542b63 100644 (file)
@@ -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);
     }
   }
 
index fb82aed..da1550f 100644 (file)
@@ -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)