- gtk_widget_style_get (GTK_WIDGET (statusbar), "shadow_type", &shadow_type, NULL);
-
- statusbar->frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (statusbar->frame), shadow_type);
- gtk_box_pack_start (box, statusbar->frame, TRUE, TRUE, 0);
- gtk_widget_show (statusbar->frame);
-
- 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_widget_show (statusbar->label);
-
- statusbar->seq_context_id = 1;
- statusbar->seq_message_id = 1;
- statusbar->messages = NULL;
- statusbar->keys = NULL;
+ gtk_box_set_spacing (box, 2);
+ gtk_box_set_homogeneous (box, FALSE);
+
+ gtk_widget_style_get (GTK_WIDGET (statusbar), "shadow-type", &shadow_type, NULL);
+
+ priv->frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (priv->frame), shadow_type);
+ gtk_box_pack_start (box, priv->frame, TRUE, TRUE, 0);
+ gtk_widget_show (priv->frame);
+
+ message_area = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4);
+ gtk_container_add (GTK_CONTAINER (priv->frame), message_area);
+ gtk_widget_show (message_area);
+
+ priv->label = gtk_label_new ("");
+ gtk_label_set_single_line_mode (GTK_LABEL (priv->label), TRUE);
+ gtk_widget_set_halign (priv->label, GTK_ALIGN_START);
+ gtk_widget_set_valign (priv->label, GTK_ALIGN_CENTER);
+ gtk_label_set_ellipsize (GTK_LABEL (priv->label), PANGO_ELLIPSIZE_END);
+ gtk_container_add (GTK_CONTAINER (message_area), priv->label);
+ gtk_widget_show (priv->label);
+
+ priv->seq_context_id = 1;
+ priv->seq_message_id = 1;
+ priv->messages = NULL;
+ priv->keys = NULL;
+}
+
+static GtkBuildableIface *parent_buildable_iface;
+
+static void
+gtk_statusbar_buildable_interface_init (GtkBuildableIface *iface)
+{
+ parent_buildable_iface = g_type_interface_peek_parent (iface);
+ iface->get_internal_child = gtk_statusbar_buildable_get_internal_child;
+}
+
+static GObject *
+gtk_statusbar_buildable_get_internal_child (GtkBuildable *buildable,
+ GtkBuilder *builder,
+ const gchar *childname)
+{
+ GtkStatusbar *statusbar = GTK_STATUSBAR (buildable);
+ GtkStatusbarPrivate *priv = statusbar->priv;
+
+ if (strcmp (childname, "message_area") == 0)
+ return G_OBJECT (gtk_bin_get_child (GTK_BIN (priv->frame)));
+
+ return parent_buildable_iface->get_internal_child (buildable,
+ builder,
+ childname);