]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
GtkComponentPeer.java (GtkComponentPeer): If it is a FileDialog and has dimensions...
authorKim Ho <kho@redhat.com>
Fri, 16 Jan 2004 20:05:41 +0000 (20:05 +0000)
committerKim Ho <kho@gcc.gnu.org>
Fri, 16 Jan 2004 20:05:41 +0000 (20:05 +0000)
2004-01-16  Kim Ho  <kho@redhat.com>

        * gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer): If
        it is a FileDialog and has dimensions of 0 by 0, then the initial
        size is set to size request plus insets.
        * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
        (gtkWidgetGetDimensions): Override method.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
        (gtkWidgetGetDimensions): Override method. Returns size request plus
        insets.

From-SVN: r75993

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

index 517aea5b2c41f319e1cf34d5316e199d25c8c423..959afc3f068a04cedf8c9cc1ba12639ef5673a7b 100644 (file)
@@ -1,3 +1,14 @@
+2004-01-16  Kim Ho  <kho@redhat.com>
+        * gnu/java/awt/peer/gtk/GtkComponentPeer.java (GtkComponentPeer): If
+        it is a FileDialog and has dimensions of 0 by 0, then the initial
+        size is set to size request plus insets.
+        * gnu/java/awt/peer/gtk/GtkFileDialogPeer.java
+        (gtkWidgetGetDimensions): Override method.
+        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkWindowPeer.c
+        (gtkWidgetGetDimensions): Override method. Returns size request plus
+        insets.
+
 2004-01-16  Andrew Haley  <aph@redhat.com>
 
        * sysdep/x86-64/locks.h: Don't use in/out memory constraints.
index 6f71db9f17ab73e30800f1d6ea3b9566bb893b30..ee067cedd51030263246c7379fc1b17771e23c8c 100644 (file)
@@ -1,5 +1,5 @@
 /* GtkComponentPeer.java -- Implements ComponentPeer with GTK
-   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -124,6 +124,16 @@ public class GtkComponentPeer extends GtkGenericPeer
        setFont(awtComponent.getFont());
 
       setCursor (awtComponent.getCursor ());
+      if (this instanceof GtkFileDialogPeer && awtComponent.getHeight() == 0
+          && awtComponent.getWidth() == 0)
+      {
+        int[] dims = new int[2];
+        gtkWidgetGetDimensions(dims);
+        ((GtkFileDialogPeer) this).setBoundsCallback((Window)awtComponent, 
+                                                     awtComponent.getX(), 
+                                                     awtComponent.getY(),
+                                                     dims[0], dims[1]);
+      }      
       Rectangle bounds = awtComponent.getBounds ();
       setBounds (bounds.x, bounds.y, bounds.width, bounds.height);
 
index dc2c8b0be9c3b84c1dd59ad1b250a7dfaeaa29e4..95f0dde50b7b99c1bab00fca9e2cfb0a262d569e 100644 (file)
@@ -1,5 +1,5 @@
 /* GtkFileDialogPeer.java -- Implements FileDialogPeer with GTK
-   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -63,6 +63,7 @@ public class GtkFileDialogPeer extends GtkDialogPeer implements FileDialogPeer
   native void connectJObject ();
   native void connectSignals ();
   native void nativeSetFile (String file);
+  native void gtkWidgetGetDimensions (int[] dims);
 
   public void setFile (String fileName)
   {
index c0f528a39830911efbf15779c655a95334286dd8..8c6fc1fbd0ce6ba7d38e2b319e9bfeaa966d6be6 100644 (file)
@@ -1,5 +1,5 @@
 /* gtkwindowpeer.c -- Native implementation of GtkWindowPeer
-   Copyright (C) 1998, 1999, 2002 Free Software Foundation, Inc.
+   Copyright (C) 1998, 1999, 2002, 2004 Free Software Foundation, Inc.
 
 This file is part of GNU Classpath.
 
@@ -400,6 +400,33 @@ Java_gnu_java_awt_peer_gtk_GtkFramePeer_getMenuBarHeight
   return height;
 }
 
+JNIEXPORT void JNICALL
+Java_gnu_java_awt_peer_gtk_GtkFileDialogPeer_gtkWidgetGetDimensions
+  (JNIEnv *env, jobject obj, jintArray jdims)
+{
+  void *ptr;
+  jint *dims;
+  int top, left, bottom, right;
+  GtkRequisition req;
+  
+  ptr = NSA_GET_PTR (env, obj);
+  dims = (*env)->GetIntArrayElements (env, jdims, 0);
+  dims[0] = dims[1] = 0;
+  
+  gdk_threads_enter ();
+  
+  gtk_widget_size_request (GTK_WIDGET (ptr), &req);
+  
+  window_get_frame_extents (GTK_WIDGET (ptr), &top, &left, &bottom, &right);
+
+  dims[0] = req.width + left + right;
+  dims[1] = req.height + top + bottom;
+  
+  gdk_threads_leave ();
+    
+  (*env)->ReleaseIntArrayElements (env, jdims, dims, 0);
+} 
+
 static void
 window_get_frame_extents (GtkWidget *window,
                           int *top, int *left, int *bottom, int *right)