diff options
Diffstat (limited to 'desktop/browser_private.h')
-rw-r--r-- | desktop/browser_private.h | 95 |
1 files changed, 94 insertions, 1 deletions
diff --git a/desktop/browser_private.h b/desktop/browser_private.h index 5a53e2f0b..8bbc573eb 100644 --- a/desktop/browser_private.h +++ b/desktop/browser_private.h @@ -35,8 +35,48 @@ struct box; struct hlcache_handle; struct gui_window; -struct history; struct selection; +struct nsurl; + +/** + * history entry page information + */ +struct history_page { + struct nsurl *url; /**< Page URL, never NULL. */ + lwc_string *frag_id; /** Fragment identifier, or NULL. */ + char *title; /**< Page title, never NULL. */ +}; + +/** + * A node in the history tree. + */ +struct history_entry { + struct history_page page; + struct history_entry *back; /**< Parent. */ + struct history_entry *next; /**< Next sibling. */ + struct history_entry *forward; /**< First child. */ + struct history_entry *forward_pref; /**< Child in direction of + current entry. */ + struct history_entry *forward_last; /**< Last child. */ + unsigned int children; /**< Number of children. */ + int x; /**< Position of node. */ + int y; /**< Position of node. */ + struct bitmap *bitmap; /**< Thumbnail bitmap, or 0. */ +}; + +/** + * History tree for a window. + */ +struct history { + /** First page in tree (page that window opened with). */ + struct history_entry *start; + /** Current position in tree. */ + struct history_entry *current; + /** Width of layout. */ + int width; + /** Height of layout. */ + int height; +}; /** * Browser window data. @@ -249,4 +289,57 @@ void browser_window_set_status(struct browser_window *bw, const char *text); */ struct browser_window * browser_window_get_root(struct browser_window *bw); + +/** + * Create a new history tree for a browser window window. + * + * \param bw browser window to create history for. + * + * \return NSERROR_OK or appropriate error otherwise + */ +nserror browser_window_history_create(struct browser_window *bw); + +/** + * Clone a bw's history tree for new bw + * + * \param existing browser window with history to clone. + * \param clone browser window to make cloned history for. + * + * \return NSERROR_OK or appropriate error otherwise + */ +nserror browser_window_history_clone(const struct browser_window *existing, + struct browser_window *clone); + + +/** + * Insert a url into the history tree. + * + * \param bw browser window with history object + * \param content content to add to history + * \param frag_id fragment identifier, or NULL. + * \return NSERROR_OK or error code on faliure. + * + * The page is added after the current entry and becomes current. + */ +nserror browser_window_history_add(struct browser_window *bw, + struct hlcache_handle *content, lwc_string *frag_id); + +/** + * Update the thumbnail for the current entry. + * + * \param bw The browser window to update the history within. + * \param content content for current entry + * \return NSERROR_OK or error code on faliure. + */ +nserror browser_window_history_update(struct browser_window *bw, + struct hlcache_handle *content); + +/** + * Free a history structure. + * + * \param bw The browser window to destroy the history within. + */ +void browser_window_history_destroy(struct browser_window *bw); + + #endif |