[maemo-commits] [maemo-commits] r18719 - in projects/haf/trunk/gtk+: . debian gtk

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Fri Jun 12 19:50:35 EEST 2009
Author: kalikiana
Date: 2009-06-12 19:50:31 +0300 (Fri, 12 Jun 2009)
New Revision: 18719

Modified:
   projects/haf/trunk/gtk+/ChangeLog
   projects/haf/trunk/gtk+/debian/changelog
   projects/haf/trunk/gtk+/gtk/gtkdialog.c
   projects/haf/trunk/gtk+/gtk/gtkdialog.h
Log:
Implement properties top-padding, left-padding,
right-padding, bottom-padding and inner-spacing with appropriate
default values as well as a function gtk_dialog_set_padding and
gtk_dialog_get_padding. Patch by Danel Borgmann.



Modified: projects/haf/trunk/gtk+/ChangeLog
===================================================================
--- projects/haf/trunk/gtk+/ChangeLog	2009-06-12 15:35:28 UTC (rev 18718)
+++ projects/haf/trunk/gtk+/ChangeLog	2009-06-12 16:50:31 UTC (rev 18719)
@@ -1,3 +1,17 @@
+2009-06-12  Christian Dywan  <christian at lanedo.com>
+
+	Fixes: NB#98617 - Make dialogs use proper border margins
+
+	* gtk/gtkdialog.c (gtk_dialog_class_init), (update_spacings),
+	(gtk_dialog_init), (gtk_dialog_set_property),
+	(gtk_dialog_get_property), (gtk_dialog_set_has_separator),
+	(gtk_dialog_set_padding), (gtk_dialog_get_padding),
+	(gtk_dialog_set_inner_spacing), (gtk_dialog_get_inner_spacing):
+	* gtk/gtkdialog.h: Implement properties top-padding, left-padding,
+	right-padding, bottom-padding and inner-spacing with appropriate
+	default values as well as a function gtk_dialog_set_padding and
+	gtk_dialog_get_padding. Patch by Danel Borgmann.
+
 2009-06-10  Claudio Saavedra  <csaavedra at igalia.com>
 
 	Releasing 2:2.14.3-1maemo4

Modified: projects/haf/trunk/gtk+/debian/changelog
===================================================================
--- projects/haf/trunk/gtk+/debian/changelog	2009-06-12 15:35:28 UTC (rev 18718)
+++ projects/haf/trunk/gtk+/debian/changelog	2009-06-12 16:50:31 UTC (rev 18719)
@@ -1,3 +1,9 @@
+gtk+2.0 (2:2.14.3-1maemo5) unstable; urgency=low
+
+  * Fixes: NB#98617 - Make dialogs use proper border margins
+
+  -- Foo <foo at bar.com>  Fri, 31 Jun 2009 18:44:00 +0100
+
 gtk+2.0 (2:2.14.3-1maemo4) unstable; urgency=low
 
   * Split gail into its own packages:

Modified: projects/haf/trunk/gtk+/gtk/gtkdialog.c
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkdialog.c	2009-06-12 15:35:28 UTC (rev 18718)
+++ projects/haf/trunk/gtk+/gtk/gtkdialog.c	2009-06-12 16:50:31 UTC (rev 18719)
@@ -27,6 +27,9 @@
 #include <stdlib.h>
 #include <string.h>
 #include "config.h"
+#ifdef MAEMO_CHANGES
+#include "gtkalignment.h"
+#endif /* MAEMO_CHANGES */
 #include "gtkbutton.h"
 #include "gtkdialog.h"
 #include "gtkhbbox.h"
@@ -49,6 +52,10 @@
 
 typedef struct {
   guint ignore_separator : 1;
+#ifdef MAEMO_CHANGES
+  GtkWidget *hbox;
+  GtkWidget *alignment;
+#endif /* MAEMO_CHANGES */
 } GtkDialogPrivate;
 
 typedef struct _ResponseData ResponseData;
