diff options
author | Claudio Saavedra <csaavedra@igalia.com> | 2011-12-05 19:05:25 +0100 |
---|---|---|
committer | Claudio Saavedra <csaavedra@igalia.com> | 2011-12-05 21:21:00 +0100 |
commit | bf80fa05a8620375dc1c7e0be1616719fed78b3e (patch) | |
tree | 7ecf073043a816044a89494b74797dabeb591197 /embed/ephy-embed.c | |
parent | 7f83baef9da80a4a4fd630418618d5619d0cadeb (diff) | |
download | epiphany-bf80fa05a8620375dc1c7e0be1616719fed78b3e.tar.gz |
Use an overlay progress bar for the loading progress.overlay-progressbar
The theming was done by Lapo Calamandrei.
https://bugzilla.gnome.org/show_bug.cgi?id=665470
Diffstat (limited to 'embed/ephy-embed.c')
-rw-r--r-- | embed/ephy-embed.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 1a801fba0..7a869b0ed 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -77,6 +77,7 @@ struct _EphyEmbedPrivate guint is_setting_zoom : 1; GSList *destroy_on_transition_list; GtkWidget *statusbar_label; + GtkWidget *progress; GSList *messages; GSList *keys; @@ -525,6 +526,27 @@ frame_enter_notify_cb (GtkWidget *widget, } static void +progress_update (EphyWebView *view, GParamSpec *pspec, EphyEmbed *embed) +{ + gdouble progress; + gboolean loading; + + EphyEmbedPrivate *priv = embed->priv; + + progress = webkit_web_view_get_progress (priv->web_view); + loading = ephy_web_view_is_loading (EPHY_WEB_VIEW (priv->web_view)); + + if (progress == 1.0 || !loading) + { + gtk_widget_hide (priv->progress); + } else { + gtk_widget_show (priv->progress); + } + gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (priv->progress), + (loading || progress == 1.0) ? progress : 0.0); +} + +static void ephy_embed_constructed (GObject *object) { EphyEmbed *embed = (EphyEmbed*)object; @@ -560,9 +582,17 @@ ephy_embed_constructed (GObject *object) g_signal_connect (eventbox, "enter-notify-event", G_CALLBACK (frame_enter_notify_cb), object); + embed->priv->progress = gtk_progress_bar_new (); + gtk_widget_set_name (embed->priv->progress, "ephy-progress-bar"); + gtk_widget_set_halign (embed->priv->progress, GTK_ALIGN_FILL); + gtk_widget_set_valign (embed->priv->progress, GTK_ALIGN_START); + gtk_overlay_add_overlay (GTK_OVERLAY (overlay), embed->priv->progress); + paned = GTK_WIDGET (embed->priv->paned); embed->priv->web_view = web_view; + g_signal_connect (web_view, "notify::progress", + G_CALLBACK (progress_update), object); gtk_container_add (GTK_CONTAINER (scrolled_window), GTK_WIDGET (web_view)); |