summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@src.gnome.org>2003-11-16 19:07:13 +0000
committerShaun McCance <shaunm@src.gnome.org>2003-11-16 19:07:13 +0000
commitae36d16dc580e98fb7c6a61d1b3d6f5fedb95041 (patch)
treedf6526083446ecacb74b28861dbd80d8f5910cb4
parent52842e4bb5ec0208157cd8ff7e4b65f7e41fcc18 (diff)
downloadyelp-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--ChangeLog12
-rw-r--r--src/yelp-db-pager.c21
-rw-r--r--src/yelp-pager.c13
-rw-r--r--src/yelp-pager.h2
-rw-r--r--src/yelp-window.c42
5 files changed, 30 insertions, 60 deletions
diff --git a/ChangeLog b/ChangeLog
index feb6e8ef..1bddbe97 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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,