gimp r25182 - in trunk: . app/display



Author: mitch
Date: Sun Mar 23 16:10:03 2008
New Revision: 25182
URL: http://svn.gnome.org/viewvc/gimp?rev=25182&view=rev

Log:
2008-03-23  Michael Natterer  <mitch gimp org>

	* app/display/gimpstatusbar.c: implement GtkWidget::size_request()
	and also consider the children which can be invisible when the
	display is empty.

	* app/display/gimpdisplayshell.c (gimp_display_shell_style_set):
	set the minimum height of the display to menubar + statusbar
	height.



Modified:
   trunk/ChangeLog
   trunk/app/display/gimpdisplayshell.c
   trunk/app/display/gimpstatusbar.c

Modified: trunk/app/display/gimpdisplayshell.c
==============================================================================
--- trunk/app/display/gimpdisplayshell.c	(original)
+++ trunk/app/display/gimpdisplayshell.c	Sun Mar 23 16:10:03 2008
@@ -592,17 +592,18 @@
   GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (widget);
   GtkRequisition    menubar_req;
   GtkRequisition    statusbar_req;
+  GdkGeometry       geometry;
 
   GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
 
   gtk_widget_size_request (shell->menubar,   &menubar_req);
   gtk_widget_size_request (shell->statusbar, &statusbar_req);
 
-#if 0
-  /*  this doesn't work  */
-  gtk_widget_set_size_request (widget, -1,
-                               menubar_req.height + statusbar_req.height);
-#endif
+  geometry.min_width  = statusbar_req.width;
+  geometry.min_height = statusbar_req.height + menubar_req.height + 1;
+
+  gtk_window_set_geometry_hints (GTK_WINDOW (widget), NULL,
+                                 &geometry, GDK_HINT_MIN_SIZE);
 }
 
 static void

Modified: trunk/app/display/gimpstatusbar.c
==============================================================================
--- trunk/app/display/gimpstatusbar.c	(original)
+++ trunk/app/display/gimpstatusbar.c	Sun Mar 23 16:10:03 2008
@@ -71,6 +71,9 @@
 
 static void     gimp_statusbar_destroy            (GtkObject         *object);
 
+static void     gimp_statusbar_size_request       (GtkWidget         *widget,
+                                                   GtkRequisition    *requisition);
+
 static GimpProgress *
                 gimp_statusbar_progress_start     (GimpProgress      *progress,
                                                    const gchar       *message,
@@ -127,10 +130,13 @@
 {
   GObjectClass   *object_class     = G_OBJECT_CLASS (klass);
   GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
+  GtkWidgetClass *widget_class     = GTK_WIDGET_CLASS (klass);
+
+  object_class->finalize     = gimp_statusbar_finalize;
 
-  object_class->finalize    = gimp_statusbar_finalize;
+  gtk_object_class->destroy  = gimp_statusbar_destroy;
 
-  gtk_object_class->destroy = gimp_statusbar_destroy;
+  widget_class->size_request = gimp_statusbar_size_request;
 }
 
 static void
@@ -264,6 +270,27 @@
   GTK_OBJECT_CLASS (parent_class)->destroy (object);
 }
 
+static void
+gimp_statusbar_size_request (GtkWidget      *widget,
+                             GtkRequisition *requisition)
+{
+  GimpStatusbar  *statusbar = GIMP_STATUSBAR (widget);
+  GtkRequisition  child_requisition;
+
+  GTK_WIDGET_CLASS (parent_class)->size_request (widget, requisition);
+
+  /*  also consider the children which can be invisible  */
+
+  gtk_widget_size_request (statusbar->cursor_frame, &child_requisition);
+  requisition->height = MAX (requisition->height, child_requisition.height);
+
+  gtk_widget_size_request (statusbar->unit_combo, &child_requisition);
+  requisition->height = MAX (requisition->height, child_requisition.height);
+
+  gtk_widget_size_request (statusbar->scale_combo, &child_requisition);
+  requisition->height = MAX (requisition->height, child_requisition.height);
+}
+
 static GimpProgress *
 gimp_statusbar_progress_start (GimpProgress *progress,
                                const gchar  *message,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]