diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-01 10:36:58 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-01 10:36:58 +0200 |
commit | b1e9e47fa11f608ae16bc07f97a2acf95bf80272 (patch) | |
tree | c88c45e80c9c44506e7cdf9a3bb39ebf82a8cd5b /Source/WebCore/page/DOMWindow.cpp | |
parent | be01689f43cf6882cf670d33df49ead1f570c53a (diff) | |
download | qtwebkit-b1e9e47fa11f608ae16bc07f97a2acf95bf80272.tar.gz |
Imported WebKit commit 499c84c99aa98e9870fa7eaa57db476c6d160d46 (http://svn.webkit.org/repository/webkit/trunk@119200)
Weekly update :). Particularly relevant changes for Qt are the use of the WebCore image decoders and direct usage
of libpng/libjpeg if available in the system.
Diffstat (limited to 'Source/WebCore/page/DOMWindow.cpp')
-rw-r--r-- | Source/WebCore/page/DOMWindow.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/WebCore/page/DOMWindow.cpp b/Source/WebCore/page/DOMWindow.cpp index 400270b07..86c12126a 100644 --- a/Source/WebCore/page/DOMWindow.cpp +++ b/Source/WebCore/page/DOMWindow.cpp @@ -95,6 +95,7 @@ #include "SuddenTermination.h" #include "WebKitPoint.h" #include "WindowFeatures.h" +#include "WindowFocusAllowedIndicator.h" #include <algorithm> #include <wtf/CurrentTime.h> #include <wtf/MainThread.h> @@ -899,7 +900,7 @@ Element* DOMWindow::frameElement() const return m_frame->ownerElement(); } -void DOMWindow::focus() +void DOMWindow::focus(ScriptExecutionContext* context) { if (!m_frame) return; @@ -908,8 +909,16 @@ void DOMWindow::focus() if (!page) return; + bool allowFocus = WindowFocusAllowedIndicator::windowFocusAllowed() || !m_frame->settings()->windowFocusRestricted(); + if (context) { + ASSERT(isMainThread()); + Document* activeDocument = static_cast<Document*>(context); + if (opener() && activeDocument->domWindow() == opener()) + allowFocus = true; + } + // If we're a top level window, bring the window to the front. - if (m_frame == page->mainFrame()) + if (m_frame == page->mainFrame() && allowFocus) page->chrome()->focus(); if (!m_frame) @@ -920,6 +929,7 @@ void DOMWindow::focus() void DOMWindow::blur() { + if (!m_frame) return; @@ -927,6 +937,9 @@ void DOMWindow::blur() if (!page) return; + if (m_frame->settings()->windowFocusRestricted()) + return; + if (m_frame != page->mainFrame()) return; |