diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-09-10 19:10:20 +0200 |
commit | 284837daa07b29d6a63a748544a90b1f5842ac5c (patch) | |
tree | ecd258180bde91fe741e0cfd2638beb3c6da7e8e /Source/WebCore/page/PointerLockController.cpp | |
parent | 2e2ba8ff45915f40ed3e014101269c175f2a89a0 (diff) | |
download | qtwebkit-284837daa07b29d6a63a748544a90b1f5842ac5c.tar.gz |
Imported WebKit commit 68645295d2e3e09af2c942f092556f06aa5f8b0d (http://svn.webkit.org/repository/webkit/trunk@128073)
New snapshot
Diffstat (limited to 'Source/WebCore/page/PointerLockController.cpp')
-rw-r--r-- | Source/WebCore/page/PointerLockController.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/Source/WebCore/page/PointerLockController.cpp b/Source/WebCore/page/PointerLockController.cpp index ad7960962..ddbb84fd0 100644 --- a/Source/WebCore/page/PointerLockController.cpp +++ b/Source/WebCore/page/PointerLockController.cpp @@ -62,6 +62,7 @@ void PointerLockController::requestPointerLock(Element* target) enqueueEvent(eventNames().webkitpointerlockchangeEvent, target); m_element = target; } else if (m_page->chrome()->client()->requestPointerLock()) { + m_lockPending = true; m_element = target; } else { enqueueEvent(eventNames().webkitpointerlockerrorEvent, target); @@ -79,7 +80,7 @@ void PointerLockController::elementRemoved(Element* element) m_documentOfRemovedElementWhileWaitingForUnlock = m_element->document(); // Set element null immediately to block any future interaction with it // including mouse events received before the unlock completes. - m_element = 0; + clearElement(); requestPointerUnlock(); } } @@ -87,11 +88,16 @@ void PointerLockController::elementRemoved(Element* element) void PointerLockController::documentDetached(Document* document) { if (m_element && m_element->document() == document) { - m_element = 0; + clearElement(); requestPointerUnlock(); } } +bool PointerLockController::lockPending() const +{ + return m_lockPending; +} + Element* PointerLockController::element() const { return m_element.get(); @@ -100,18 +106,19 @@ Element* PointerLockController::element() const void PointerLockController::didAcquirePointerLock() { enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element.get()); + m_lockPending = false; } void PointerLockController::didNotAcquirePointerLock() { enqueueEvent(eventNames().webkitpointerlockerrorEvent, m_element.get()); - m_element = 0; + clearElement(); } void PointerLockController::didLosePointerLock() { enqueueEvent(eventNames().webkitpointerlockchangeEvent, m_element ? m_element->document() : m_documentOfRemovedElementWhileWaitingForUnlock.get()); - m_element = 0; + clearElement(); m_documentOfRemovedElementWhileWaitingForUnlock = 0; } @@ -127,6 +134,12 @@ void PointerLockController::dispatchLockedMouseEvent(const PlatformMouseEvent& e m_element->dispatchMouseEvent(event, eventNames().clickEvent, event.clickCount()); } +void PointerLockController::clearElement() +{ + m_lockPending = false; + m_element = 0; +} + void PointerLockController::enqueueEvent(const AtomicString& type, Element* element) { if (element) |