summaryrefslogtreecommitdiff
path: root/desktop/browser.c
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2007-08-07 03:55:18 +0000
committerJames Bursa <james@netsurf-browser.org>2007-08-07 03:55:18 +0000
commit07c54283e364bd66e21fbd659ea0dd469201a747 (patch)
tree17bcc30ded5b29d3c2c769ef9933228168aa69f1 /desktop/browser.c
parent7ec7ba37dbeeee678ec573bcfe0594660fbe5195 (diff)
downloadnetsurf-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.c21
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);