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.
This commit is contained in:
Michael Drake 2018-04-14 17:00:18 +01:00
parent 3c3685eb96
commit a72771f8eb

View File

@ -1405,6 +1405,10 @@ browser_window_callback(hlcache_handle *c,
bw->current_content = c; bw->current_content = c;
bw->loading_content = NULL; 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 */ /* history */
if (bw->history_add && bw->history) { if (bw->history_add && bw->history) {
nsurl *url = hlcache_handle_get_url(c); 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 * all newly visited URLs. With the history_add call
* after, we only leak the thumbnails when urldb does * after, we only leak the thumbnails when urldb does
* not add the URL. * 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); 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); browser_window_remove_caret(bw, false);
if (bw->window != NULL) { if (bw->window != NULL) {