diff options
Diffstat (limited to 'WebCore/html/HTMLFrameElementBase.cpp')
-rw-r--r-- | WebCore/html/HTMLFrameElementBase.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/WebCore/html/HTMLFrameElementBase.cpp b/WebCore/html/HTMLFrameElementBase.cpp index 76f3ed4..c30b74f 100644 --- a/WebCore/html/HTMLFrameElementBase.cpp +++ b/WebCore/html/HTMLFrameElementBase.cpp @@ -242,8 +242,12 @@ bool HTMLFrameElementBase::supportsFocus() const void HTMLFrameElementBase::setFocus(bool received) { HTMLFrameOwnerElement::setFocus(received); - if (Page* page = document()->page()) - page->focusController()->setFocusedFrame(received ? contentFrame() : 0); + if (Page* page = document()->page()) { + if (received) + page->focusController()->setFocusedFrame(contentFrame()); + else if (page->focusController()->focusedFrame() == contentFrame()) // Focus may have already been given to another frame, don't take it away. + page->focusController()->setFocusedFrame(0); + } } bool HTMLFrameElementBase::isURLAttribute(Attribute *attr) const |