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 1358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3121 if (initialKeyEvent.type() == PlatformEvent::KeyDown) | 3121 if (initialKeyEvent.type() == PlatformEvent::KeyDown) |
3122 matchedAnAccessKey = handleAccessKey(initialKeyEvent); | 3122 matchedAnAccessKey = handleAccessKey(initialKeyEvent); |
3123 | 3123 |
3124 // FIXME: it would be fair to let an input method handle KeyUp events before
DOM dispatch. | 3124 // FIXME: it would be fair to let an input method handle KeyUp events before
DOM dispatch. |
3125 if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type()
== PlatformEvent::Char) | 3125 if (initialKeyEvent.type() == PlatformEvent::KeyUp || initialKeyEvent.type()
== PlatformEvent::Char) |
3126 return !node->dispatchKeyEvent(initialKeyEvent); | 3126 return !node->dispatchKeyEvent(initialKeyEvent); |
3127 | 3127 |
3128 PlatformKeyboardEvent keyDownEvent = initialKeyEvent; | 3128 PlatformKeyboardEvent keyDownEvent = initialKeyEvent; |
3129 if (keyDownEvent.type() != PlatformEvent::RawKeyDown) | 3129 if (keyDownEvent.type() != PlatformEvent::RawKeyDown) |
3130 keyDownEvent.disambiguateKeyDownEvent(PlatformEvent::RawKeyDown); | 3130 keyDownEvent.disambiguateKeyDownEvent(PlatformEvent::RawKeyDown); |
3131 RefPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEvent, m_frame-
>document()->domWindow()); | 3131 RefPtrWillBeRawPtr<KeyboardEvent> keydown = KeyboardEvent::create(keyDownEve
nt, m_frame->document()->domWindow()); |
3132 if (matchedAnAccessKey) | 3132 if (matchedAnAccessKey) |
3133 keydown->setDefaultPrevented(true); | 3133 keydown->setDefaultPrevented(true); |
3134 keydown->setTarget(node); | 3134 keydown->setTarget(node); |
3135 | 3135 |
3136 if (initialKeyEvent.type() == PlatformEvent::RawKeyDown) { | 3136 if (initialKeyEvent.type() == PlatformEvent::RawKeyDown) { |
3137 node->dispatchEvent(keydown, IGNORE_EXCEPTION); | 3137 node->dispatchEvent(keydown, IGNORE_EXCEPTION); |
3138 // If frame changed as a result of keydown dispatch, then return true to
avoid sending a subsequent keypress message to the new frame. | 3138 // If frame changed as a result of keydown dispatch, then return true to
avoid sending a subsequent keypress message to the new frame. |
3139 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()
->focusController().focusedOrMainFrame(); | 3139 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()
->focusController().focusedOrMainFrame(); |
3140 return keydown->defaultHandled() || keydown->defaultPrevented() || chang
edFocusedFrame; | 3140 return keydown->defaultHandled() || keydown->defaultPrevented() || chang
edFocusedFrame; |
3141 } | 3141 } |
3142 | 3142 |
3143 node->dispatchEvent(keydown, IGNORE_EXCEPTION); | 3143 node->dispatchEvent(keydown, IGNORE_EXCEPTION); |
3144 // If frame changed as a result of keydown dispatch, then return early to av
oid sending a subsequent keypress message to the new frame. | 3144 // If frame changed as a result of keydown dispatch, then return early to av
oid sending a subsequent keypress message to the new frame. |
3145 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->fo
cusController().focusedOrMainFrame(); | 3145 bool changedFocusedFrame = m_frame->page() && m_frame != m_frame->page()->fo
cusController().focusedOrMainFrame(); |
3146 bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented(
) || changedFocusedFrame; | 3146 bool keydownResult = keydown->defaultHandled() || keydown->defaultPrevented(
) || changedFocusedFrame; |
3147 if (keydownResult) | 3147 if (keydownResult) |
3148 return keydownResult; | 3148 return keydownResult; |
3149 | 3149 |
3150 // Focus may have changed during keydown handling, so refetch node. | 3150 // Focus may have changed during keydown handling, so refetch node. |
3151 // But if we are dispatching a fake backward compatibility keypress, then we
pretend that the keypress happened on the original node. | 3151 // But if we are dispatching a fake backward compatibility keypress, then we
pretend that the keypress happened on the original node. |
3152 node = eventTargetNodeForDocument(m_frame->document()); | 3152 node = eventTargetNodeForDocument(m_frame->document()); |
3153 if (!node) | 3153 if (!node) |
3154 return false; | 3154 return false; |
3155 | 3155 |
3156 PlatformKeyboardEvent keyPressEvent = initialKeyEvent; | 3156 PlatformKeyboardEvent keyPressEvent = initialKeyEvent; |
3157 keyPressEvent.disambiguateKeyDownEvent(PlatformEvent::Char); | 3157 keyPressEvent.disambiguateKeyDownEvent(PlatformEvent::Char); |
3158 if (keyPressEvent.text().isEmpty()) | 3158 if (keyPressEvent.text().isEmpty()) |
3159 return keydownResult; | 3159 return keydownResult; |
3160 RefPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressEvent, m_fram
e->document()->domWindow()); | 3160 RefPtrWillBeRawPtr<KeyboardEvent> keypress = KeyboardEvent::create(keyPressE
vent, m_frame->document()->domWindow()); |
3161 keypress->setTarget(node); | 3161 keypress->setTarget(node); |
3162 if (keydownResult) | 3162 if (keydownResult) |
3163 keypress->setDefaultPrevented(true); | 3163 keypress->setDefaultPrevented(true); |
3164 node->dispatchEvent(keypress, IGNORE_EXCEPTION); | 3164 node->dispatchEvent(keypress, IGNORE_EXCEPTION); |
3165 | 3165 |
3166 return keydownResult || keypress->defaultPrevented() || keypress->defaultHan
dled(); | 3166 return keydownResult || keypress->defaultPrevented() || keypress->defaultHan
dled(); |
3167 } | 3167 } |
3168 | 3168 |
3169 static FocusType focusDirectionForKey(const AtomicString& keyIdentifier) | 3169 static FocusType focusDirectionForKey(const AtomicString& keyIdentifier) |
3170 { | 3170 { |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3402 return false; | 3402 return false; |
3403 | 3403 |
3404 EventTarget* target; | 3404 EventTarget* target; |
3405 if (underlyingEvent) | 3405 if (underlyingEvent) |
3406 target = underlyingEvent->target(); | 3406 target = underlyingEvent->target(); |
3407 else | 3407 else |
3408 target = eventTargetNodeForDocument(m_frame->document()); | 3408 target = eventTargetNodeForDocument(m_frame->document()); |
3409 if (!target) | 3409 if (!target) |
3410 return false; | 3410 return false; |
3411 | 3411 |
3412 RefPtr<TextEvent> event = TextEvent::create(m_frame->domWindow(), text, inpu
tType); | 3412 RefPtrWillBeRawPtr<TextEvent> event = TextEvent::create(m_frame->domWindow()
, text, inputType); |
3413 event->setUnderlyingEvent(underlyingEvent); | 3413 event->setUnderlyingEvent(underlyingEvent); |
3414 | 3414 |
3415 target->dispatchEvent(event, IGNORE_EXCEPTION); | 3415 target->dispatchEvent(event, IGNORE_EXCEPTION); |
3416 return event->defaultHandled(); | 3416 return event->defaultHandled(); |
3417 } | 3417 } |
3418 | 3418 |
3419 void EventHandler::defaultTextInputEventHandler(TextEvent* event) | 3419 void EventHandler::defaultTextInputEventHandler(TextEvent* event) |
3420 { | 3420 { |
3421 if (m_frame->editor().handleTextEvent(event)) | 3421 if (m_frame->editor().handleTextEvent(event)) |
3422 event->setDefaultHandled(); | 3422 event->setDefaultHandled(); |
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3777 bool isTouchCancelEvent = (state == PlatformTouchPoint::TouchCancelled); | 3777 bool isTouchCancelEvent = (state == PlatformTouchPoint::TouchCancelled); |
3778 RefPtrWillBeRawPtr<TouchList>& effectiveTouches(isTouchCancelEvent ? emp
tyList : touches); | 3778 RefPtrWillBeRawPtr<TouchList>& effectiveTouches(isTouchCancelEvent ? emp
tyList : touches); |
3779 const AtomicString& stateName(eventNameForTouchPointState(static_cast<Pl
atformTouchPoint::State>(state))); | 3779 const AtomicString& stateName(eventNameForTouchPointState(static_cast<Pl
atformTouchPoint::State>(state))); |
3780 const EventTargetSet& targetsForState = changedTouches[state].m_targets; | 3780 const EventTargetSet& targetsForState = changedTouches[state].m_targets; |
3781 | 3781 |
3782 for (EventTargetSet::const_iterator it = targetsForState.begin(); it !=
targetsForState.end(); ++it) { | 3782 for (EventTargetSet::const_iterator it = targetsForState.begin(); it !=
targetsForState.end(); ++it) { |
3783 EventTarget* touchEventTarget = it->get(); | 3783 EventTarget* touchEventTarget = it->get(); |
3784 RefPtrWillBeRawPtr<TouchList> targetTouches(isTouchCancelEvent ? emp
tyList.get() : touchesByTarget.get(touchEventTarget)); | 3784 RefPtrWillBeRawPtr<TouchList> targetTouches(isTouchCancelEvent ? emp
tyList.get() : touchesByTarget.get(touchEventTarget)); |
3785 ASSERT(targetTouches); | 3785 ASSERT(targetTouches); |
3786 | 3786 |
3787 RefPtr<TouchEvent> touchEvent = | 3787 RefPtrWillBeRawPtr<TouchEvent> touchEvent = |
3788 TouchEvent::create(effectiveTouches.get(), targetTouches.get(),
changedTouches[state].m_touches.get(), | 3788 TouchEvent::create(effectiveTouches.get(), targetTouches.get(),
changedTouches[state].m_touches.get(), |
3789 stateName, touchEventTarget->toNode()->document().domWindow(
), | 3789 stateName, touchEventTarget->toNode()->document().domWindow(
), |
3790 0, 0, 0, 0, event.ctrlKey(), event.altKey(), event.shiftKey(
), event.metaKey()); | 3790 0, 0, 0, 0, event.ctrlKey(), event.altKey(), event.shiftKey(
), event.metaKey()); |
3791 touchEventTarget->toNode()->dispatchTouchEvent(touchEvent.get()); | 3791 touchEventTarget->toNode()->dispatchTouchEvent(touchEvent.get()); |
3792 swallowedEvent = swallowedEvent || touchEvent->defaultPrevented() ||
touchEvent->defaultHandled(); | 3792 swallowedEvent = swallowedEvent || touchEvent->defaultPrevented() ||
touchEvent->defaultHandled(); |
3793 } | 3793 } |
3794 } | 3794 } |
3795 | 3795 |
3796 return swallowedEvent; | 3796 return swallowedEvent; |
3797 } | 3797 } |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4042 unsigned EventHandler::accessKeyModifiers() | 4042 unsigned EventHandler::accessKeyModifiers() |
4043 { | 4043 { |
4044 #if OS(MACOSX) | 4044 #if OS(MACOSX) |
4045 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; | 4045 return PlatformEvent::CtrlKey | PlatformEvent::AltKey; |
4046 #else | 4046 #else |
4047 return PlatformEvent::AltKey; | 4047 return PlatformEvent::AltKey; |
4048 #endif | 4048 #endif |
4049 } | 4049 } |
4050 | 4050 |
4051 } // namespace WebCore | 4051 } // namespace WebCore |
OLD | NEW |