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
This commit is contained in:
parent
2a837cf803
commit
57e1391773
@ -1,3 +1,14 @@
|
||||
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>
|
||||
|
||||
* gnu/java/awt/peer/gtk/GtkComponentPeer.java
|
||||
|
@ -59,24 +59,36 @@ public class GtkFramePeer extends GtkWindowPeer
|
||||
|
||||
native void setMenuBarPeer (MenuBarPeer bar);
|
||||
native void removeMenuBarPeer (MenuBarPeer bar);
|
||||
native void moveLayout (int offset);
|
||||
|
||||
public void setMenuBar (MenuBar bar)
|
||||
{
|
||||
if (bar == null && menuBar != null)
|
||||
if (bar == null)
|
||||
{
|
||||
removeMenuBarPeer(menuBar);
|
||||
menuBar = null;
|
||||
insets.top -= menuBarHeight;
|
||||
menuBarHeight = 0;
|
||||
awtComponent.doLayout();
|
||||
}
|
||||
else if (bar != null)
|
||||
{
|
||||
if (menuBar != null)
|
||||
{
|
||||
removeMenuBarPeer(menuBar);
|
||||
menuBar = null;
|
||||
moveLayout(menuBarHeight);
|
||||
insets.top -= menuBarHeight;
|
||||
menuBarHeight = 0;
|
||||
awtComponent.doLayout();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
int oldHeight = 0;
|
||||
if (menuBar != null)
|
||||
{
|
||||
removeMenuBarPeer(menuBar);
|
||||
oldHeight = menuBarHeight;
|
||||
insets.top -= menuBarHeight;
|
||||
}
|
||||
menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer();
|
||||
setMenuBarPeer(menuBar);
|
||||
setMenuBarPeer(menuBar);
|
||||
menuBarHeight = getMenuBarHeight (menuBar);
|
||||
if (oldHeight != menuBarHeight)
|
||||
moveLayout(oldHeight-menuBarHeight);
|
||||
insets.top += menuBarHeight;
|
||||
awtComponent.doLayout();
|
||||
}
|
||||
|
@ -433,6 +433,46 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight
|
||||
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
|
||||
window_get_frame_extents (GtkWidget *window,
|
||||
int *top, int *left, int *bottom, int *right)
|
||||
|
Loading…
Reference in New Issue
Block a user