summaryrefslogtreecommitdiff
path: root/embed/ephy-embed.c
diff options
context:
space:
mode:
authorClaudio Saavedra <csaavedra@igalia.com>2011-12-05 19:05:25 +0100
committerClaudio Saavedra <csaavedra@igalia.com>2011-12-05 21:21:00 +0100
commitbf80fa05a8620375dc1c7e0be1616719fed78b3e (patch)
tree7ecf073043a816044a89494b74797dabeb591197 /embed/ephy-embed.c
parent7f83baef9da80a4a4fd630418618d5619d0cadeb (diff)
downloadepiphany-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.c30
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));