aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Ho <kho@redhat.com>2004-01-26 13:56:59 +0000
committerKim Ho <kho@gcc.gnu.org>2004-01-26 13:56:59 +0000
commitecf67f46ef7dd6b67bebb0ea96f6cd3cade10e33 (patch)
treeaf2d0b064eb6be32012de5c017a698aeae7486bc
parent4d39d873e0664935c3638dad36828cba877cb1f2 (diff)
downloadgcc-ecf67f46ef7dd6b67bebb0ea96f6cd3cade10e33.zip
gcc-ecf67f46ef7dd6b67bebb0ea96f6cd3cade10e33.tar.gz
gcc-ecf67f46ef7dd6b67bebb0ea96f6cd3cade10e33.tar.bz2
GtkFramePeer.java (menuBarHeight): Mark private.
2004-01-26 Kim Ho <kho@redhat.com> * gnu/java/awt/peer/gtk/GtkFramePeer.java (menuBarHeight): Mark private. (setMenuBar): Grab MenuBar height and change insets. (setBounds): Account for MenuBar height. (postInsetsChangedEvent): Ditto. (postSizeAllocateEvent): Remove. * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (menubar_resize_cb): Remove (setMenuBarPeer): Remove callback. (getMenuBarHeight): Use size requisition instead of allocation. From-SVN: r76633
-rw-r--r--libjava/ChangeLog14
-rw-r--r--libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java32
-rw-r--r--libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c35
3 files changed, 39 insertions, 42 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index fc7ee9c..f59d55f 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,17 @@
+2004-01-26 Kim Ho <kho@redhat.com>
+
+ * gnu/java/awt/peer/gtk/GtkFramePeer.java (menuBarHeight): Mark
+ private.
+ (setMenuBar): Grab MenuBar height and change insets.
+ (setBounds): Account for MenuBar height.
+ (postInsetsChangedEvent): Ditto.
+ (postSizeAllocateEvent): Remove.
+ * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+ (menubar_resize_cb): Remove
+ (setMenuBarPeer): Remove callback.
+ (getMenuBarHeight): Use size requisition instead of
+ allocation.
+
2004-01-25 Thomas Fitzsimmons <fitzsim@redhat.com>
* java/awt/TextArea.java: Fix indentation. Flesh out javadocs.
diff --git a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java
index 6c59847..3b69b02 100644
--- a/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java
+++ b/libjava/gnu/java/awt/peer/gtk/GtkFramePeer.java
@@ -53,7 +53,7 @@ import java.awt.peer.MenuBarPeer;
public class GtkFramePeer extends GtkWindowPeer
implements FramePeer
{
- int menuBarHeight = 0;
+ private int menuBarHeight;
private MenuBarPeer menuBar;
native int getMenuBarHeight (MenuBarPeer bar);
@@ -76,9 +76,20 @@ public class GtkFramePeer extends GtkWindowPeer
removeMenuBarPeer(menuBar);
menuBar = (MenuBarPeer) ((MenuBar) bar).getPeer();
setMenuBarPeer(menuBar);
+ menuBarHeight = getMenuBarHeight (menuBar);
+ insets.top += menuBarHeight;
+ awtComponent.doLayout();
}
}
+ public void setBounds (int x, int y, int width, int height)
+ {
+ nativeSetBounds (x, y,
+ width - insets.left - insets.right,
+ height - insets.top - insets.bottom
+ + menuBarHeight);
+ }
+
public void setResizable (boolean resizable)
{
// Call setSize; otherwise when resizable is changed from true to
@@ -89,18 +100,15 @@ public class GtkFramePeer extends GtkWindowPeer
+ menuBarHeight);
set ("allow_shrink", resizable);
set ("allow_grow", resizable);
- }
-
- protected void postSizeAllocateEvent()
+ }
+
+ protected void postInsetsChangedEvent (int top, int left,
+ int bottom, int right)
{
- if (menuBar != null)
- {
- if (menuBarHeight != 0)
- insets.top -= menuBarHeight;
- menuBarHeight = getMenuBarHeight(menuBar);
- insets.top += menuBarHeight;
- }
- awtComponent.doLayout();
+ insets.top = top + menuBarHeight;
+ insets.left = left;
+ insets.bottom = bottom;
+ insets.right = right;
}
public GtkFramePeer (Frame frame)
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 4d808e3..610fc14 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
@@ -72,8 +72,6 @@ static jint window_get_new_state (GtkWidget *widget);
static gboolean window_property_changed_cb (GtkWidget *widget,
GdkEventProperty *event,
jobject peer);
-static void menubar_resize_cb (GtkWidget *widget, GtkAllocation *alloc,
- jobject peer);
/*
* Make a new window.
@@ -402,15 +400,12 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_setMenuBarPeer
void *wptr;
GtkWidget *mptr;
GtkWidget *box;
- jobject *gref = NSA_GET_GLOBAL_REF (env, obj);
-
+
wptr = NSA_GET_PTR (env, obj);
mptr = NSA_GET_PTR (env, menubar);
gdk_threads_enter ();
- g_signal_connect (G_OBJECT (mptr), "size-allocate",
- G_CALLBACK (menubar_resize_cb), *gref);
box = GTK_BIN (wptr)->child;
gtk_box_pack_start (GTK_BOX (box), mptr, 0, 0, 0);
@@ -426,11 +421,14 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight
{
GtkWidget *ptr;
jint height;
+ GtkRequisition gtkreq;
ptr = NSA_GET_PTR (env, menubar);
gdk_threads_enter ();
- height = ptr->allocation.height;
+ gtk_widget_size_request (ptr, &gtkreq);
+
+ height = gtkreq.height;
gdk_threads_leave ();
return height;
}
@@ -733,26 +731,3 @@ window_property_changed_cb (GtkWidget *widget __attribute__((unused)),
return FALSE;
}
-
-static void menubar_resize_cb (GtkWidget *widget __attribute__((unused)),
- GtkAllocation *alloc __attribute__((unused)),
- jobject peer)
-{
- static int id_set = 0;
- static jmethodID postSizeAllocateEventID;
-
- if (!id_set)
- {
- jclass gtkframepeer = (*gdk_env)->FindClass (gdk_env,
- "gnu/java/awt/peer/gtk/GtkFramePeer");
- postSizeAllocateEventID = (*gdk_env)->GetMethodID (gdk_env,
- gtkframepeer,
- "postSizeAllocateEvent",
- "()V");
- id_set = 1;
- }
- gdk_threads_leave();
- (*gdk_env)->CallVoidMethod (gdk_env, peer,
- postSizeAllocateEventID);
- gdk_threads_enter();
-}