This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Patch: Make AWT Frame respect its initial size setting


Hello,

AWT Frames backed by the GTK peers were not respecting their initial
size settings.  This patch fixes the problem.  It also makes Frames
invisible upon construction to match the behaviour described in Sun's
documentation.

Please review and comment.

Thanks,
Tom

2003-08-26  Thomas Fitzsimmons  <fitzsim@redhat.com>

	* gnu/java/awt/peer/gtk/GtkDialogPeer.java (create): Add width
	and height arguments to GtkWindowPeer.create method call.
	* gnu/java/awt/peer/gtk/GtkWindowPeer.java
	(create(int,int,int)): New method.
	(create(int)): Add call to new create method.
	(create()): Add width and height arguments to create method
	call.
	(GtkWindowPeer): Remove call to setBounds.
	* java/awt/Frame.java (Frame(String)): Initialize visible field
	to false.
	(Frame(GraphicsConfiguration)): Likewise.
	(Frame(String,GraphicsConfiguration)): Likewise.
	* jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c (create):
	Add width and height parameters.  Call
	gtk_window_set_default_size.
	(connectHooks): Remove unused name variable.
	(static setBounds): Call gtk_window_resize not
	gtk_widget_set_usize.
	(setBounds): Remove unused nchildren variable.

Index: gnu/java/awt/peer/gtk/GtkDialogPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkDialogPeer.java,v
retrieving revision 1.3
diff -u -b -B -r1.3 GtkDialogPeer.java
--- gnu/java/awt/peer/gtk/GtkDialogPeer.java	13 Jul 2003 15:09:20 -0000	1.3
+++ gnu/java/awt/peer/gtk/GtkDialogPeer.java	27 Aug 2003 02:39:19 -0000
@@ -53,7 +53,9 @@
 
   void create ()
   {
-    create (GTK_WINDOW_POPUP);
+    create (GTK_WINDOW_POPUP,
+	    awtComponent.getWidth(),
+	    awtComponent.getHeight());
   }
 
   public void getArgs (Component component, GtkArgList args)
Index: gnu/java/awt/peer/gtk/GtkWindowPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkWindowPeer.java,v
retrieving revision 1.3
diff -u -b -B -r1.3 GtkWindowPeer.java
--- gnu/java/awt/peer/gtk/GtkWindowPeer.java	22 Aug 2003 14:34:36 -0000	1.3
+++ gnu/java/awt/peer/gtk/GtkWindowPeer.java	27 Aug 2003 02:39:19 -0000
@@ -49,11 +49,18 @@
   static protected final int GTK_WINDOW_TOPLEVEL = 0;
   static protected final int GTK_WINDOW_POPUP = 1;
 
-  native void create (int type);
+  native void create (int type, int width, int height);
+
+  void create (int type)
+  {
+    create (type, awtComponent.getWidth(), awtComponent.getHeight());
+  }
 
   void create ()
   {
-    create (GTK_WINDOW_POPUP);
+    create (GTK_WINDOW_POPUP,
+	    awtComponent.getWidth(),
+	    awtComponent.getHeight());
   }
 
   native void connectHooks ();
@@ -61,9 +68,6 @@
   public GtkWindowPeer (Window window)
   {
     super (window);
-
-    Dimension d = window.getSize ();
-    setBounds (0, 0, d.width, d.height);
   }
 
   public void getArgs (Component component, GtkArgList args)
Index: java/awt/Frame.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/java/awt/Frame.java,v
retrieving revision 1.16
diff -u -b -B -r1.16 Frame.java
--- java/awt/Frame.java	11 Jun 2003 10:37:47 -0000	1.16
+++ java/awt/Frame.java	27 Aug 2003 02:39:20 -0000
@@ -237,12 +237,15 @@
 {
   super();
   this.title = title;
+  /* Top-level frames are initially invisible. */
+  visible = false;
 }
 
 public
 Frame(GraphicsConfiguration gc)
 {
   super(gc);
+  visible = false;
 }
 
 public
@@ -250,6 +253,7 @@
 {
   super(gc);
   setTitle(title);
+  visible = false;
 }
 
 /*************************************************************************/
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkEvents.c,v
retrieving revision 1.5
diff -u -b -B -r1.5 gnu_java_awt_peer_gtk_GtkEvents.c
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c,v
retrieving revision 1.3
diff -u -b -B -r1.3 gnu_java_awt_peer_gtk_GtkWindowPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	22 Aug 2003 14:34:37 -0000	1.3
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c	27 Aug 2003 02:39:25 -0000
@@ -50,14 +50,16 @@
 
 JNIEXPORT void JNICALL 
 Java_gnu_java_awt_peer_gtk_GtkWindowPeer_create 
-  (JNIEnv *env, jobject obj, jint type)
+  (JNIEnv *env, jobject obj, jint type, jint width, jint height)
 {
-  gpointer window;
+  GtkWidget *window;
   GtkWidget *vbox, *layout;
 
   gdk_threads_enter ();
   window = gtk_window_new (type);
 
+  gtk_window_set_default_size (GTK_WINDOW(window), width, height);
+
   vbox = gtk_vbox_new (0, 0);
   layout = gtk_layout_new (NULL, NULL);
   gtk_box_pack_end (GTK_BOX (vbox), layout, 1, 1, 0);
@@ -93,24 +96,23 @@
   (JNIEnv *env, jobject obj)
 {
   void *ptr;
-  GtkVBox* vbox;
-  GtkWidget *layout;
+  GtkWidget* vbox, *layout;
   GList* children;
-  char* name;
+
   ptr = NSA_GET_PTR (env, obj);
 
   gdk_threads_enter ();
 
    children = gtk_container_get_children(GTK_CONTAINER(ptr));
    vbox = children->data;
-   name = GTK_OBJECT_TYPE_NAME(vbox);
+
    if(!GTK_IS_VBOX(vbox))
      {
        printf("*** this is not a vbox\n");
      }
    children = gtk_container_get_children(GTK_CONTAINER(vbox));
    layout = children->data;
-   name = GTK_OBJECT_TYPE_NAME(layout);
+
    if(!GTK_IS_LAYOUT(layout))
      {
       printf("*** widget is not a layout ***");
@@ -147,7 +149,6 @@
   gtk_widget_show (vbox);
 
   gtk_widget_realize (window);
-/*    setBounds (window, x, y, width, height); */
 
   connect_awt_hook (env, obj, 1, window->window);
   set_visible (window, visible);
@@ -233,15 +234,7 @@
 static void
 setBounds (GtkWidget *widget, jint x, jint y, jint width, jint height)
 {
-/*    gdk_window_get_root_origin (widget->window, &current_x, &current_y); */
-
-/*    if (current_x != x || current_y != y) */
-/*      { */
-/*        gdk_window_set_hints (widget->window, x, y, 0, 0, 0, 0, GDK_HINT_POS); */
-/*        gdk_window_move (widget->window, x, y); */
-/*      } */
-
-  gtk_widget_set_usize (widget, width, height);
+  gtk_window_resize (GTK_WINDOW(widget), width, height);
 }
 
 JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_GtkWindowPeer_setBounds
@@ -314,7 +307,6 @@
 			      gint      *depth)
 {
   GdkWindow *private;
-  unsigned int nchildren;
   
   g_return_if_fail (window != NULL);
   

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]