summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2003-07-14 22:57:45 +0000
committerJames Bursa <james@netsurf-browser.org>2003-07-14 22:57:45 +0000
commit889ae885c66b0278c632090a0e1b89746a895ed4 (patch)
treebdb33f9b335584f04a61a6422e02a345181650b6 /desktop
parent907115c49d571eea11919e55d84bd599154ccb0f (diff)
downloadnetsurf-889ae885c66b0278c632090a0e1b89746a895ed4.tar.gz
netsurf-889ae885c66b0278c632090a0e1b89746a895ed4.tar.bz2
[project @ 2003-07-14 22:57:45 by bursa]
Add content instances. svn path=/import/netsurf/; revision=216
Diffstat (limited to 'desktop')
-rw-r--r--desktop/browser.c20
-rw-r--r--desktop/browser.h3
2 files changed, 15 insertions, 8 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 5016b9d82..4f9fcc362 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -60,7 +60,7 @@ void browser_window_stop_throbber(struct browser_window* bw)
}
-void browser_window_reformat(struct browser_window* bw)
+void browser_window_reformat(struct browser_window* bw, int scroll_to_top)
{
LOG(("bw = %p", bw));
@@ -73,7 +73,8 @@ void browser_window_reformat(struct browser_window* bw)
else
gui_window_set_title(bw->window, bw->current_content->title);
gui_window_set_extent(bw->window, bw->current_content->width, bw->current_content->height);
- gui_window_set_scroll(bw->window, 0, 0);
+ if (scroll_to_top)
+ gui_window_set_scroll(bw->window, 0, 0);
gui_window_redraw_window(bw->window);
LOG(("done"));
@@ -182,8 +183,10 @@ void browser_window_destroy(struct browser_window* bw)
LOG(("bw = %p", bw));
assert(bw != 0);
- if (bw->current_content != NULL)
- content_remove_user(bw->current_content, browser_window_callback, bw, 0, 0);
+ if (bw->current_content != NULL) {
+ content_remove_instance(bw->current_content, bw, 0, 0, 0, &bw->current_content_state);
+ content_remove_user(bw->current_content, browser_window_callback, bw, 0);
+ }
if (bw->history != NULL)
{
@@ -226,7 +229,7 @@ void browser_window_open_location_historical(struct browser_window* bw, const ch
browser_window_start_throbber(bw);
bw->time0 = clock();
bw->loading_content = fetchcache(url, 0, browser_window_callback, bw, 0,
- gui_window_get_width(bw->window), 0, 0);
+ gui_window_get_width(bw->window), 0);
if (bw->loading_content->status == CONTENT_STATUS_READY)
browser_window_callback(CONTENT_MSG_READY, bw->loading_content, bw, 0, 0);
else if (bw->loading_content->status == CONTENT_STATUS_DONE)
@@ -294,18 +297,21 @@ void browser_window_callback(content_msg msg, struct content *c,
gui_remove_gadget(bw->current_content->data.html.elements.gadgets[gc]);
}
}
- content_remove_user(bw->current_content, browser_window_callback, bw, 0, 0);
+ content_remove_instance(bw->current_content, bw, 0, 0, 0, &bw->current_content_state);
+ content_remove_user(bw->current_content, browser_window_callback, bw, 0);
}
bw->current_content = c;
bw->loading_content = 0;
}
- browser_window_reformat(bw);
gui_window_set_redraw_safety(bw->window, previous_safety);
if (bw->current_content->status == CONTENT_STATUS_DONE) {
+ content_add_instance(bw->current_content, bw, 0, 0, 0, &bw->current_content_state);
+ browser_window_reformat(bw, 0);
sprintf(status, "Page complete (%gs)", ((float) (clock() - bw->time0)) / CLOCKS_PER_SEC);
browser_window_set_status(bw, status);
browser_window_stop_throbber(bw);
} else {
+ browser_window_reformat(bw, 1);
browser_window_set_status(bw, c->status_message);
}
break;
diff --git a/desktop/browser.h b/desktop/browser.h
index d7bd0781b..016f2e636 100644
--- a/desktop/browser.h
+++ b/desktop/browser.h
@@ -52,6 +52,7 @@ struct browser_window
struct { int mult; int div; } scale;
struct content* current_content;
+ void *current_content_state;
struct content* loading_content;
struct history* history;
clock_t time0;
@@ -117,6 +118,6 @@ int box_position_distance(struct box_position* x, struct box_position* y);
void gui_redraw_gadget(struct browser_window* bw, struct gui_gadget* g);
void browser_window_stop_throbber(struct browser_window* bw);
-void browser_window_reformat(struct browser_window* bw);
+void browser_window_reformat(struct browser_window* bw, int scroll_to_top);
#endif