diff options
author | Xan Lopez <xan@gnome.org> | 2009-08-10 13:28:40 +0800 |
---|---|---|
committer | Xan Lopez <xan@gnome.org> | 2009-08-10 13:43:16 +0800 |
commit | 893114a0a7b0c8b774b927dbc7de1844fb670ac3 (patch) | |
tree | bd3ed4bb83b0fcda8ea2f73a09a61771918f511f /src | |
parent | 3083f20877cb7892a498cdccdfdedc8ee31cf10e (diff) | |
download | gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar.gz gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar.bz2 gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar.lz gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar.xz gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.tar.zst gsoc2013-epiphany-893114a0a7b0c8b774b927dbc7de1844fb670ac3.zip |
Add again the spinner.
We need some indication in the UI of network activity when there are
no tabs opened and the progress bar hasn't appeared yet in the URL
entry. Re-add the spinner for now, we'll think of a better solution
later.
Bug #585035
Diffstat (limited to 'src')
-rw-r--r-- | src/ephy-toolbar.c | 59 | ||||
-rw-r--r-- | src/ephy-toolbar.h | 3 | ||||
-rw-r--r-- | src/ephy-window.c | 2 |
3 files changed, 60 insertions, 4 deletions
diff --git a/src/ephy-toolbar.c b/src/ephy-toolbar.c index 464272f4d..e91b8ed62 100644 --- a/src/ephy-toolbar.c +++ b/src/ephy-toolbar.c @@ -32,6 +32,7 @@ #include "ephy-navigation-action.h" #include "ephy-topic-action.h" #include "ephy-zoom-action.h" +#include "ephy-spinner-tool-item.h" #include "ephy-dnd.h" #include "ephy-shell.h" #include "ephy-stock-icons.h" @@ -66,6 +67,8 @@ struct _EphyToolbarPrivate GtkActionGroup *action_group; GtkAction *actions[LAST_ACTION]; GtkWidget *fixed_toolbar; + EphySpinnerToolItem *spinner; + GtkToolItem *sep_item; GtkToolItem *exit_button; gulong set_focus_handler; @@ -73,6 +76,7 @@ struct _EphyToolbarPrivate guint show_lock : 1; guint is_secure : 1; guint leave_fullscreen_visible : 1; + guint spinning : 1; }; static const GtkTargetEntry drag_targets [] = @@ -123,13 +127,18 @@ ephy_toolbar_update_fixed_visibility (EphyToolbar *toolbar) gboolean show; show = priv->leave_fullscreen_visible; -#if 0 - g_object_set (priv->exit_button, "visible", show, - "sensitive", show, NULL); -#endif + g_object_set (priv->sep_item, "visible", show, NULL); g_object_set (priv->fixed_toolbar, "visible", show, NULL); } +static void +ephy_toolbar_update_spinner (EphyToolbar *toolbar) +{ + EphyToolbarPrivate *priv = toolbar->priv; + + ephy_spinner_tool_item_set_spinning (priv->spinner, priv->spinning); +} + static void maybe_finish_activation_cb (EphyWindow *window, GtkWidget *widget, @@ -490,6 +499,17 @@ ephy_toolbar_set_security_state (EphyToolbar *toolbar, } void +ephy_toolbar_set_spinning (EphyToolbar *toolbar, + gboolean spinning) +{ + EphyToolbarPrivate *priv = toolbar->priv; + + priv->spinning = spinning != FALSE; + + ephy_toolbar_update_spinner (toolbar); +} + +void ephy_toolbar_set_zoom (EphyToolbar *toolbar, gboolean can_zoom, float zoom) @@ -503,6 +523,26 @@ ephy_toolbar_set_zoom (EphyToolbar *toolbar, /* Class implementation */ static void +ephy_toolbar_show (GtkWidget *widget) +{ + EphyToolbar *toolbar = EPHY_TOOLBAR (widget); + + GTK_WIDGET_CLASS (ephy_toolbar_parent_class)->show (widget); + + ephy_toolbar_update_spinner (toolbar); +} + +static void +ephy_toolbar_hide (GtkWidget *widget) +{ + EphyToolbar *toolbar = EPHY_TOOLBAR (widget); + + GTK_WIDGET_CLASS (ephy_toolbar_parent_class)->hide (widget); + + ephy_toolbar_update_spinner (toolbar); +} + +static void ephy_toolbar_init (EphyToolbar *toolbar) { EphyToolbarPrivate *priv; @@ -531,6 +571,13 @@ ephy_toolbar_constructor (GType type, gtoolbar = GTK_TOOLBAR (priv->fixed_toolbar); gtk_toolbar_set_show_arrow (gtoolbar, FALSE); + priv->spinner = EPHY_SPINNER_TOOL_ITEM (ephy_spinner_tool_item_new ()); + gtk_toolbar_insert (gtoolbar, GTK_TOOL_ITEM (priv->spinner), -1); + gtk_widget_show (GTK_WIDGET (priv->spinner)); + + priv->sep_item = gtk_separator_tool_item_new (); + gtk_toolbar_insert (gtoolbar, priv->sep_item, -1); + priv->exit_button = gtk_tool_button_new_from_stock (GTK_STOCK_LEAVE_FULLSCREEN); gtk_tool_button_set_label (GTK_TOOL_BUTTON (priv->exit_button), _("Leave Fullscreen")); gtk_tool_item_set_is_important (priv->exit_button, TRUE); @@ -590,12 +637,16 @@ static void ephy_toolbar_class_init (EphyToolbarClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); object_class->constructor = ephy_toolbar_constructor; object_class->finalize = ephy_toolbar_finalize; object_class->set_property = ephy_toolbar_set_property; object_class->get_property = ephy_toolbar_get_property; + widget_class->show = ephy_toolbar_show; + widget_class->hide = ephy_toolbar_hide; + signals[ACTIVATION_FINISHED] = g_signal_new ("activation-finished", G_OBJECT_CLASS_TYPE (object_class), diff --git a/src/ephy-toolbar.h b/src/ephy-toolbar.h index a2f6a11cd..370b1e161 100644 --- a/src/ephy-toolbar.h +++ b/src/ephy-toolbar.h @@ -99,6 +99,9 @@ void ephy_toolbar_set_security_state (EphyToolbar *toolbar, const char *stock_id, const char *tooltip); +void ephy_toolbar_set_spinning (EphyToolbar *toolbar, + gboolean spinning); + void ephy_toolbar_set_zoom (EphyToolbar *toolbar, gboolean can_zoom, float zoom); diff --git a/src/ephy-window.c b/src/ephy-window.c index c38436961..51de4b4f5 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -1880,6 +1880,8 @@ sync_tab_load_status (EphyWebView *view, action = gtk_action_group_get_action (action_group, "FilePrint"); ephy_action_change_sensitivity_flags (action, SENS_FLAG_LOADING, loading); + ephy_toolbar_set_spinning (priv->toolbar, loading); + if (priv->fullscreen_popup) { ephy_fullscreen_popup_set_spinning |