@@ -102,6 +109,13 @@
 
 enum {
   PROP_0,
+#ifdef MAEMO_CHANGES
+  PROP_TOP_PADDING,
+  PROP_BOTTOM_PADDING,
+  PROP_LEFT_PADDING,
+  PROP_RIGHT_PADDING,
+  PROP_INNER_SPACING,
+#endif /* MAEMO_CHANGES */
   PROP_HAS_SEPARATOR
 };
 
@@ -147,9 +161,65 @@
                                    g_param_spec_boolean ("has-separator",
 							 P_("Has separator"),
 							 P_("The dialog has a separator bar above its buttons"),
+#ifdef MAEMO_CHANGES
+                                                         FALSE,
+#else
                                                          TRUE,
+#endif /* MAEMO_CHANGES */
                                                          GTK_PARAM_READWRITE));
 
+#ifdef MAEMO_CHANGES
+  g_object_class_install_property (gobject_class,
+                                   PROP_TOP_PADDING,
+                                   g_param_spec_uint ("top-padding",
+                                                      P_("Top Padding"),
+                                                      P_("The padding to insert at the top of the dialog."),
+                                                      0,
+                                                      G_MAXUINT,
+                                                      0,
+                                                      GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_BOTTOM_PADDING,
+                                   g_param_spec_uint ("bottom-padding",
+                                                      P_("Bottom Padding"),
+                                                      P_("The padding to insert at the bottom of the dialog."),
+                                                      0,
+                                                      G_MAXUINT,
+                                                      8,
+                                                      GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_LEFT_PADDING,
+                                   g_param_spec_uint ("left-padding",
+                                                      P_("Left Padding"),
+                                                      P_("The padding to insert at the left of the dialog."),
+                                                      0,
+                                                      G_MAXUINT,
+                                                      16,
+                                                      GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_RIGHT_PADDING,
+                                   g_param_spec_uint ("right-padding",
+                                                      P_("Right Padding"),
+                                                      P_("The padding to insert at the right of the dialog."),
+                                                      0,
+                                                      G_MAXUINT,
+                                                      16,
+                                                      GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+  g_object_class_install_property (gobject_class,
+                                   PROP_INNER_SPACING,
+                                   g_param_spec_int ("inner-spacing",
+                                                      P_("Inner Spacing"),
+                                                      P_("The spacing between content area and action area."),
+                                                      0,
+                                                      G_MAXINT,
+                                                      16,
+                                                      GTK_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+#endif /* MAEMO_CHANGES */
+
   /**
    * GtkDialog::response:
    * @dialog: the object on which the signal is emitted
@@ -246,8 +316,19 @@
   gint button_spacing;
   gint action_area_border;
   gint content_area_spacing;
+#ifdef MAEMO_CHANGES
+  GtkDialogPrivate *priv;
+  guint top_padding;
+  guint bottom_padding;
+  guint left_padding;
+  guint right_padding;
+#endif /* MAEMO_CHANGES */
   
   widget = GTK_WIDGET (dialog);
+  
+#ifdef MAEMO_CHANGES
+  priv = GET_PRIVATE (dialog);
+#endif /* MAEMO_CHANGES */
 
   gtk_widget_style_get (widget,
                         "content-area-border", &content_area_border,
@@ -256,6 +337,17 @@
                         "action-area-border", &action_area_border,
                         NULL);
 
+#ifdef MAEMO_CHANGES
+  gtk_dialog_get_padding (dialog, &top_padding, &bottom_padding, &left_padding, &right_padding);
+
+  gtk_alignment_set_padding (GTK_ALIGNMENT (priv->alignment),
+                             top_padding,
+                             bottom_padding,
+                             left_padding,
+                             right_padding);
+
+  gtk_box_set_spacing (GTK_BOX (priv->hbox), gtk_dialog_get_inner_spacing (dialog));
+#endif /* MAEMO_CHANGES */
   gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox),
                                   content_area_border);
   gtk_box_set_spacing (GTK_BOX (dialog->vbox), content_area_spacing);
@@ -270,12 +362,14 @@
 {
   GtkDialogPrivate *priv;
 
-#ifdef MAEMO_CHANGES
-  GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
-#endif /* MAEMO_CHANGES */
   priv = GET_PRIVATE (dialog);
   priv->ignore_separator = FALSE;
 
+#ifdef MAEMO_CHANGES
+  priv->hbox = gtk_hbox_new (FALSE, 0);
+  priv->alignment = gtk_alignment_new (0.0, 0.0, 1.0, 1.0);
+#endif /* MAEMO_CHANGES */
+
   /* To avoid breaking old code that prevents destroy on delete event
    * by connecting a handler, we have to have the FIRST signal
    * connection on the dialog.
@@ -288,11 +382,14 @@
   dialog->vbox = gtk_vbox_new (FALSE, 0);
 
 #ifdef MAEMO_CHANGES
-  gtk_container_add (GTK_CONTAINER (dialog), hbox);
-  gtk_widget_show (hbox);
+  gtk_container_add (GTK_CONTAINER (priv->alignment), priv->hbox);
+  gtk_container_add (GTK_CONTAINER (dialog), priv->alignment);
+  gtk_widget_show (priv->hbox);
+  gtk_widget_show (priv->alignment);
   gtk_widget_show (dialog->vbox);
 
   dialog->action_area = gtk_vbutton_box_new ();
+  gtk_widget_set_name (dialog->action_area, "hildon-dialog-action-area");
 #else
   gtk_container_add (GTK_CONTAINER (dialog), dialog->vbox);
   gtk_widget_show (dialog->vbox);
@@ -304,13 +401,11 @@
                              GTK_BUTTONBOX_END);
 
 #ifdef MAEMO_CHANGES
-  gtk_box_pack_end (GTK_BOX (hbox), dialog->action_area,
+  gtk_box_pack_end (GTK_BOX (priv->hbox), dialog->action_area,
                     FALSE, TRUE, 0);
   gtk_widget_show (dialog->action_area);
 
-  dialog->separator = gtk_vseparator_new ();
-  gtk_box_pack_end (GTK_BOX (hbox), dialog->separator, FALSE, TRUE, 0);
-  gtk_box_pack_end (GTK_BOX (hbox), dialog->vbox, TRUE, TRUE, 0);
+  gtk_box_pack_end (GTK_BOX (priv->hbox), dialog->vbox, TRUE, TRUE, 0);
 #else
   gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->action_area,
                     FALSE, TRUE, 0);
@@ -318,8 +413,8 @@
 
   dialog->separator = gtk_hseparator_new ();
   gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->separator, FALSE, TRUE, 0);
+  gtk_widget_show (dialog->separator);
 #endif /* MAEMO_CHANGES */
-  gtk_widget_show (dialog->separator);
 
   gtk_window_set_type_hint (GTK_WINDOW (dialog),
 			    GDK_WINDOW_TYPE_HINT_DIALOG);
@@ -359,14 +454,56 @@
                          GParamSpec   *pspec)
 {
   GtkDialog *dialog;
+#ifdef MAEMO_CHANGES
+  guint padding_top;
+  guint padding_bottom;
+  guint padding_left;
+  guint padding_right;
+#endif
   
   dialog = GTK_DIALOG (object);
+
+#ifdef MAEMO_CHANGES
+  gtk_dialog_get_padding (dialog, &padding_top, &padding_bottom, &padding_left, &padding_right);
+#endif
   
   switch (prop_id)
     {
     case PROP_HAS_SEPARATOR:
       gtk_dialog_set_has_separator (dialog, g_value_get_boolean (value));
       break;
+#ifdef MAEMO_CHANGES
+    case PROP_TOP_PADDING:
+      gtk_dialog_set_padding (dialog,
+                              g_value_get_uint (value),
+                              padding_bottom,
+                              padding_left,
+                              padding_right);
+      break;
+    case PROP_BOTTOM_PADDING:
+      gtk_dialog_set_padding (dialog,
+                              padding_top,
+                              g_value_get_uint (value),
+                              padding_left,
+                              padding_right);
+      break;
+    case PROP_LEFT_PADDING:
+      gtk_dialog_set_padding (dialog,
+                              padding_top,
+                              padding_bottom,
+                              g_value_get_uint (value),
+                              padding_right);
+      break;
+    case PROP_RIGHT_PADDING:
+      gtk_dialog_set_padding (dialog,
+                              padding_top,
+                              padding_bottom,
+                              padding_left,
+                              g_value_get_uint (value));
+      break;
+    case PROP_INNER_SPACING:
+      gtk_dialog_set_inner_spacing (dialog, g_value_get_int (value));
+#endif /* MAEMO_CHANGES */
 
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -381,15 +518,43 @@
                          GParamSpec  *pspec)
 {
   GtkDialog *dialog;
+#ifdef MAEMO_CHANGES
+  guint padding_top;
+  guint padding_bottom;
+  guint padding_left;
+  guint padding_right;
+#endif
   
   dialog = GTK_DIALOG (object);
-  
+
+#ifdef MAEMO_CHANGES
+  gtk_dialog_get_padding (dialog, &padding_top, &padding_bottom, &padding_left, &padding_right);
+#endif
+
   switch (prop_id)
     {
     case PROP_HAS_SEPARATOR:
       g_value_set_boolean (value, dialog->separator != NULL);
       break;
 
+#ifdef MAEMO_CHANGES
+    case PROP_TOP_PADDING:
+      g_value_set_uint (value, padding_top);
+      break;
+    case PROP_BOTTOM_PADDING:
+      g_value_set_uint (value, padding_bottom);
+      break;
+    case PROP_LEFT_PADDING:
+      g_value_set_uint (value, padding_left);
+      break;
+    case PROP_RIGHT_PADDING:
+      g_value_set_uint (value, padding_right);
+      break;
+    case PROP_INNER_SPACING:
+      g_value_set_int (value, gtk_dialog_get_inner_spacing (dialog));
+      break;
+#endif /* MAEMO_CHANGES */
+
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
       break;
@@ -917,6 +1082,15 @@
   
   if (setting && dialog->separator == NULL)
     {
+#ifdef MAEMO_CHANGES
+      dialog->separator = gtk_vseparator_new ();
+      gtk_box_pack_end (GTK_BOX (priv->hbox), dialog->separator, FALSE, TRUE, 0);
+
+      /* The app programmer could screw this up, but, their own fault.
+       * Moves the separator just above the action area.
+       */
+      gtk_box_reorder_child (GTK_BOX (priv->hbox), dialog->separator, 1);
+#else
       dialog->separator = gtk_hseparator_new ();
       gtk_box_pack_end (GTK_BOX (dialog->vbox), dialog->separator, FALSE, TRUE, 0);
 
@@ -924,6 +1098,7 @@
        * Moves the separator just above the action area.
        */
       gtk_box_reorder_child (GTK_BOX (dialog->vbox), dialog->separator, 1);
+#endif /* MAEMO_CHANGES */
       gtk_widget_show (dialog->separator);
     }
   else if (!setting && dialog->separator != NULL)
@@ -951,7 +1126,96 @@
   return dialog->separator != NULL;
 }
 
+#ifdef MAEMO_CHANGES
 /**
+ * gtk_dialog_set_padding:
+ * @dialog: a #GtkDialog
+ * @top_padding: Padding to add at the top of the dialog.
+ * @bottom_padding: Padding to add at the bottom of the dialog.
+ * @left_padding: Padding to add at the left of the dialog.
+ * @right_padding: Padding to add at the right of the dialog.
+ *
+ * Sets additional padding around the dialog.
+ **/
+void
+gtk_dialog_set_padding (GtkDialog *dialog,
+                        guint      top_padding,
+                        guint      bottom_padding,
+                        guint      left_padding,
+                        guint      right_padding)
+{
+  GtkDialogPrivate *priv;
+
+  g_return_if_fail (GTK_IS_DIALOG (dialog));
+  
+  priv = GET_PRIVATE (dialog);
+  
+  gtk_alignment_set_padding (GTK_ALIGNMENT (priv->alignment), top_padding, bottom_padding, left_padding, right_padding);
+}
+
+/**
+ * gtk_dialog_get_padding:
+ * @dialog: a #GtkDialog
+ * @padding_top: location to store the padding for the top of the dialog, or %NULL
+ * @padding_bottom: location to store the padding for the bottom of the dialog, or %NULL
+ * @padding_left: location to store the padding for the left of the dialog, or %NULL
+ * @padding_right: location to store the padding for the right of the dialog, or %NULL
+ *
+ * Gets the padding on the different sides of the dialog.
+ **/
+void
+gtk_dialog_get_padding (GtkDialog *dialog,
+                        guint     *top_padding,
+                        guint     *bottom_padding,
+                        guint     *left_padding,
+                        guint     *right_padding)
+{
+  GtkDialogPrivate *priv;
+
+  g_return_if_fail (GTK_IS_DIALOG (dialog));
+
+  priv = GET_PRIVATE (dialog);
+
+  guint t, b, l, r;
+
+  gtk_alignment_get_padding (GTK_ALIGNMENT (priv->alignment), &t, &b, &l, &r);
+
+  if (top_padding)
+    *top_padding = t;
+  if (bottom_padding)
+    *bottom_padding = b;
+  if (left_padding)
+    *left_padding = l;
+  if (right_padding)
+    *right_padding = r;
+}
+
+void
+gtk_dialog_set_inner_spacing (GtkDialog *dialog,
+                              guint      inner_spacing)
+{
+  GtkDialogPrivate *priv;
+  g_return_if_fail (GTK_IS_DIALOG (dialog));
+
+  priv = GET_PRIVATE (dialog);
+
+  gtk_box_set_spacing (GTK_BOX (priv->hbox), inner_spacing);
+}
+
+guint
+gtk_dialog_get_inner_spacing (GtkDialog *dialog)
+{
+  GtkDialogPrivate *priv;
+  g_return_val_if_fail (GTK_IS_DIALOG (dialog), 0);
+
+  priv = GET_PRIVATE (dialog);
+
+  return gtk_box_get_spacing (GTK_BOX (priv->hbox));
+}
+
+#endif /* MAEMO_CHANGES */
+
+/**
  * gtk_dialog_response:
  * @dialog: a #GtkDialog
  * @response_id: response ID 

Modified: projects/haf/trunk/gtk+/gtk/gtkdialog.h
===================================================================
--- projects/haf/trunk/gtk+/gtk/gtkdialog.h	2009-06-12 15:35:28 UTC (rev 18718)
+++ projects/haf/trunk/gtk+/gtk/gtkdialog.h	2009-06-12 16:50:31 UTC (rev 18719)
@@ -156,6 +156,23 @@
                                        gboolean   setting);
 gboolean gtk_dialog_get_has_separator (GtkDialog *dialog);
 
+#ifdef MAEMO_CHANGES
+void     gtk_dialog_set_padding (GtkDialog *dialog,
+                                  guint      padding_top,
+                                  guint      padding_bottom,
+                                  guint      padding_left,
+                                  guint padding_right);
+void     gtk_dialog_get_padding (GtkDialog *dialog,
+                                  guint     *padding_top,
+                                  guint     *padding_bottom,
+                                  guint     *padding_left,
+                                  guint     *padding_right);
+
+void     gtk_dialog_set_inner_spacing (GtkDialog *dialog,
+                                        guint inner_spacing);
+guint    gtk_dialog_get_inner_spacing (GtkDialog *dialog);
+#endif /* MAEMO_CHANGES */
+
 gboolean gtk_alternative_dialog_button_order (GdkScreen *screen);
 void     gtk_dialog_set_alternative_button_order (GtkDialog *dialog,
 						  gint       first_response_id,

More information about the maemo-commits mailing list