[yelp] [yelp-view] Fixed order of signal emissions
- From: Shaun McCance <shaunm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [yelp] [yelp-view] Fixed order of signal emissions
- Date: Thu, 6 Jan 2011 23:57:30 +0000 (UTC)
commit 91138d1564b74d368aed0e109b6f0a1c60020d6c
Author: Shaun McCance <shaunm gnome org>
Date: Thu Jan 6 14:45:57 2011 -0500
[yelp-view] Fixed order of signal emissions
I moved notify::yelp-uri into uri_resolved to prevent it from
being called before we could check if the link was external.
But that meant that stuff like notify::page-icon was getting
called before notify::yelp-uri, wreaking havoc on history.
libyelp/yelp-view.c | 61 +++++++++++++++++++++++---------------------------
1 files changed, 28 insertions(+), 33 deletions(-)
---
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c
index 4ae3361..381a60c 100644
--- a/libyelp/yelp-view.c
+++ b/libyelp/yelp-view.c
@@ -562,41 +562,9 @@ yelp_view_load_uri (YelpView *view,
YelpUri *uri)
{
YelpViewPrivate *priv = GET_PRIV (view);
- GParamSpec *spec;
g_object_set (view, "state", YELP_VIEW_STATE_LOADING, NULL);
- g_free (priv->page_id);
- g_free (priv->root_title);
- g_free (priv->page_title);
- g_free (priv->page_desc);
- g_free (priv->page_icon);
- priv->page_id = NULL;
- priv->root_title = NULL;
- priv->page_title = NULL;
- priv->page_desc = NULL;
- priv->page_icon = NULL;
-
- spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
- "page-id");
- g_signal_emit_by_name (view, "notify::page-id", spec);
-
- spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
- "root-title");
- g_signal_emit_by_name (view, "notify::root-title", spec);
-
- spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
- "page-title");
- g_signal_emit_by_name (view, "notify::page-title", spec);
-
- spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
- "page-desc");
- g_signal_emit_by_name (view, "notify::page-desc", spec);
-
- spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
- "page-icon");
- g_signal_emit_by_name (view, "notify::page-icon", spec);
-
gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group,
"YelpViewGoPrevious"),
FALSE);
@@ -1709,7 +1677,7 @@ view_show_error_page (YelpView *view,
"root-title");
g_signal_emit_by_name (view, "notify::root-title", spec);
g_free (priv->page_id);
- priv->page_id = g_strdup ("//error");
+ priv->page_id = g_strdup ("index");
spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
"page-id");
g_signal_emit_by_name (view, "notify::page-id", spec);
@@ -1723,6 +1691,8 @@ view_show_error_page (YelpView *view,
g_free (priv->page_desc);
priv->page_desc = NULL;
+ if (priv->uri)
+ priv->page_desc = yelp_uri_get_canonical_uri (priv->uri);
spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
"page-desc");
g_signal_emit_by_name (view, "notify::page-desc", spec);
@@ -1947,6 +1917,31 @@ uri_resolved (YelpUri *uri,
"page-id");
g_signal_emit_by_name (view, "notify::page-id", spec);
+ g_free (priv->root_title);
+ g_free (priv->page_title);
+ g_free (priv->page_desc);
+ g_free (priv->page_icon);
+ priv->root_title = NULL;
+ priv->page_title = NULL;
+ priv->page_desc = NULL;
+ priv->page_icon = NULL;
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "root-title");
+ g_signal_emit_by_name (view, "notify::root-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-title");
+ g_signal_emit_by_name (view, "notify::page-title", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-desc");
+ g_signal_emit_by_name (view, "notify::page-desc", spec);
+
+ spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view),
+ "page-icon");
+ g_signal_emit_by_name (view, "notify::page-icon", spec);
+
if (error == NULL)
view_load_page (view);
else
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]