diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols
index 841780b..0dbdda8 100644
--- a/gtk/gtk.symbols
+++ b/gtk/gtk.symbols
@@ -3805,6 +3805,7 @@ gtk_spin_button_update
 #if IN_FILE(__GTK_STATUSBAR_C__)
 gtk_statusbar_get_context_id
 gtk_statusbar_get_has_resize_grip
+gtk_statusbar_get_message_area
 gtk_statusbar_get_type G_GNUC_CONST
 gtk_statusbar_new
 gtk_statusbar_pop
diff --git a/gtk/gtkstatusbar.c b/gtk/gtkstatusbar.c
index 0a494c9..d9736e7 100644
--- a/gtk/gtkstatusbar.c
+++ b/gtk/gtkstatusbar.c
@@ -193,7 +193,7 @@ gtk_statusbar_class_init (GtkStatusbarClass *class)
 static void
 gtk_statusbar_init (GtkStatusbar *statusbar)
 {
-  GtkBox *box;
+  GtkBox *box, *message_area;
   GtkShadowType shadow_type;
   
   box = GTK_BOX (statusbar);
@@ -212,13 +212,17 @@ gtk_statusbar_init (GtkStatusbar *statusbar)
   gtk_box_pack_start (box, statusbar->frame, TRUE, TRUE, 0);
   gtk_widget_show (statusbar->frame);
 
+  message_area = gtk_hbox_new (FALSE, 4);
+  gtk_container_add (GTK_CONTAINER (statusbar->frame), message_area);
+  gtk_widget_show (message_area);
+
   statusbar->label = gtk_label_new ("");
   gtk_label_set_single_line_mode (GTK_LABEL (statusbar->label), TRUE);
   gtk_misc_set_alignment (GTK_MISC (statusbar->label), 0.0, 0.5);
   g_signal_connect (statusbar->label, "notify::selectable",
 		    G_CALLBACK (label_selectable_changed), statusbar);
   gtk_label_set_ellipsize (GTK_LABEL (statusbar->label), PANGO_ELLIPSIZE_END);
-  gtk_container_add (GTK_CONTAINER (statusbar->frame), statusbar->label);
+  gtk_container_add (GTK_CONTAINER (message_area), statusbar->label);
   gtk_widget_show (statusbar->label);
 
   statusbar->seq_context_id = 1;
@@ -482,6 +486,24 @@ gtk_statusbar_get_has_resize_grip (GtkStatusbar *statusbar)
   return statusbar->has_resize_grip;
 }
 
+/**
+ * gtk_statusbar_get_message_area:
+ * @statusbar: a #GtkStatusBar
+ *
+ * Retrieves the box containing the label widget.
+ *
+ * Returns: a #GtkBox
+ *
+ * Since: 2.18
+ */
+GtkWidget*
+gtk_statusbar_get_message_area (GtkStatusbar *statusbar)
+{
+  g_return_val_if_fail (GTK_IS_STATUSBAR (statusbar), NULL);
+
+  return gtk_bin_get_child (GTK_BIN (statusbar->frame));
+}
+
 static void
 gtk_statusbar_destroy (GtkObject *object)
 {
diff --git a/gtk/gtkstatusbar.h b/gtk/gtkstatusbar.h
index 3ca102b..ffc9781 100644
--- a/gtk/gtkstatusbar.h
+++ b/gtk/gtkstatusbar.h
@@ -107,6 +107,9 @@ void     gtk_statusbar_set_has_resize_grip (GtkStatusbar *statusbar,
 					    gboolean      setting);
 gboolean gtk_statusbar_get_has_resize_grip (GtkStatusbar *statusbar);
 
+GtkWidget*
+         gtk_statusbar_get_message_area    (GtkStatusbar *statusbar);
+
 G_END_DECLS
 
 #endif /* __GTK_STATUSBAR_H__ */
