GNOME Bugzilla – Bug 787486
don't zoom before switching to the next page
Last modified: 2018-04-26 17:37:25 UTC
From: 積丹尼 Dan Jacobson <jidanni@jidanni.org> --text follows this line-- On slower systems (where we would use epiphany more often than other browsers of course), one notices that when clicking hyperlinks, if there will be a zoom level difference between the page we are viewing, and the page we are about to go to, epiphany very disturbingly first zooms, then switches to the new page. You won't notice it unless you use a rather slow system. Also the second time you do it the destination page is already loaded in memory so you won't notice it either. Anyway the result is we see the first page suddenly zoomed for no reason, as it is going to be replaced by the second page anyway, and then we see a white screen as the second page loads, and then we finally see the second page. Anyway please don't zoom first. How to reproduce: Have a .html file with a link to a site which you usually browse zoomed (which epiphany remembers zoom the level of.) And then after rebooting your computer click that link. If you want to zoom, do it at the beginning of the white phase.
Ignore the "From: 積丹尼 Dan Jacobson <jidanni@jidanni.org> --text follows this line--" above.
Unfortunately it's not currently possible to fix this because we don't have callbacks for render events. That's going to require some plumbing in WebKit. Now, we *can* significantly shrink the window of time that that the zoom is off by changing the zoom in response to the LOAD_COMMITTED event instead of the LOAD_STARTED event. I'm going to attach a patch for that, and you can see if you like that better or not. But it's still not going to be quite right. It seems to work in general, but you can still see the zoom changing when restoring from page cache (which often occurs when using the back/forward buttons) because in that case the page is rendered before the load is committed. (Page cache makes everything wonky.)
Created attachment 359449 [details] [review] web-view: Change zoom in LOAD_COMMITTED Instead of changing zoom in LOAD_STARTED, wait for LOAD_COMMITTED so as to shrink the amount of time that the zoom is wrong for. This isn't a proper fix as WebKit's load events don't indicate when rendering has started, and that would be the only proper time to change the zoom.
OK. I'm sure it will look much better when it hits Debian. So I'll close it for now. Thanks.
Attachment 359449 [details] pushed as 4f94f86 - web-view: Change zoom in LOAD_COMMITTED