RESOLVED FIXED 107410
Should update compositing state when an out-of-view fixed position element becomes in-view
https://bugs.webkit.org/show_bug.cgi?id=107410
Summary Should update compositing state when an out-of-view fixed position element be...
Kevin M. Dean
Reported 2013-01-20 20:15:04 PST
When I load PHPMyAdmin, it uses a frameset with a database list on the left and menu and content on the right. The menu in the right frame at the top is in a fixed position div. When I first open PHPMyAdmin the menu is there, but once I click on databases in the left frame, the right frame loads a new page and the fixed position div no longer displays. The white block of space also scrolls with the page so it's not even fixed positioned. If I open Web Inspector and turn off the css for positon: fixed;, the menu then appears and I can toggle fixed back on, causing it to work as expected and it remains until I load new content into the frame and then it's gone again. If I load the right frame pages into a new tab or window, the fixed div appears fine. It's only when loading into a frameset that the problem is occurring.
Attachments
Patch (5.62 KB, patch)
2013-01-23 12:40 PST, Xianzhu Wang
no flags
Patch (5.97 KB, patch)
2013-01-23 13:40 PST, Xianzhu Wang
no flags
Alexey Proskuryakov
Comment 1 2013-01-21 10:21:10 PST
Confirmed with <http://demo.phpmyadmin.net/STABLE/> (login:root, empty password). I'm getting a blank menu bar even on initial load.
Alexey Proskuryakov
Comment 2 2013-01-21 10:21:24 PST
Simon Fraser (smfr)
Comment 3 2013-01-21 11:28:01 PST
Tried to regress this but demo.phpmyadmin.net is way too slow.
Simon Fraser (smfr)
Comment 4 2013-01-21 11:55:02 PST
This is the only likely cause in that range: http://trac.webkit.org/changeset/139461
Xianzhu Wang
Comment 5 2013-01-23 10:52:50 PST
Verified on Chromium ToT with "--enable-fixed-position-creates-stacking-context --enable-fixed-position-compositing".
Xianzhu Wang
Comment 6 2013-01-23 12:34:54 PST
Just tested without http://trac.webkit.org/changeset/139461 and the bug still existed, so this seems not a recent regression. When a non-compositing page contains some not-composited fixed position element because of bounds out-of-view, when the element changes position and RenderLayerCompositor::updateCompositingLayers() is called, the function may return early because of "if (!m_reevaluateCompositingAfterLayout && !m_compositing)" without updating the compositing layers. Should set m_reevaluateCompositingAfterLayout when a fixed position element is not composited because of bounds out-of-view.
Xianzhu Wang
Comment 7 2013-01-23 12:40:22 PST
Xianzhu Wang
Comment 8 2013-01-23 13:30:02 PST
Comment on attachment 184286 [details] Patch Sorry for the wrong version of the expected file.
Xianzhu Wang
Comment 9 2013-01-23 13:40:41 PST
WebKit Review Bot
Comment 10 2013-01-23 14:26:19 PST
Comment on attachment 184301 [details] Patch Clearing flags on attachment: 184301 Committed r140593: <http://trac.webkit.org/changeset/140593>
WebKit Review Bot
Comment 11 2013-01-23 14:26:23 PST
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.