aboutsummaryrefslogtreecommitdiffstats
path: root/embed
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-04-30 03:08:25 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-04-30 03:08:25 +0800
commitb4df6c7d7c84610ecb9808103f7e411d75dfbae2 (patch)
treed3b4707e9e730034e26429a314c6916281a39e9a /embed
parentdb1b85b940e4ea707c0fadda76ba79ddec8f697b (diff)
downloadgsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.gz
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.bz2
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.lz
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.xz
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.tar.zst
gsoc2013-epiphany-b4df6c7d7c84610ecb9808103f7e411d75dfbae2.zip
We dont need a _remove api, unrefing the node will work better. Try to
2003-04-29 Marco Pesenti Gritti <marco@it.gnome.org> * embed/ephy-history.c: (remove_obsolete_pages), (pages_removed_cb), (ephy_history_get_last_page): * embed/ephy-history.h: We dont need a _remove api, unrefing the node will work better. Try to remove the host when it's empty. It still doesnt work properly, prolly EphyNode bug. * src/bookmarks/ephy-bookmark-properties.c: (ephy_bookmark_properties_get_node): * src/bookmarks/ephy-bookmark-properties.h: * src/bookmarks/ephy-bookmarks-editor.c: (prop_dialog_destroy_cb), (show_properties_dialog), (cmd_bookmark_properties), (ephy_bookmarks_editor_finalize), (ephy_bookmarks_editor_init): Do not open more than one dialog per node, just present it. Picky picky Dave. * src/ephy-automation.c: (impl_ephy_automation_loadurl): * src/ephy-shell.c: (ephy_shell_new_tab): Ever present the window when opening windows through automation.
Diffstat (limited to 'embed')
-rw-r--r--embed/ephy-history.c48
-rw-r--r--embed/ephy-history.h3
2 files changed, 16 insertions, 35 deletions
diff --git a/embed/ephy-history.c b/embed/ephy-history.c
index 51dd68936..4c5cf6cbe 100644
--- a/embed/ephy-history.c
+++ b/embed/ephy-history.c
@@ -258,7 +258,7 @@ remove_obsolete_pages (EphyHistory *eb)
if (page_is_obsolete (kid, &current_date))
{
- ephy_history_remove (eb, kid);
+ ephy_node_unref (kid);
}
}
}
@@ -354,12 +354,27 @@ pages_removed_cb (EphyNode *node,
EphyNode *child,
EphyHistory *eb)
{
+ EphyNode *host;
+ int host_id;
+ int children;
+
g_static_rw_lock_writer_lock (eb->priv->pages_hash_lock);
g_hash_table_remove (eb->priv->pages_hash,
ephy_node_get_property_string (child, EPHY_NODE_PAGE_PROP_LOCATION));
g_static_rw_lock_writer_unlock (eb->priv->pages_hash_lock);
+
+ host_id = ephy_node_get_property_int (child, EPHY_NODE_PAGE_PROP_HOST_ID);
+ host = ephy_node_get_from_id (host_id);
+ children = ephy_node_get_n_children (host);
+
+ LOG ("Check host children: %d", children)
+
+ if (children == 0)
+ {
+ ephy_node_unref (host);
+ }
}
static gboolean
@@ -835,34 +850,3 @@ ephy_history_get_last_page (EphyHistory *gh)
return ephy_node_get_property_string
(gh->priv->last_page, EPHY_NODE_PAGE_PROP_LOCATION);
}
-
-void
-ephy_history_remove (EphyHistory *gh, EphyNode *node)
-{
- EphyNode *host;
- int host_id;
-
- LOG ("Remove history item")
-
- host_id = ephy_node_get_property_int (node, EPHY_NODE_PAGE_PROP_HOST_ID);
- if (host_id < 0)
- {
- EphyNode *tmp;
- while ((tmp = ephy_node_get_nth_child (node, 0)) != NULL)
- {
- ephy_node_unref (tmp);
- }
- ephy_node_unref (node);
- return;
- }
-
- host = ephy_node_get_from_id (host_id);
- if (ephy_node_get_n_children (host) == 1)
- {
- ephy_node_unref (host);
- }
- else
- {
- ephy_node_unref (node);
- }
-}
diff --git a/embed/ephy-history.h b/embed/ephy-history.h
index 4308e7adc..7d1d66ee4 100644
--- a/embed/ephy-history.h
+++ b/embed/ephy-history.h
@@ -91,9 +91,6 @@ void ephy_history_set_icon (EphyHistory *gh,
const char *url,
const char *icon);
-void ephy_history_remove (EphyHistory *gh,
- EphyNode *node);
-
void ephy_history_clear (EphyHistory *gh);
G_END_DECLS