aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--embed/ephy-history.c29
-rw-r--r--embed/ephy-history.h7
-rw-r--r--src/ephy-history-window.c24
-rw-r--r--src/ephy-tab.c5
5 files changed, 71 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index f46b3b77e..174f25149 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
2003-04-18 Marco Pesenti Gritti <marco@it.gnome.org>
+ * embed/ephy-history.c: (ephy_history_set_page_title),
+ (ephy_history_set_icon), (ephy_history_clear):
+ * embed/ephy-history.h:
+ * src/ephy-history-window.c: (cmd_clear), (provide_favicon),
+ (ephy_history_window_construct):
+ * src/ephy-tab.c: (ephy_tab_set_favicon):
+
+ Implement clear history. Put favicons near sites names.
+
+2003-04-18 Marco Pesenti Gritti <marco@it.gnome.org>
+
* data/art/Makefile.am:
Do not install two copies of epiphany.png
diff --git a/embed/ephy-history.c b/embed/ephy-history.c
index 3bb69db7f..51dd68936 100644
--- a/embed/ephy-history.c
+++ b/embed/ephy-history.c
@@ -758,11 +758,12 @@ ephy_history_set_page_title (EphyHistory *gh,
const char *title)
{
EphyNode *node;
- guint host_id;
GValue value = { 0, };
LOG ("Set page title")
+ if (title == NULL || title[0] == '\0') return;
+
node = ephy_history_get_page (gh, url);
if (!node) return;
@@ -771,9 +772,28 @@ ephy_history_set_page_title (EphyHistory *gh,
ephy_node_set_property
(node, EPHY_NODE_PAGE_PROP_TITLE, &value);
g_value_unset (&value);
+}
+
+void
+ephy_history_set_icon (EphyHistory *gh,
+ const char *url,
+ const char *icon)
+{
+ EphyNode *host;
+
+ LOG ("Set host icon")
- host_id = ephy_node_get_property_int
- (node, EPHY_NODE_PAGE_PROP_HOST_ID);
+ host = g_hash_table_lookup (gh->priv->hosts_hash, url);
+ if (host)
+ {
+ GValue value = { 0, };
+
+ g_value_init (&value, G_TYPE_STRING);
+ g_value_set_string (&value, icon);
+ ephy_node_set_property
+ (host, EPHY_NODE_PAGE_PROP_ICON, &value);
+ g_value_unset (&value);
+ }
}
void
@@ -786,7 +806,8 @@ ephy_history_clear (EphyHistory *gh)
ephy_node_unref (node);
}
- while ((node = ephy_node_get_nth_child (gh->priv->hosts, 0)) != NULL)
+ /* The first node is All, dont unref it */
+ while ((node = ephy_node_get_nth_child (gh->priv->hosts, 1)) != NULL)
{
ephy_node_unref (node);
}
diff --git a/embed/ephy-history.h b/embed/ephy-history.h
index ccddbec67..4308e7adc 100644
--- a/embed/ephy-history.h
+++ b/embed/ephy-history.h
@@ -44,7 +44,8 @@ enum
EPHY_NODE_PAGE_PROP_LAST_VISIT = 5,
EPHY_NODE_PAGE_PROP_FIRST_VISIT = 6,
EPHY_NODE_PAGE_PROP_HOST_ID = 7,
- EPHY_NODE_PAGE_PROP_PRIORITY = 8
+ EPHY_NODE_PAGE_PROP_PRIORITY = 8,
+ EPHY_NODE_PAGE_PROP_ICON = 9
};
struct EphyHistory
@@ -86,6 +87,10 @@ void ephy_history_set_page_title (EphyHistory *gh,
const char *ephy_history_get_last_page (EphyHistory *gh);
+void ephy_history_set_icon (EphyHistory *gh,
+ const char *url,
+ const char *icon);
+
void ephy_history_remove (EphyHistory *gh,
EphyNode *node);
diff --git a/src/ephy-history-window.c b/src/ephy-history-window.c
index 34d8e19f6..2c2cd8ec8 100644
--- a/src/ephy-history-window.c
+++ b/src/ephy-history-window.c
@@ -127,6 +127,7 @@ static void
cmd_clear (EggAction *action,
EphyHistoryWindow *editor)
{
+ ephy_history_clear (editor->priv->history);
}
static void
@@ -510,6 +511,28 @@ menu_activate_cb (EphyNodeView *view,
}
static void
+provide_favicon (EphyNode *node, GValue *value, gpointer user_data)
+{
+ EphyFaviconCache *cache;
+ const char *icon_location;
+ GdkPixbuf *pixbuf = NULL;
+
+ cache = ephy_embed_shell_get_favicon_cache (EPHY_EMBED_SHELL (ephy_shell));
+ icon_location = ephy_node_get_property_string
+ (node, EPHY_NODE_PAGE_PROP_ICON);
+
+ LOG ("Get favicon for %s", icon_location ? icon_location : "None")
+
+ if (icon_location)
+ {
+ pixbuf = ephy_favicon_cache_get (cache, icon_location);
+ }
+
+ g_value_init (value, GDK_TYPE_PIXBUF);
+ g_value_set_object (value, pixbuf);
+}
+
+static void
ephy_history_window_construct (EphyHistoryWindow *editor)
{
GtkTreeViewColumn *col;
@@ -587,6 +610,7 @@ ephy_history_window_construct (EphyHistoryWindow *editor)
EPHY_NODE_PAGE_PROP_LOCATION);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (sites_view));
gtk_tree_selection_set_mode (selection, GTK_SELECTION_BROWSE);
+ ephy_node_view_add_icon_column (EPHY_NODE_VIEW (sites_view), provide_favicon);
ephy_node_view_add_column (EPHY_NODE_VIEW (sites_view), _("Sites"),
G_TYPE_STRING,
EPHY_NODE_PAGE_PROP_TITLE,
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index 52f668f7b..6f2848a33 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -449,6 +449,7 @@ ephy_tab_set_favicon (EphyTab *tab,
{
GtkWidget *nb;
EphyBookmarks *eb;
+ EphyHistory *history;
nb = ephy_window_get_notebook (tab->priv->window);
ephy_notebook_set_page_icon (EPHY_NOTEBOOK (nb),
@@ -458,8 +459,12 @@ ephy_tab_set_favicon (EphyTab *tab,
if (tab->priv->favicon_url[0] != '\0')
{
eb = ephy_shell_get_bookmarks (ephy_shell);
+ history = ephy_embed_shell_get_global_history
+ (EPHY_EMBED_SHELL (ephy_shell));
ephy_bookmarks_set_icon (eb, tab->priv->location,
tab->priv->favicon_url);
+ ephy_history_set_icon (history, tab->priv->location,
+ tab->priv->favicon_url);
ephy_window_update_control (tab->priv->window,
FaviconControl);
}