From a72771f8ebdb7ec5474dcb039c92661d97dd4678 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 14 Apr 2018 17:00:18 +0100 Subject: Browser: Don't add history entry until after reformat. Adding a history entry causes content_redraw() for the thumbnail. But we can't content_redraw() until after content_reformat(). Otherwise we get HTML redraw before HTML layout has happened. --- desktop/browser.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/desktop/browser.c b/desktop/browser.c index 19cfebb99..88d78ba95 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -1405,6 +1405,10 @@ browser_window_callback(hlcache_handle *c, bw->current_content = c; bw->loading_content = NULL; + /* Format the new content to the correct dimensions */ + browser_window_get_dimensions(bw, &width, &height, true); + content_reformat(c, false, width, height); + /* history */ if (bw->history_add && bw->history) { nsurl *url = hlcache_handle_get_url(c); @@ -1437,14 +1441,14 @@ browser_window_callback(hlcache_handle *c, * all newly visited URLs. With the history_add call * after, we only leak the thumbnails when urldb does * not add the URL. + * + * Also, since browser_window_history_add can create + * a thumbnail (content_redraw), we need to do it after + * content_reformat. */ browser_window_history_add(bw, c, bw->frag_id); } - /* Format the new content to the correct dimensions */ - browser_window_get_dimensions(bw, &width, &height, true); - content_reformat(c, false, width, height); - browser_window_remove_caret(bw, false); if (bw->window != NULL) { -- cgit v1.2.3