diff options
author | Shaun McCance <shaunm@src.gnome.org> | 2003-11-16 19:07:13 +0000 |
---|---|---|
committer | Shaun McCance <shaunm@src.gnome.org> | 2003-11-16 19:07:13 +0000 |
commit | ae36d16dc580e98fb7c6a61d1b3d6f5fedb95041 (patch) | |
tree | df6526083446ecacb74b28861dbd80d8f5910cb4 | |
parent | 52842e4bb5ec0208157cd8ff7e4b65f7e41fcc18 (diff) | |
download | yelp-ae36d16dc580e98fb7c6a61d1b3d6f5fedb95041.tar.gz |
- Change resolve_uri to return a non-const gchar * - Remove sections
* src/yelp-db-pager.c:
* src/yelp-pager.c:
* src/yelp-pager.h:
- Change resolve_uri to return a non-const gchar *
- Remove sections event, as it's not necessary using the
GtkTreeModel without all that threading crap.
* src/yelp-db-pager.c:
- Remove sections event.
-rw-r--r-- | ChangeLog | 12 | ||||
-rw-r--r-- | src/yelp-db-pager.c | 21 | ||||
-rw-r--r-- | src/yelp-pager.c | 13 | ||||
-rw-r--r-- | src/yelp-pager.h | 2 | ||||
-rw-r--r-- | src/yelp-window.c | 42 |
5 files changed, 30 insertions, 60 deletions
@@ -3,6 +3,18 @@ * src/yelp-db-pager.c: * src/yelp-pager.c: * src/yelp-pager.h: + - Change resolve_uri to return a non-const gchar * + - Remove sections event, as it's not necessary using the + GtkTreeModel without all that threading crap. + + * src/yelp-db-pager.c: + - Remove sections event. + +2003-11-15 Shaun McCance <shaunm@gnome.org> + + * src/yelp-db-pager.c: + * src/yelp-pager.c: + * src/yelp-pager.h: - Use a YelpPage struct rather than just a gchar, so a page can hold the id and title and well as the contents. diff --git a/src/yelp-db-pager.c b/src/yelp-db-pager.c index 52968a22..db0e91c5 100644 --- a/src/yelp-db-pager.c +++ b/src/yelp-db-pager.c @@ -71,7 +71,7 @@ static void db_pager_dispose (GObject *gobject); gboolean db_pager_process (YelpPager *pager); void db_pager_cancel (YelpPager *pager); -const gchar * db_pager_resolve_uri (YelpPager *pager, +gchar * db_pager_resolve_uri (YelpPager *pager, YelpURI *uri); const GtkTreeModel * db_pager_get_sections (YelpPager *pager); @@ -225,8 +225,6 @@ db_pager_process (YelpPager *pager) walker_walk_xml (walker); - g_signal_emit_by_name (pager, "sections"); - while (gtk_events_pending ()) gtk_main_iteration (); @@ -289,12 +287,12 @@ db_pager_cancel (YelpPager *pager) { } -const gchar * +gchar * db_pager_resolve_uri (YelpPager *pager, YelpURI *uri) { YelpDBPager *db_pager; gchar *frag_id; - const gchar *page_id; + gchar *page_id; g_return_val_if_fail (pager != NULL, NULL); g_return_val_if_fail (YELP_IS_DB_PAGER (pager), NULL); @@ -303,9 +301,8 @@ db_pager_resolve_uri (YelpPager *pager, YelpURI *uri) frag_id = yelp_uri_get_fragment (uri); - page_id = - (const gchar *) g_hash_table_lookup (db_pager->priv->frags_hash, - frag_id); + page_id = g_hash_table_lookup (db_pager->priv->frags_hash, + frag_id); g_free (frag_id); return page_id; @@ -440,10 +437,17 @@ walker_walk_xml (DBWalker *walker) walker->page_id = id; old_iter = walker->iter; + if (!xml_is_info (walker->cur) && + walker->cur->parent->type != XML_DOCUMENT_NODE) { + walker->iter = &iter; + } } } + while (gtk_events_pending ()) + gtk_main_iteration (); + old_cur = walker->cur; walker->depth++; @@ -467,6 +471,7 @@ walker_walk_xml (DBWalker *walker) if (walker_is_chunk (walker) && id) { walker->iter = old_iter; + walker->page_id = old_id; } diff --git a/src/yelp-pager.c b/src/yelp-pager.c index 7b22ddcd..bbdb6b08 100644 --- a/src/yelp-pager.c +++ b/src/yelp-pager.c @@ -50,7 +50,6 @@ enum { enum { START, - SECTIONS, PAGE, FINISH, CANCEL, @@ -126,14 +125,6 @@ pager_class_init (YelpPagerClass *klass) yelp_marshal_VOID__VOID, G_TYPE_NONE, 0); - signals[SECTIONS] = g_signal_new - ("sections", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_FIRST, 0, - NULL, NULL, - yelp_marshal_VOID__VOID, - G_TYPE_NONE, 0); - signals[PAGE] = g_signal_new ("page", G_TYPE_FROM_CLASS (klass), @@ -353,9 +344,7 @@ yelp_pager_lookup_page (YelpPager *pager, YelpURI *uri) page_id = (gchar *) (YELP_PAGER_GET_CLASS (pager)->resolve_uri (pager, uri)); - if (page_id) - page_id = g_strdup (page_id); - else + if (!page_id) page_id = yelp_uri_get_fragment (uri); page = (YelpPage *) yelp_pager_get_page (pager, page_id); diff --git a/src/yelp-pager.h b/src/yelp-pager.h index 6e67ea56..d5a756ac 100644 --- a/src/yelp-pager.h +++ b/src/yelp-pager.h @@ -59,7 +59,7 @@ struct _YelpPagerClass { /* Virtual Functions */ gboolean (*process) (YelpPager *pager); void (*cancel) (YelpPager *pager); - const gchar * (*resolve_uri) (YelpPager *pager, + gchar * (*resolve_uri) (YelpPager *pager, YelpURI *uri); const GtkTreeModel * (*get_sections) (YelpPager *pager); }; diff --git a/src/yelp-window.c b/src/yelp-window.c index 52bfbf26..4fd379b6 100644 --- a/src/yelp-window.c +++ b/src/yelp-window.c @@ -82,8 +82,6 @@ static gboolean window_handle_toc_uri (YelpWindow *window, static void pager_page_cb (YelpPager *pager, gchar *page_id, gpointer user_data); -static void pager_sections_cb (YelpPager *pager, - gpointer user_data); static void html_uri_selected_cb (YelpHtml *html, YelpURI *uri, @@ -173,7 +171,6 @@ struct _YelpWindowPriv { YelpPager *pager; gulong page_handler; - gulong sections_handler; GtkItemFactory *item_factory; @@ -621,11 +618,6 @@ window_handle_pager_uri (YelpWindow *window, priv->page_handler); priv->page_handler = 0; } - if (priv->sections_handler) { - g_signal_handler_disconnect (priv->pager, - priv->sections_handler); - priv->sections_handler = 0; - } // Grab the appropriate pager from the cache path = yelp_uri_get_path (uri); @@ -688,6 +680,9 @@ window_handle_pager_uri (YelpWindow *window, gtk_window_set_title (GTK_WINDOW (window), (const gchar *) loading); + window_set_sections (window, + GTK_TREE_MODEL (yelp_pager_get_sections (pager))); + yelp_html_printf (priv->html_view, "<html><head><meta http-equiv='Content-Type'" @@ -706,11 +701,6 @@ window_handle_pager_uri (YelpWindow *window, "page", G_CALLBACK (pager_page_cb), window); - priv->sections_handler = - g_signal_connect (pager, - "sections", - G_CALLBACK (pager_sections_cb), - window); if (startnow) yelp_pager_start (pager); @@ -759,11 +749,6 @@ window_handle_toc_uri (YelpWindow *window, priv->page_handler); priv->page_handler = 0; } - if (priv->sections_handler) { - g_signal_handler_disconnect (priv->pager, - priv->sections_handler); - priv->sections_handler = 0; - } gchar *str_uri = yelp_uri_to_string (uri); printf ("::: %s\n", str_uri); @@ -811,27 +796,6 @@ pager_page_cb (YelpPager *pager, } static void -pager_sections_cb (YelpPager *pager, - gpointer user_data) -{ - YelpWindow *window = YELP_WINDOW (user_data); - YelpURI *uri; - - uri = yelp_window_get_current_uri (window); - - if ( (yelp_uri_equal_path (uri, yelp_pager_get_uri (pager)))) { - if (window->priv->sections_handler) { - g_signal_handler_disconnect (window->priv->pager, - window->priv->sections_handler); - window->priv->sections_handler = 0; - } - - window_set_sections (window, - GTK_TREE_MODEL (yelp_pager_get_sections (pager))); - } -} - -static void html_uri_selected_cb (YelpHtml *html, YelpURI *uri, gboolean handled, |