diff options
Diffstat (limited to 'WebCore/page/FocusController.cpp')
-rw-r--r-- | WebCore/page/FocusController.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/WebCore/page/FocusController.cpp b/WebCore/page/FocusController.cpp index 5e78c7d..bdd3151 100644 --- a/WebCore/page/FocusController.cpp +++ b/WebCore/page/FocusController.cpp @@ -38,8 +38,8 @@ #include "EventNames.h" #include "ExceptionCode.h" #include "Frame.h" -#include "FrameView.h" #include "FrameTree.h" +#include "FrameView.h" #include "HTMLFrameOwnerElement.h" #include "HTMLNames.h" #include "KeyboardEvent.h" @@ -72,14 +72,17 @@ FocusController::FocusController(Page* page) : m_page(page) , m_isActive(false) , m_isFocused(false) + , m_isChangingFocusedFrame(false) { } void FocusController::setFocusedFrame(PassRefPtr<Frame> frame) { - if (m_focusedFrame == frame) + if (m_focusedFrame == frame || m_isChangingFocusedFrame) return; + m_isChangingFocusedFrame = true; + RefPtr<Frame> oldFrame = m_focusedFrame; RefPtr<Frame> newFrame = frame; @@ -95,6 +98,8 @@ void FocusController::setFocusedFrame(PassRefPtr<Frame> frame) newFrame->selection()->setFocused(true); newFrame->document()->dispatchWindowEvent(Event::create(eventNames().focusEvent, false, false)); } + + m_isChangingFocusedFrame = false; } Frame* FocusController::focusedOrMainFrame() |