diff options
author | James Bursa <james@netsurf-browser.org> | 2007-08-07 03:55:18 +0000 |
---|---|---|
committer | James Bursa <james@netsurf-browser.org> | 2007-08-07 03:55:18 +0000 |
commit | 07c54283e364bd66e21fbd659ea0dd469201a747 (patch) | |
tree | 17bcc30ded5b29d3c2c769ef9933228168aa69f1 /desktop/browser.c | |
parent | 7ec7ba37dbeeee678ec573bcfe0594660fbe5195 (diff) | |
download | netsurf-07c54283e364bd66e21fbd659ea0dd469201a747.tar.gz netsurf-07c54283e364bd66e21fbd659ea0dd469201a747.tar.bz2 |
Move window scaling from platform-specific code to desktop/browser.c. Modify gtk gui to handle scaling in the same way as RO.
svn path=/trunk/netsurf/; revision=3478
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index ca1885cbb..a55932ab4 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -57,6 +57,9 @@ struct browser_window *current_redraw_browser; /** fake content for <a> being saved as a link */ struct content browser_window_href_content; +/** one or more windows require a reformat */ +bool browser_reformat_pending; + /** maximum frame depth */ #define FRAME_DEPTH 8 @@ -146,7 +149,9 @@ struct browser_window *browser_window_create(const char *url, /* window characteristics */ bw->sel = selection_create(bw); bw->refresh_interval = -1; + bw->reformat_pending = false; bw->drag_type = DRAGGING_NONE; + bw->scale = (float) option_scale / 100.0; bw->browser_window_type = BROWSER_WINDOW_NORMAL; bw->scrolling = SCROLLING_YES; bw->border = true; @@ -961,7 +966,7 @@ void browser_window_reformat(struct browser_window *bw, int width, int height) if (!c) return; - content_reformat(c, width, height); + content_reformat(c, width / bw->scale, height / bw->scale); } @@ -986,6 +991,20 @@ void browser_window_set_scale(struct browser_window *bw, float scale, bool all) void browser_window_set_scale_internal(struct browser_window *bw, float scale) { int i; + struct content *c; + + if (bw->scale == scale) + return; + bw->scale = scale; + c = bw->current_content; + if (c) { + if (!content_can_reformat(c)) { + browser_window_update(bw, false); + } else { + bw->reformat_pending = true; + browser_reformat_pending = true; + } + } gui_window_set_scale(bw->window, scale); |