Commit 57e13917 by Kim Ho Committed by Kim Ho

GtkFramePeer.java (moveLayout): New method.

2004-01-26  Kim Ho  <kho@redhat.com>

        * gnu/java/awt/peer/gtk/GtkFramePeer.java (moveLayout): New
        method.
        (setMenuBar): Shift the Gtk layout up/down by the MenuBar
        height and let the Layout Managers readjust anything that
        needs to move.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
        (moveLayout): New method. Shift everything in the Gtk
        layout in the Y direction by an offset.

From-SVN: r76729
parent 2a837cf8
2004-01-26 Kim Ho <kho@redhat.com>
* gnu/java/awt/peer/gtk/GtkFramePeer.java (moveLayout): New
method.
(setMenuBar): Shift the Gtk layout up/down by the MenuBar
height and let the Layout Managers readjust anything that
needs to move.
* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
(moveLayout): New method. Shift everything in the Gtk
layout in the Y direction by an offset.
2004-01-26 David Jee <djee@redhat.com> 2004-01-26 David Jee <djee@redhat.com>
* gnu/java/awt/peer/gtk/GtkComponentPeer.java * gnu/java/awt/peer/gtk/GtkComponentPeer.java
......
...@@ -59,24 +59,36 @@ public class GtkFramePeer extends GtkWindowPeer ...@@ -59,24 +59,36 @@ public class GtkFramePeer extends GtkWindowPeer
native void setMenuBarPeer (MenuBarPeer bar); native void setMenuBarPeer (MenuBarPeer bar);
native void removeMenuBarPeer (MenuBarPeer bar); native void removeMenuBarPeer (MenuBarPeer bar);
native void moveLayout (int offset);
public void setMenuBar (MenuBar bar) public void setMenuBar (MenuBar bar)
{ {
if (bar == null && menuBar != null) if (bar == null)
{ {
removeMenuBarPeer(menuBar); if (menuBar != null)
menuBar = null; {
insets.top -= menuBarHeight; removeMenuBarPeer(menuBar);
menuBarHeight = 0; menuBar = null;
awtComponent.doLayout(); moveLayout(menuBarHeight);
insets.top -= menuBarHeight;
menuBarHeight = 0;
awtComponent.doLayout();
}
} }
else if (bar != null) else
{ {
int oldHeight = 0;
if (menuBar != null) if (menuBar != null)
{
removeMenuBarPeer(menuBar); removeMenuBarPeer(menuBar);
oldHeight = menuBarHeight;
insets.top -= menuBarHeight;
}
menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer(); menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer();
setMenuBarPeer(menuBar); setMenuBarPeer(menuBar);
menuBarHeight = getMenuBarHeight (menuBar); menuBarHeight = getMenuBarHeight (menuBar);
if (oldHeight != menuBarHeight)
moveLayout(oldHeight-menuBarHeight);
insets.top += menuBarHeight; insets.top += menuBarHeight;
awtComponent.doLayout(); awtComponent.doLayout();
} }
......
...@@ -433,6 +433,46 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight ...@@ -433,6 +433,46 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight
return height; return height;
} }
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_GtkFramePeer_moveLayout
(JNIEnv *env, jobject obj, jint offset)
{
void* ptr;
GList* children;
GtkBox* vbox;
GtkLayout* layout;
GtkWidget* widget;
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));
children = gtk_container_get_children (GTK_CONTAINER (layout));
while (children != NULL)
{
widget = children->data;
gtk_layout_move (layout, widget, widget->allocation.x,
widget->allocation.y+offset);
children = children->next;
}
gdk_threads_leave ();
}
static void static void
window_get_frame_extents (GtkWidget *window, window_get_frame_extents (GtkWidget *window,
int *top, int *left, int *bottom, int *right) int *top, int *left, int *bottom, int *right)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment