summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLFrameElementBase.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/HTMLFrameElementBase.cpp')
-rw-r--r--WebCore/html/HTMLFrameElementBase.cpp8
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