diff options
Diffstat (limited to 'WebCore/page/FocusController.cpp')
-rw-r--r-- | WebCore/page/FocusController.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/WebCore/page/FocusController.cpp b/WebCore/page/FocusController.cpp index 2c2c447..a87d6a6 100644 --- a/WebCore/page/FocusController.cpp +++ b/WebCore/page/FocusController.cpp @@ -623,8 +623,11 @@ bool FocusController::setFocusedNode(Node* node, PassRefPtr<Frame> newFocusedFra // Setting the focused node can result in losing our last reft to node when JS event handlers fire. RefPtr<Node> protect = node; - if (newDocument) - newDocument->setFocusedNode(node); + if (newDocument) { + bool successfullyFocused = newDocument->setFocusedNode(node); + if (!successfullyFocused) + return false; + } if (newDocument->focusedNode() == node) m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod()); @@ -641,7 +644,7 @@ void FocusController::setActive(bool active) if (FrameView* view = m_page->mainFrame()->view()) { if (!view->platformWidget()) { - view->layoutIfNeededRecursive(); + view->updateLayoutAndStyleIfNeededRecursive(); view->updateControlTints(); } } |