Index: gtk/gtkdialog.c
===================================================================
--- gtk/gtkdialog.c	(Revision 20318)
+++ gtk/gtkdialog.c	(Arbeitskopie)
@@ -193,6 +193,21 @@ gtk_dialog_class_init (GtkDialogClass *c
                                                              G_MAXINT,
                                                              2,
                                                              GTK_PARAM_READABLE));
+  /**
+   * GtkDialog:content-area-spacing:
+   *
+   * Spacing between elements of the main dialog area.
+   *
+   * Since: 2.14
+   */
+  gtk_widget_class_install_style_property (widget_class,
+                                           g_param_spec_int ("content-area-spacing",
+                                                             P_("Content area spacing"),
+                                                             P_("Spacing between elements of the main dialog area"),
+                                                             0,
+                                                             G_MAXINT,
+                                                             0,
+                                                             GTK_PARAM_READABLE));
   gtk_widget_class_install_style_property (widget_class,
                                            g_param_spec_int ("button-spacing",
                                                              P_("Button spacing"),
@@ -219,21 +234,27 @@ gtk_dialog_class_init (GtkDialogClass *c
 static void
 update_spacings (GtkDialog *dialog)
 {
-  GtkWidget *widget;
+  gboolean spacing_set;
   gint content_area_border;
   gint button_spacing;
   gint action_area_border;
-  
-  widget = GTK_WIDGET (dialog);
+  gint content_area_spacing;
+
+  g_object_get (G_OBJECT (dialog),
+                "spacing-set", &spacing_set,
+                NULL);
 
-  gtk_widget_style_get (widget,
+  gtk_widget_style_get (GTK_WIDGET (dialog),
                         "content-area-border", &content_area_border,
+                        "content-area-spacing", &content_area_spacing,
                         "button-spacing", &button_spacing,
                         "action-area-border", &action_area_border,
                         NULL);
 
   gtk_container_set_border_width (GTK_CONTAINER (dialog->vbox),
                                   content_area_border);
+  if (!spacing_set)
+    gtk_box_set_spacing (GTK_BOX (dialog->vbox), content_area_spacing);
   gtk_box_set_spacing (GTK_BOX (dialog->action_area),
                        button_spacing);
   gtk_container_set_border_width (GTK_CONTAINER (dialog->action_area),
Index: gtk/gtkbox.c
===================================================================
--- gtk/gtkbox.c	(Revision 20318)
+++ gtk/gtkbox.c	(Arbeitskopie)
@@ -33,6 +33,7 @@
 enum {
   PROP_0,
   PROP_SPACING,
+  PROP_SPACING_SET,
   PROP_HOMOGENEOUS
 };
 
@@ -101,7 +102,22 @@ gtk_box_class_init (GtkBoxClass *class)
                                                      G_MAXINT,
                                                      0,
                                                      GTK_PARAM_READWRITE));
-  
+
+  /**
+   * GtkBox:spacing-set:
+   *
+   * Whether the spacing property was set.
+   *
+   * Since: 2.14
+   */
+  g_object_class_install_property (gobject_class,
+                                   PROP_SPACING_SET,
+                                   g_param_spec_boolean ("spacing-set",
+                                                         P_("Spacing Set"),
+                                                         P_("Whether the spacing property was set"),
+                                                         FALSE,
+                                                         GTK_PARAM_READWRITE));
+
   g_object_class_install_property (gobject_class,
                                    PROP_HOMOGENEOUS,
                                    g_param_spec_boolean ("homogeneous",
@@ -155,6 +171,7 @@ gtk_box_init (GtkBox *box)
   
   box->children = NULL;
   box->spacing = 0;
+  box->spacing_set = FALSE;
   box->homogeneous = FALSE;
 }
 
@@ -173,6 +190,14 @@ gtk_box_set_property (GObject         *o
     case PROP_SPACING:
       gtk_box_set_spacing (box, g_value_get_int (value));
       break;
+    case PROP_SPACING_SET:
+      box->spacing_set = g_value_get_boolean (value);
+      if (!box->spacing_set)
+        {
+          box->spacing = 0;
+          g_object_notify ((object), "spacing");
+        }
+      break;
     case PROP_HOMOGENEOUS:
       gtk_box_set_homogeneous (box, g_value_get_boolean (value));
       break;
@@ -196,6 +221,9 @@ static void gtk_box_get_property (GObjec
     case PROP_SPACING:
       g_value_set_int (value, box->spacing);
       break;
+    case PROP_SPACING_SET:
+      g_value_set_boolean (value, box->spacing_set);
+      break;
     case PROP_HOMOGENEOUS:
       g_value_set_boolean (value, box->homogeneous);
       break;
@@ -541,7 +569,13 @@ gtk_box_set_spacing (GtkBox *box,
   if (spacing != box->spacing)
     {
       box->spacing = spacing;
+      box->spacing_set = TRUE;
+
+      g_object_freeze_notify (G_OBJECT (box));
       g_object_notify (G_OBJECT (box), "spacing");
+      g_object_notify (G_OBJECT (box), "spacing-set");
+      g_object_thaw_notify (G_OBJECT (box));
+
       gtk_widget_queue_resize (GTK_WIDGET (box));
     }
 }
Index: gtk/gtkbox.h
===================================================================
--- gtk/gtkbox.h	(Revision 20318)
+++ gtk/gtkbox.h	(Arbeitskopie)
@@ -58,6 +58,7 @@ struct _GtkBox
   /*< public >*/
   GList *children;
   gint16 spacing;
+  guint spacing_set : 1;
   guint homogeneous : 1;
 };
 
