From 2531079866b194c05f5ef16907838e7becd3ac2b Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Sun, 5 Apr 2009 19:17:24 +0000 Subject: Revert r6973. Apparently, it causes loads of problems. svn path=/trunk/netsurf/; revision=7047 --- desktop/browser.c | 54 ++++++++++++++++++++++++-------------------------- desktop/browser.h | 10 +++++----- desktop/history_core.c | 39 ------------------------------------ desktop/history_core.h | 2 -- 4 files changed, 31 insertions(+), 74 deletions(-) (limited to 'desktop') diff --git a/desktop/browser.c b/desktop/browser.c index 605b44f25..55d069db2 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -139,11 +139,11 @@ static void browser_window_scroll_box(struct browser_window *bw, struct browser_window *browser_window_create(const char *url, struct browser_window *clone, - const char *referer, bool add_to_history, bool new_tab) + const char *referer, bool history_add, bool new_tab) { struct browser_window *bw; - assert(clone || add_to_history); + assert(clone || history_add); if ((bw = calloc(1, sizeof *bw)) == NULL) { warn_user("NoMemory", 0); @@ -165,7 +165,7 @@ struct browser_window *browser_window_create(const char *url, return NULL; } if (url) - browser_window_go(bw, url, referer, add_to_history); + browser_window_go(bw, url, referer, history_add); return bw; } @@ -208,11 +208,11 @@ void browser_window_initialise_common(struct browser_window *bw, */ void browser_window_go(struct browser_window *bw, const char *url, - const char *referer, bool add_to_history) + const char *referer, bool history_add) { /* All fetches passing through here are verifiable * (i.e are the result of user action) */ - browser_window_go_post(bw, url, 0, 0, add_to_history, referer, + browser_window_go_post(bw, url, 0, 0, history_add, referer, false, true, referer); } @@ -244,11 +244,11 @@ void browser_window_download(struct browser_window *bw, const char *url, */ void browser_window_go_unverifiable(struct browser_window *bw, - const char *url, const char *referer, bool add_to_history) + const char *url, const char *referer, bool history_add) { /* All fetches passing through here are unverifiable * (i.e are not the result of user action) */ - browser_window_go_post(bw, url, 0, 0, add_to_history, referer, + browser_window_go_post(bw, url, 0, 0, history_add, referer, false, false, referer); } @@ -349,7 +349,7 @@ void browser_window_go_post(struct browser_window *bw, const char *url, if (add_to_history) history_add(bw->history, bw->current_content, bw->frag_id); - browser_window_update(bw); + browser_window_update(bw, false); if (bw->current_content) { browser_window_refresh_url_bar(bw, bw->current_content->url, @@ -367,7 +367,7 @@ void browser_window_go_post(struct browser_window *bw, const char *url, LOG(("Loading '%s' width %i, height %i", url2, width, height)); browser_window_set_status(bw, messages_get("Loading")); - bw->add_to_history = add_to_history; + bw->history_add = add_to_history; c = fetchcache(url2, browser_window_callback, (intptr_t) bw, 0, width, height, false, post_urlenc, post_multipart, verifiable, download); @@ -448,12 +448,12 @@ void browser_window_callback(content_msg msg, struct content *c, bw->current_content->url, bw->frag_id); } - browser_window_update(bw); + browser_window_update(bw, false); content_open(c, bw, 0, 0, 0, 0); browser_window_set_status(bw, c->status_message); /* history */ - if (bw->add_to_history && bw->history) { + if (bw->history_add && bw->history) { history_add(bw->history, c, bw->frag_id); if (urldb_add_url(c->url)) { urldb_set_url_title(c->url, @@ -487,7 +487,7 @@ void browser_window_callback(content_msg msg, struct content *c, case CONTENT_MSG_DONE: assert(bw->current_content == c); - browser_window_update(bw); + browser_window_update(bw, false); browser_window_set_status(bw, c->status_message); browser_window_stop_throbber(bw); history_update(bw->history, c); @@ -537,7 +537,7 @@ void browser_window_callback(content_msg msg, struct content *c, } if (bw->move_callback) bw->move_callback(bw, bw->caret_p); - browser_window_update(bw); + browser_window_update(bw, false); break; case CONTENT_MSG_REDRAW: @@ -669,7 +669,7 @@ void browser_window_convert_to_download(struct browser_window *bw) void browser_window_refresh(void *p) { struct browser_window *bw = p; - bool add_to_history = true; + bool history_add = true; assert(bw->current_content && (bw->current_content->status == CONTENT_STATUS_READY || @@ -687,7 +687,7 @@ void browser_window_refresh(void *p) (bw->current_content->refresh) && (!strcmp(bw->current_content->url, bw->current_content->refresh))) - add_to_history = false; + history_add = false; /* Treat an (almost) immediate refresh in a top-level browser window as * if it were an HTTP redirect, and thus make the resulting fetch @@ -698,10 +698,10 @@ void browser_window_refresh(void *p) */ if (bw->refresh_interval <= 100 && bw->parent == NULL) { browser_window_go(bw, bw->current_content->refresh, - bw->current_content->url, add_to_history); + bw->current_content->url, history_add); } else { browser_window_go_unverifiable(bw, bw->current_content->refresh, - bw->current_content->url, add_to_history); + bw->current_content->url, history_add); } } @@ -770,10 +770,11 @@ bool browser_window_check_throbber(struct browser_window *bw) * \param scroll_to_top move view to top of page */ -void browser_window_update(struct browser_window *bw) +void browser_window_update(struct browser_window *bw, + bool scroll_to_top) { struct box *pos; - int x, y, sx, sy; + int x, y; if (!bw->current_content) return; @@ -785,21 +786,18 @@ void browser_window_update(struct browser_window *bw) gui_window_update_extent(bw->window); - if (!history_get_current_scroll(bw->history, &sx, &sy)) - sx = -1; + if (scroll_to_top) + gui_window_set_scroll(bw->window, 0, 0); - /* if the page was scrolled before return to that position */ - if (sx != -1) { - gui_window_set_scroll(bw->window, sx, sy); + /** \todo don't do this if the user has scrolled */ /* if frag_id exists, then try to scroll to it */ - } else if (bw->frag_id && bw->current_content->type == CONTENT_HTML) { + if (bw->frag_id && bw->current_content->type == CONTENT_HTML) { if ((pos = box_find_by_id(bw->current_content->data.html.layout, bw->frag_id)) != 0) { box_coords(pos, &x, &y); gui_window_set_scroll(bw->window, x, y); } - } else - gui_window_set_scroll(bw->window, 0, 0); + } gui_window_redraw_window(bw->window); } @@ -1071,7 +1069,7 @@ void browser_window_set_scale_internal(struct browser_window *bw, float scale) c = bw->current_content; if (c) { if (!content_can_reformat(c)) { - browser_window_update(bw); + browser_window_update(bw, false); } else { bw->reformat_pending = true; browser_reformat_pending = true; diff --git a/desktop/browser.h b/desktop/browser.h index 54e4c69cc..37c643520 100644 --- a/desktop/browser.h +++ b/desktop/browser.h @@ -80,7 +80,7 @@ struct browser_window { /** Busy indicator is active. */ bool throbbing; /** Add loading_content to the window history when it loads. */ - bool add_to_history; + bool history_add; /** Fragment identifier for current_content. */ char *frag_id; @@ -214,16 +214,16 @@ extern bool browser_reformat_pending; struct browser_window * browser_window_create(const char *url, struct browser_window *clone, const char *referrer, - bool add_to_history, bool new_tab); + bool history_add, bool new_tab); void browser_window_initialise_common(struct browser_window *bw, struct browser_window *clone); void browser_window_go(struct browser_window *bw, const char *url, - const char *referrer, bool add_to_history); + const char *referrer, bool history_add); void browser_window_go_unverifiable(struct browser_window *bw, - const char *url, const char *referrer, bool add_to_history); + const char *url, const char *referrer, bool history_add); void browser_window_download(struct browser_window *bw, const char *url, const char *referrer); -void browser_window_update(struct browser_window *bw); +void browser_window_update(struct browser_window *bw, bool scroll_to_top); void browser_window_stop(struct browser_window *bw); void browser_window_reload(struct browser_window *bw, bool all); void browser_window_destroy(struct browser_window *bw); diff --git a/desktop/history_core.c b/desktop/history_core.c index 433889bea..d6feb69be 100644 --- a/desktop/history_core.c +++ b/desktop/history_core.c @@ -29,7 +29,6 @@ #include "content/content.h" #include "content/urldb.h" #include "css/css.h" -#include "desktop/browser.h" #include "desktop/gui.h" #include "desktop/history_core.h" #include "desktop/plotters.h" @@ -64,8 +63,6 @@ struct history_entry { int x; /**< Position of node. */ int y; /**< Position of node. */ struct bitmap *bitmap; /**< Thumbnail bitmap, or 0. */ - int sx; /**< X scroll offset. */ - int sy; /**< Y scroll offset. */ }; /** History tree for a window. */ @@ -262,8 +259,6 @@ void history_add(struct history *history, struct content *content, entry->forward = entry->forward_pref = entry->forward_last = 0; entry->children = 0; entry->bitmap = 0; - entry->sx = -1; - entry->sy = -1; if (history->current) { if (history->current->forward_last) history->current->forward_last->next = entry; @@ -760,37 +755,3 @@ struct history_entry *history_find_position(struct history_entry *entry, return 0; } - -/** - * Save in the history the scroll offsets of the current page - * \param history history with the page - * \param sx x offset to be set - * \param sy y offset to be set - */ - -void history_set_current_scroll(struct history *history, int sx, int sy) -{ - if (!history || !history->current) - return; - - history->current->sx = sx; - history->current->sy = sy; -} - -/** - * Load from the history the scroll offsets of the current page - * \param history history with the page - * \param sx updated to x offset - * \param sy updated to y offset - * \return true on success - */ - -bool history_get_current_scroll(struct history *history, int *sx, int *sy) -{ - if (!history || !history->current) - return false; - - *sx = history->current->sx; - *sy = history->current->sy; - return true; -} diff --git a/desktop/history_core.h b/desktop/history_core.h index 4abb94ce8..46de18848 100644 --- a/desktop/history_core.h +++ b/desktop/history_core.h @@ -46,7 +46,5 @@ bool history_redraw_rectangle(struct history *history, bool history_click(struct browser_window *bw, struct history *history, int x, int y, bool new_window); const char *history_position_url(struct history *history, int x, int y); -void history_set_current_scroll(struct history *history, int sx, int sy); -bool history_get_current_scroll(struct history *history, int *sx, int *sy); #endif -- cgit v1.2.3