| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv
ed. |
| 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) | 3 * Copyright (C) 2006 Alexey Proskuryakov (ap@webkit.org) |
| 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) | 4 * Copyright (C) 2012 Digia Plc. and/or its subsidiary(-ies) |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 1731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1742 | 1742 |
| 1743 | 1743 |
| 1744 bool EventHandler::dispatchDragEvent(const AtomicString& eventType, Node* dragTa
rget, const PlatformMouseEvent& event, Clipboard* clipboard) | 1744 bool EventHandler::dispatchDragEvent(const AtomicString& eventType, Node* dragTa
rget, const PlatformMouseEvent& event, Clipboard* clipboard) |
| 1745 { | 1745 { |
| 1746 FrameView* view = m_frame->view(); | 1746 FrameView* view = m_frame->view(); |
| 1747 | 1747 |
| 1748 // FIXME: We might want to dispatch a dragleave even if the view is gone. | 1748 // FIXME: We might want to dispatch a dragleave even if the view is gone. |
| 1749 if (!view) | 1749 if (!view) |
| 1750 return false; | 1750 return false; |
| 1751 | 1751 |
| 1752 RefPtr<MouseEvent> me = MouseEvent::create(eventType, | 1752 RefPtrWillBeRawPtr<MouseEvent> me = MouseEvent::create(eventType, |
| 1753 true, true, m_frame->document()->domWindow(), | 1753 true, true, m_frame->document()->domWindow(), |
| 1754 0, event.globalPosition().x(), event.globalPosition().y(), event.positio
n().x(), event.position().y(), | 1754 0, event.globalPosition().x(), event.globalPosition().y(), event.positio
n().x(), event.position().y(), |
| 1755 event.movementDelta().x(), event.movementDelta().y(), | 1755 event.movementDelta().x(), event.movementDelta().y(), |
| 1756 event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), | 1756 event.ctrlKey(), event.altKey(), event.shiftKey(), event.metaKey(), |
| 1757 0, nullptr, clipboard); | 1757 0, nullptr, clipboard); |
| 1758 | 1758 |
| 1759 dragTarget->dispatchEvent(me.get(), IGNORE_EXCEPTION); | 1759 dragTarget->dispatchEvent(me.get(), IGNORE_EXCEPTION); |
| 1760 return me->defaultPrevented(); | 1760 return me->defaultPrevented(); |
| 1761 } | 1761 } |
| 1762 | 1762 |
| (...skipping 1354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3117 if (initialKeyEvent.type() == PlatformEvent::KeyDown) | 3117 if (initialKeyEvent.type() == PlatformEvent::KeyDown) |
| 3118 matchedAnAccessKey = handleAccessKey(initialKeyEvent); | 3118 matchedAnAccessKey = handleAccessKey(initialKeyEvent); |
| 3119 | 3119 |
| 3120 // FIXME: it would be fair to let an input method handle KeyUp events before
DOM dispatch. | 3120 // FIXME: it would be fair to let an input method handle KeyUp events before
DOM dispatch. |
| 3121 if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type()
== PlatformEvent::Char) | 3121 if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type()
== PlatformEvent::Char) |
| 3122 return !node->dispatchKeyEvent(initialKeyEvent); | 3122 return !node->dispatchKeyEvent(initialKeyEvent); |
| 3123 | 3123 |
| 3124 PlatformKeyboardEvent keyDownEvent = initialKeyEvent; | 3124 PlatformKeyboardEvent keyDownEvent = initialKeyEvent; |
| 3125 if (keyDownEvent.type() != PlatformEvent::RawKeyDown) | 3125 if (keyDownEvent.type() != PlatformEvent::RawKeyDown) |
| 3126 keyDownEvent.disambiguateKeyDownEvent(PlatformEvent::RawKeyDown); | 3126 keyDownEvent.disambiguateKeyDownEvent(PlatformEvent::RawKeyDown); |
| 3127 RefPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEvent, m_frame-
>document()->domWindow()); | 3127 RefPtrWillBeRawPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEve
nt, m_frame->document()->domWindow()); |
| 3128 if (matchedAnAccessKey) | 3128 if (matchedAnAccessKey) |
| 3129 keydown->setDefaultPrevented(true); | 3129 keydown->setDefaultPrevented(true); |
| 3130 keydown->setTarget(node); | 3130 keydown->setTarget(node); |
| 3131 | 3131 |
| 3132 if (initialKeyEvent.type() == PlatformEvent::RawKeyDown) { | 3132 if (initialKeyEvent.type() == PlatformEvent::RawKeyDown) { |
| 3133 node->dispatchEvent(keydown, IGNORE_EXCEPTION); | 3133 node->dispatchEvent(keydown, IGNORE_EXCEPTION); |
| 3134 // If frame changed as a result of keydown dispatch, then return true to
avoid sending a subsequent keypress message to the new frame. | 3134 // If frame changed as a result of keydown dispatch, then return true to
avoid sending a subsequent keypress message to the new frame. |
| 3135 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()
->focusController().focusedOrMainFrame(); | 3135 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()
->focusController().focusedOrMainFrame(); |
| 3136 return keydown->defaultHandled() || keydown->defaultPrevented() || chang
edFocusedFrame; | 3136 return keydown->defaultHandled() || keydown->defaultPrevented() || chang
edFocusedFrame; |
| 3137 } | 3137 } |
| 3138 | 3138 |
| 3139 node->dispatchEvent(keydown, IGNORE_EXCEPTION); | 3139 node->dispatchEvent(keydown, IGNORE_EXCEPTION); |
| 3140 // If frame changed as a result of keydown dispatch, then return early to av
oid sending a subsequent keypress message to the new frame. | 3140 // If frame changed as a result of keydown dispatch, then return early to av
oid sending a subsequent keypress message to the new frame. |
| 3141 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->fo
cusController().focusedOrMainFrame(); | 3141 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->fo
cusController().focusedOrMainFrame(); |
| 3142 bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented(
) || changedFocusedFrame; | 3142 bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented(
) || changedFocusedFrame; |
| 3143 if (keydownResult) | 3143 if (keydownResult) |
| 3144 return keydownResult; | 3144 return keydownResult; |
| 3145 | 3145 |
| 3146 // Focus may have changed during keydown handling, so refetch node. | 3146 // Focus may have changed during keydown handling, so refetch node. |
| 3147 // But if we are dispatching a fake backward compatibility keypress, then we
pretend that the keypress happened on the original node. | 3147 // But if we are dispatching a fake backward compatibility keypress, then we
pretend that the keypress happened on the original node. |
| 3148 node = eventTargetNodeForDocument(m_frame->document()); | 3148 node = eventTargetNodeForDocument(m_frame->document()); |
| 3149 if (!node) | 3149 if (!node) |
| 3150 return false; | 3150 return false; |
| 3151 | 3151 |
| 3152 PlatformKeyboardEvent keyPressEvent = initialKeyEvent; | 3152 PlatformKeyboardEvent keyPressEvent = initialKeyEvent; |
| 3153 keyPressEvent.disambiguateKeyDownEvent(PlatformEvent::Char); | 3153 keyPressEvent.disambiguateKeyDownEvent(PlatformEvent::Char); |
| 3154 if (keyPressEvent.text().isEmpty()) | 3154 if (keyPressEvent.text().isEmpty()) |
| 3155 return keydownResult; | 3155 return keydownResult; |
| 3156 RefPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressEvent, m_fram
e->document()->domWindow()); | 3156 RefPtrWillBeRawPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressE
vent, m_frame->document()->domWindow()); |
| 3157 keypress->setTarget(node); | 3157 keypress->setTarget(node); |
| 3158 if (keydownResult) | 3158 if (keydownResult) |
| 3159 keypress->setDefaultPrevented(true); | 3159 keypress->setDefaultPrevented(true); |
| 3160 node->dispatchEvent(keypress, IGNORE_EXCEPTION); | 3160 node->dispatchEvent(keypress, IGNORE_EXCEPTION); |
| 3161 | 3161 |
| 3162 return keydownResult || keypress->defaultPrevented() || keypress->defaultHan
dled(); | 3162 return keydownResult || keypress->defaultPrevented() || keypress->defaultHan
dled(); |
| 3163 } | 3163 } |
| 3164 | 3164 |
| 3165 static FocusType focusDirectionForKey(const AtomicString& keyIdentifier) | 3165 static FocusType focusDirectionForKey(const AtomicString& keyIdentifier) |
| 3166 { | 3166 { |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3398 return false; | 3398 return false; |
| 3399 | 3399 |
| 3400 EventTarget* target; | 3400 EventTarget* target; |
| 3401 if (underlyingEvent) | 3401 if (underlyingEvent) |
| 3402 target = underlyingEvent->target(); | 3402 target = underlyingEvent->target(); |
| 3403 else | 3403 else |
| 3404 target = eventTargetNodeForDocument(m_frame->document()); | 3404 target = eventTargetNodeForDocument(m_frame->document()); |
| 3405 if (!target) | 3405 if (!target) |
| 3406 return false; | 3406 return false; |
| 3407 | 3407 |
| 3408 RefPtr<TextEvent> event = TextEvent::create(m_frame->domWindow(), text, inpu
tType); | 3408 RefPtrWillBeRawPtr<TextEvent> event = TextEvent::create(m_frame->domWindow()
, text, inputType); |
| 3409 event->setUnderlyingEvent(underlyingEvent); | 3409 event->setUnderlyingEvent(underlyingEvent); |
| 3410 | 3410 |
| 3411 target->dispatchEvent(event, IGNORE_EXCEPTION); | 3411 target->dispatchEvent(event, IGNORE_EXCEPTION); |
| 3412 return event->defaultHandled(); | 3412 return event->defaultHandled(); |
| 3413 } | 3413 } |
| 3414 | 3414 |
| 3415 void EventHandler::defaultTextInputEventHandler(TextEvent* event) | 3415 void EventHandler::defaultTextInputEventHandler(TextEvent* event) |
| 3416 { | 3416 { |
| 3417 if (m_frame->editor().handleTextEvent(event)) | 3417 if (m_frame->editor().handleTextEvent(event)) |
| 3418 event->setDefaultHandled(); | 3418 event->setDefaultHandled(); |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3773 bool isTouchCancelEvent = (state == PlatformTouchPoint::TouchCancelled); | 3773 bool isTouchCancelEvent = (state == PlatformTouchPoint::TouchCancelled); |
| 3774 RefPtrWillBeRawPtr<TouchList>& effectiveTouches(isTouchCancelEvent ? emp
tyList : touches); | 3774 RefPtrWillBeRawPtr<TouchList>& effectiveTouches(isTouchCancelEvent ? emp
tyList : touches); |
| 3775 const AtomicString& stateName(eventNameForTouchPointState(static_cast<Pl
atformTouchPoint::State>(state))); | 3775 const AtomicString& stateName(eventNameForTouchPointState(static_cast<Pl
atformTouchPoint::State>(state))); |
| 3776 const EventTargetSet& targetsForState = changedTouches[state].m_targets; | 3776 const EventTargetSet& targetsForState = changedTouches[state].m_targets; |
| 3777 | 3777 |
| 3778 for (EventTargetSet::const_iterator it = targetsForState.begin(); it !=
targetsForState.end(); ++it) { | 3778 for (EventTargetSet::const_iterator it = targetsForState.begin(); it !=
targetsForState.end(); ++it) { |
| 3779 EventTarget* touchEventTarget = it->get(); | 3779 EventTarget* touchEventTarget = it->get(); |
| 3780 RefPtrWillBeRawPtr<TouchList> targetTouches(isTouchCancelEvent ? emp
tyList.get() : touchesByTarget.get(touchEventTarget)); | 3780 RefPtrWillBeRawPtr<TouchList> targetTouches(isTouchCancelEvent ? emp
tyList.get() : touchesByTarget.get(touchEventTarget)); |
| 3781 ASSERT(targetTouches); | 3781 ASSERT(targetTouches); |
| 3782 | 3782 |
| 3783 RefPtr<TouchEvent> touchEvent = | 3783 RefPtrWillBeRawPtr<TouchEvent> touchEvent = |
| 3784 TouchEvent::create(effectiveTouches.get(), targetTouches.get(),
changedTouches[state].m_touches.get(), | 3784 TouchEvent::create(effectiveTouches.get(), targetTouches.get(),
changedTouches[state].m_touches.get(), |
| 3785 stateName, touchEventTarget->toNode()->document().domWindow(
), | 3785 stateName, touchEventTarget->toNode()->document().domWindow(
), |
| 3786 0, 0, 0, 0, event.ctrlKey(), event.altKey(), event.shiftKey(
), event.metaKey()); | 3786 0, 0, 0, 0, event.ctrlKey(), event.altKey(), event.shiftKey(
), event.metaKey()); |
| 3787 touchEventTarget->toNode()->dispatchTouchEvent(touchEvent.get()); | 3787 touchEventTarget->toNode()->dispatchTouchEvent(touchEvent.get()); |
| 3788 swallowedEvent = swallowedEvent || touchEvent->defaultPrevented() ||
touchEvent->defaultHandled(); | 3788 swallowedEvent = swallowedEvent || touchEvent->defaultPrevented() ||
touchEvent->defaultHandled(); |
| 3789 } | 3789 } |
| 3790 } | 3790 } |
| 3791 | 3791 |
| 3792 return swallowedEvent; | 3792 return swallowedEvent; |
| 3793 } | 3793 } |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4038 unsigned EventHandler::accessKeyModifiers() | 4038 unsigned EventHandler::accessKeyModifiers() |
| 4039 { | 4039 { |
| 4040 #if OS(MACOSX) | 4040 #if OS(MACOSX) |
| 4041 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 4041 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
| 4042 #else | 4042 #else |
| 4043 return PlatformEvent::AltKey; | 4043 return PlatformEvent::AltKey; |
| 4044 #endif | 4044 #endif |
| 4045 } | 4045 } |
| 4046 | 4046 |
| 4047 } // namespace WebCore | 4047 } // namespace WebCore |
| OLD | NEW |