Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index 9a339bd89785e8814b5d0b6361fd02a41df373d4..d39f3d80e60915b55d080e916992ec8cb7d210af 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -939,7 +939,13 @@ HitTestResult EventHandler::hitTestResultAtPoint(const LayoutPoint& point, HitTe |
HitTestResult result(point, padding.height(), padding.width(), padding.height(), padding.width()); |
- if (!m_frame->contentRenderer()) |
+ // RenderView::hitTest causes a layout, and we don't want to hit that until the first |
+ // layout because until then, there is nothing shown on the screen - the user can't |
+ // have intentionally clicked on something belonging to this page. Furthermore, |
+ // mousemove events before the first layout should not lead to a premature layout() |
+ // happening, which could show a flash of white. |
+ // See also the similar code in Document::prepareMouseEvent. |
+ if (!m_frame->contentRenderer() || !m_frame->view() || !m_frame->view()->didFirstLayout()) |
return result; |
// hitTestResultAtPoint is specifically used to hitTest into all frames, thus it always allows child frame content. |