[epiphany] Revert "embed: Remove the progress bar"
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [epiphany] Revert "embed: Remove the progress bar"
- Date: Sat, 14 Jan 2017 03:19:40 +0000 (UTC)
commit 699525a1382f844a21efe5b31dc8403ebb8f7a6b
Author: Michael Catanzaro <mcatanzaro gnome org>
Date: Fri Jan 13 21:19:15 2017 -0600
Revert "embed: Remove the progress bar"
This reverts commit 14249f5b45438c4e3bc75fb6172b2eb12d4472a4.
We'll need to find a way to show a spinner somewhere to do this.
embed/ephy-embed.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 66 insertions(+), 0 deletions(-)
---
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index bcfe145..679cd91 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -64,6 +64,7 @@ struct _EphyEmbed {
GSList *destroy_on_transition_list;
GtkWidget *overlay;
GtkWidget *floating_bar;
+ GtkWidget *progress;
GtkWidget *fullscreen_message_label;
char *title;
@@ -82,7 +83,10 @@ struct _EphyEmbed {
guint fullscreen_message_id;
+ guint clear_progress_source_id;
+
gulong status_handler_id;
+ gulong progress_update_handler_id;
gboolean inspector_loaded;
};
@@ -351,6 +355,11 @@ ephy_embed_dispose (GObject *object)
embed->pop_statusbar_later_source_id = 0;
}
+ if (embed->clear_progress_source_id) {
+ g_source_remove (embed->clear_progress_source_id);
+ embed->clear_progress_source_id = 0;
+ }
+
if (embed->delayed_request_source_id) {
g_source_remove (embed->delayed_request_source_id);
embed->delayed_request_source_id = 0;
@@ -363,6 +372,11 @@ ephy_embed_dispose (GObject *object)
embed->status_handler_id = 0;
}
+ if (embed->progress_update_handler_id) {
+ g_signal_handler_disconnect (embed->web_view, embed->progress_update_handler_id);
+ embed->progress_update_handler_id = 0;
+ }
+
if (embed->fullscreen_message_id) {
g_source_remove (embed->fullscreen_message_id);
embed->fullscreen_message_id = 0;
@@ -576,6 +590,49 @@ status_message_notify_cb (EphyWebView *view, GParamSpec *pspec, EphyEmbed *embed
}
static gboolean
+clear_progress_cb (EphyEmbed *embed)
+{
+ gtk_widget_hide (embed->progress);
+ embed->clear_progress_source_id = 0;
+
+ return FALSE;
+}
+
+static void
+progress_update (EphyWebView *view, GParamSpec *pspec, EphyEmbed *embed)
+{
+ gdouble progress;
+ gboolean loading;
+ const char *uri;
+
+ if (embed->clear_progress_source_id) {
+ g_source_remove (embed->clear_progress_source_id);
+ embed->clear_progress_source_id = 0;
+ }
+
+ uri = webkit_web_view_get_uri (embed->web_view);
+ if (!uri || g_str_has_prefix (uri, "ephy-about:") ||
+ g_str_has_prefix (uri, "about:")) {
+ gtk_widget_hide (embed->progress);
+ return;
+ }
+
+ progress = webkit_web_view_get_estimated_load_progress (embed->web_view);
+ loading = ephy_web_view_is_loading (EPHY_WEB_VIEW (embed->web_view));
+
+ if (progress == 1.0 || !loading) {
+ embed->clear_progress_source_id = g_timeout_add (500,
+ (GSourceFunc)clear_progress_cb,
+ embed);
+ g_source_set_name_by_id (embed->clear_progress_source_id, "[epiphany] clear_progress_cb");
+ } else
+ gtk_widget_show (embed->progress);
+
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (embed->progress),
+ (loading || progress == 1.0) ? progress : 0.0);
+}
+
+static gboolean
load_delayed_request_if_mapped (gpointer user_data)
{
EphyEmbed *embed = EPHY_EMBED (user_data);
@@ -676,6 +733,13 @@ ephy_embed_constructed (GObject *object)
gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->floating_bar);
+ embed->progress = gtk_progress_bar_new ();
+ gtk_style_context_add_class (gtk_widget_get_style_context (embed->progress),
+ GTK_STYLE_CLASS_OSD);
+ gtk_widget_set_halign (embed->progress, GTK_ALIGN_FILL);
+ gtk_widget_set_valign (embed->progress, GTK_ALIGN_START);
+ gtk_overlay_add_overlay (GTK_OVERLAY (embed->overlay), embed->progress);
+
embed->find_toolbar = ephy_find_toolbar_new (embed->web_view);
g_signal_connect (embed->find_toolbar, "close",
G_CALLBACK (ephy_embed_find_toolbar_close_cb),
@@ -687,6 +751,8 @@ ephy_embed_constructed (GObject *object)
paned = GTK_WIDGET (embed->paned);
+ embed->progress_update_handler_id = g_signal_connect (embed->web_view, "notify::estimated-load-progress",
+ G_CALLBACK (progress_update), object);
gtk_paned_pack1 (GTK_PANED (paned), GTK_WIDGET (embed->overlay),
TRUE, FALSE);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]