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]

[gui] [PATCH] Fix FileDialog's initial size


Hello,

I committed the following patch to the java-gui-branch.  It fixes
FileDialog's initial size, which was too small.  Previously, we set the
initial size of the FileDialog peer by using its "natural" requisition. 
However, this caused the dialog to have the absolute minimum size
possible, which doesn't give much room to browse and select files.

The patch sets the dialog's initial size by calling
gtk_window_get_default_size() on the GtkFileChooserDialog widget.  This
produces a better initial size with plenty of space.

-David Jee

2004-07-21  David Jee  <djee@redhat.com>

        * gnu/java/awt/peer/gtk/GtkComponentPeer.java
        (GtkComponentPeer): Use gtkWidgetGetPreferredDimensions() for
        setting the size of GtkFileDialogPeers.
        * jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
        (gtkWidgetGetPreferredDimensions): For widgets extending GtkWindow,
        use their default sizes rather than their natural requisitions.


Index: gnu/java/awt/peer/gtk/GtkComponentPeer.java
===================================================================
RCS file: /cvs/gcc/gcc/libjava/gnu/java/awt/peer/gtk/GtkComponentPeer.java,v
retrieving revision 1.16.2.14
diff -u -r1.16.2.14 GtkComponentPeer.java
--- gnu/java/awt/peer/gtk/GtkComponentPeer.java	1 Jul 2004 18:31:31 -0000	1.16.2.14
+++ gnu/java/awt/peer/gtk/GtkComponentPeer.java	21 Jul 2004 16:34:42 -0000
@@ -136,7 +136,7 @@
         && awtComponent.getWidth() == 0)
       {
         int[] dims = new int[2];
-        gtkWidgetGetDimensions(dims);
+        gtkWidgetGetPreferredDimensions(dims);
         ((GtkFileDialogPeer) this).setBoundsCallback((Window)awtComponent, 
                                                      awtComponent.getX(), 
                                                      awtComponent.getY(),
Index: jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c
===================================================================
RCS file: /cvs/gcc/gcc/libjava/jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c,v
retrieving revision 1.15.2.18
diff -u -r1.15.2.18 gnu_java_awt_peer_gtk_GtkComponentPeer.c
--- jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c	1 Jul 2004 18:31:31 -0000	1.15.2.18
+++ jni/gtk-peer/gnu_java_awt_peer_gtk_GtkComponentPeer.c	21 Jul 2004 16:34:43 -0000
@@ -680,19 +680,33 @@
 
   gdk_threads_enter ();
 
-  /* Save the widget's current size request. */
-  gtk_widget_size_request (GTK_WIDGET (ptr), &current_req);
+  /* Widgets that extend GtkWindow such as GtkFileChooserDialog may have
+     a default size.  These values seem more useful then the natural
+     requisition values, particularly for GtkFileChooserDialog. */
+  if (GTK_IS_WINDOW (ptr))
+    {
+      gint width, height;
+      gtk_window_get_default_size (GTK_WINDOW (ptr), &width, &height);
+
+      dims[0] = width;
+      dims[1] = height;
+    }
+  else
+    {
+      /* Save the widget's current size request. */
+      gtk_widget_size_request (GTK_WIDGET (ptr), &current_req);
 
-  /* Get the widget's "natural" size request. */
-  gtk_widget_set_size_request (GTK_WIDGET (ptr), -1, -1);
-  gtk_widget_size_request (GTK_WIDGET (ptr), &natural_req);
-
-  /* Reset the widget's size request. */
-  gtk_widget_set_size_request (GTK_WIDGET (ptr),
-			       current_req.width, current_req.height);
+      /* Get the widget's "natural" size request. */
+      gtk_widget_set_size_request (GTK_WIDGET (ptr), -1, -1);
+      gtk_widget_size_request (GTK_WIDGET (ptr), &natural_req);
+
+      /* Reset the widget's size request. */
+      gtk_widget_set_size_request (GTK_WIDGET (ptr),
+			           current_req.width, current_req.height);
 
-  dims[0] = natural_req.width;
-  dims[1] = natural_req.height;
+      dims[0] = natural_req.width;
+      dims[1] = natural_req.height;
+    }
 
   gdk_threads_leave ();
 

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