Index: Source/core/page/EventHandler.cpp |
diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp |
index f158f9700059c75ffdd95941b30daf35a0f83709..fc4c24b96a17052cb21071c7a20c3bdcfa0da124 100644 |
--- a/Source/core/page/EventHandler.cpp |
+++ b/Source/core/page/EventHandler.cpp |
@@ -926,7 +926,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. |