diff options
Diffstat (limited to 'riscos')
-rw-r--r-- | riscos/print.c | 9 | ||||
-rw-r--r-- | riscos/save_draw.c | 6 | ||||
-rw-r--r-- | riscos/window.c | 32 |
3 files changed, 39 insertions, 8 deletions
diff --git a/riscos/print.c b/riscos/print.c index 94f067783..29663f259 100644 --- a/riscos/print.c +++ b/riscos/print.c @@ -469,7 +469,7 @@ void print_cleanup(void) bool print_document(struct gui_window *g, const char *filename) { int left, right, top, bottom, width, height; - int saved_width; + int saved_width, saved_height; int yscroll = 0, sheets = print_max_sheets; struct content *c = g->bw->current_content; const char *error_message; @@ -506,8 +506,9 @@ bool print_document(struct gui_window *g, const char *filename) /* layout the document to the correct width */ saved_width = c->width; + saved_height = c->height; if (c->type == CONTENT_HTML) - layout_document(c, width); + layout_document(c, width, height); /* open printer file */ error = xosfind_openoutw(osfind_NO_PATH | osfind_ERROR_IF_DIR | @@ -645,7 +646,7 @@ bool print_document(struct gui_window *g, const char *filename) /* restore document layout */ if (c->type == CONTENT_HTML) - layout_document(c, saved_width); + layout_document(c, saved_width, saved_height); return true; @@ -663,7 +664,7 @@ error: /* restore document layout */ if (c->type == CONTENT_HTML) - layout_document(c, saved_width); + layout_document(c, saved_width, saved_height); return false; } diff --git a/riscos/save_draw.c b/riscos/save_draw.c index ba4842ca2..46622f0e1 100644 --- a/riscos/save_draw.c +++ b/riscos/save_draw.c @@ -146,7 +146,7 @@ bool save_as_draw(struct content *c, const char *path) memcpy(diagram->source, "NetSurf ", 12); /* recalculate box widths for an A4 page */ - if (!layout_document(c, A4PAGEWIDTH)) { + if (!layout_document(c, A4PAGEWIDTH, A4PAGEWIDTH)) { warn_user("NoMemory", 0); goto draw_save_error; } @@ -185,7 +185,7 @@ bool save_as_draw(struct content *c, const char *path) drawbuf_free(); /* reset layout to current window width */ - if (!layout_document(c, current_width)) { + if (!layout_document(c, current_width, current_width)) { warn_user("NoMemory", 0); return false; } @@ -195,7 +195,7 @@ bool save_as_draw(struct content *c, const char *path) draw_save_error: drawbuf_free(); /* attempt to reflow back on failure */ - (void)layout_document(c, current_width); + (void)layout_document(c, current_width, current_width); return false; } diff --git a/riscos/window.c b/riscos/window.c index 12729853b..3d65abfdc 100644 --- a/riscos/window.c +++ b/riscos/window.c @@ -819,6 +819,32 @@ int gui_window_get_width(struct gui_window *g) /** + * Find the current height of a browser window. + * + * \param g gui_window to measure + * \return height of window + */ + +int gui_window_get_height(struct gui_window *g) +{ + wimp_window_state state; + os_error *error; + + state.w = g->window; + error = xwimp_get_window_state(&state); + if (error) { + LOG(("xwimp_get_window_state: 0x%x: %s", + error->errnum, error->errmess)); + warn_user("WimpError", error->errmess); + return 800; + } + return (state.visible.y1 - state.visible.y0 - (g->toolbar ? + ro_gui_theme_toolbar_full_height(g->toolbar) : 0)) / + 2 / g->option.scale; +} + + +/** * Set the extent of the inside of a browser window. * * \param g gui_window to resize @@ -1878,6 +1904,10 @@ bool ro_gui_window_keypress(struct gui_window *g, int key, bool toolbar) } return true; + case wimp_KEY_CONTROL + wimp_KEY_SHIFT + wimp_KEY_F9: + talloc_report_full(0, stderr); + return true; + case wimp_KEY_CONTROL + wimp_KEY_F9: /* Dump url_store. */ url_store_dump(); return true; @@ -2259,7 +2289,7 @@ void ro_gui_window_process_reformats(void) continue; content_reformat(g->bw->current_content, g->old_width / 2 / g->option.scale, - 1000); + gui_window_get_height(g)); g->reformat_pending = false; } gui_reformat_pending = false; |