diff options
Diffstat (limited to 'WebCore/page/FocusController.cpp')
-rw-r--r-- | WebCore/page/FocusController.cpp | 20 |
1 files changed, 7 insertions, 13 deletions
diff --git a/WebCore/page/FocusController.cpp b/WebCore/page/FocusController.cpp index 9b30362..9760b3c 100644 --- a/WebCore/page/FocusController.cpp +++ b/WebCore/page/FocusController.cpp @@ -90,8 +90,6 @@ static Node* deepFocusableNode(FocusDirection direction, Node* node, KeyboardEve break; Document* document = owner->contentFrame()->document(); - if (!document) - break; node = (direction == FocusDirectionForward) ? document->nextFocusableNode(0, event) @@ -115,8 +113,6 @@ bool FocusController::advanceFocus(FocusDirection direction, KeyboardEvent* even Frame* frame = focusedOrMainFrame(); ASSERT(frame); Document* document = frame->document(); - if (!document) - return false; Node* node = (direction == FocusDirectionForward) ? document->nextFocusableNode(document->focusedNode(), event) @@ -129,8 +125,6 @@ bool FocusController::advanceFocus(FocusDirection direction, KeyboardEvent* even break; Document* parentDocument = parentFrame->document(); - if (!parentDocument) - break; HTMLFrameOwnerElement* owner = frame->ownerElement(); if (!owner) @@ -155,10 +149,10 @@ bool FocusController::advanceFocus(FocusDirection direction, KeyboardEvent* even } // Chrome doesn't want focus, so we should wrap focus. - if (Document* d = m_page->mainFrame()->document()) - node = (direction == FocusDirectionForward) - ? d->nextFocusableNode(0, event) - : d->previousFocusableNode(0, event); + Document* d = m_page->mainFrame()->document(); + node = (direction == FocusDirectionForward) + ? d->nextFocusableNode(0, event) + : d->previousFocusableNode(0, event); node = deepFocusableNode(direction, node, event); @@ -266,9 +260,9 @@ bool FocusController::setFocusedNode(Node* node, PassRefPtr<Frame> newFocusedFra m_page->editorClient()->setInputMethodState(false); return true; } - - RefPtr<Document> newDocument = node ? node->document() : 0; - + + RefPtr<Document> newDocument = node->document(); + if (newDocument && newDocument->focusedNode() == node) { m_page->editorClient()->setInputMethodState(node->shouldUseInputMethod()); return true; |