X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=hildon%2Fhildon-banner.c;fp=hildon%2Fhildon-banner.c;h=0b57497ea152872e826c72b447401213b04cb367;hb=293c5746d90f0f9e5282dce4f99e85cb91777178;hp=25151a4950b439c7bd922dc43d8efa5605ff886a;hpb=350cb564fb2f605ea82affa041d3beb56bbda367;p=hildon diff --git a/hildon/hildon-banner.c b/hildon/hildon-banner.c index 25151a4..0b57497 100644 --- a/hildon/hildon-banner.c +++ b/hildon/hildon-banner.c @@ -1172,6 +1172,59 @@ hildon_banner_show_progress (GtkWidget *widget, return GTK_WIDGET (banner); } + +/** + * hildon_banner_show_custom_widget: + * @widget: the #GtkWidget that wants to display a banner + * @custom_widget: a #GtkWidget to be placed inside the banner. + * + * Shows a banner displaying a user-defined widget. + * + * Returns: a new #HildonBanner + * + * Since: 2.2 + **/ +GtkWidget * +hildon_banner_show_custom_widget (GtkWidget *widget, + GtkWidget *custom_widget) +{ + HildonBanner *banner; + HildonBannerPrivate *priv; + + g_return_val_if_fail (GTK_IS_WIDGET (custom_widget), NULL); + + banner = hildon_banner_get_instance_for_widget (widget, TRUE); + priv = HILDON_BANNER_GET_PRIVATE (banner); + g_assert (priv); + + g_return_val_if_fail (gtk_widget_get_parent (custom_widget) == NULL || + priv->main_item == custom_widget, NULL); + + if (priv->main_item != custom_widget) { + GtkWidget *old_item = priv->main_item; + + /* Remove old item */ + if (old_item) { + g_object_ref (old_item); + gtk_container_remove (GTK_CONTAINER (priv->layout), old_item); + } + + /* Add new item */ + gtk_box_pack_start (GTK_BOX (priv->layout), custom_widget, FALSE, FALSE, 0); + priv->main_item = custom_widget; + + if (old_item) + g_object_unref (old_item); + } + + priv->name_suffix = "information"; + hildon_banner_bind_style (banner); + + reshow_banner (banner); + + return GTK_WIDGET (banner); +} + /** * hildon_banner_set_text: * @self: a #HildonBanner widget