diff options
Diffstat (limited to 'src/ephy-tab.c')
-rw-r--r-- | src/ephy-tab.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/ephy-tab.c b/src/ephy-tab.c index 170ae3846..6430f025a 100644 --- a/src/ephy-tab.c +++ b/src/ephy-tab.c @@ -53,6 +53,7 @@ struct EphyTabPrivate TabLoadStatus load_status; char status_message[255]; char link_message[255]; + char favicon_url[255]; char *title; char *location; int load_percent; @@ -77,6 +78,10 @@ enum }; static void +ephy_tab_favicon_cb (EphyEmbed *embed, + const char *url, + EphyTab *tab); +static void ephy_tab_link_message_cb (EphyEmbed *embed, const char *message, EphyTab *tab); @@ -199,6 +204,7 @@ ephy_tab_init (EphyTab *tab) tab->priv->is_active = FALSE; *tab->priv->status_message = '\0'; *tab->priv->link_message = '\0'; + *tab->priv->favicon_url = '\0'; tab->priv->load_status = TAB_LOAD_NONE; tab->priv->load_percent = 0; tab->priv->title = NULL; @@ -260,6 +266,9 @@ ephy_tab_init (EphyTab *tab) g_signal_connect (embed, "ge_security_change", GTK_SIGNAL_FUNC (ephy_tab_security_change_cb), tab); + g_signal_connect (embed, "ge_favicon", + GTK_SIGNAL_FUNC (ephy_tab_favicon_cb), + tab); } /* Destructor */ @@ -424,6 +433,20 @@ ephy_tab_set_visibility (EphyTab *tab, /* Private callbacks for embed signals */ static void +ephy_tab_favicon_cb (EphyEmbed *embed, + const char *url, + EphyTab *tab) +{ + g_strlcpy (tab->priv->favicon_url, + url, 255); + + if (!tab->priv->is_active) return; + + ephy_window_update_control (tab->priv->window, + FaviconControl); +} + +static void ephy_tab_link_message_cb (EphyEmbed *embed, const char *message, EphyTab *tab) @@ -444,6 +467,7 @@ ephy_tab_location_cb (EphyEmbed *embed, EphyTab *tab) ephy_embed_get_location (embed, TRUE, &tab->priv->location); tab->priv->link_message[0] = '\0'; + tab->priv->favicon_url[0] = '\0'; if (tab->priv->is_active) { @@ -906,6 +930,19 @@ ephy_tab_get_location (EphyTab *tab) return tab->priv->location; } +const char * +ephy_tab_get_favicon_url (EphyTab *tab) +{ + if (tab->priv->favicon_url[0] == '\0') + { + return NULL; + } + else + { + return tab->priv->favicon_url; + } +} + void ephy_tab_set_location (EphyTab *tab, char *location) |