| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 m_scrollbarGroup->setLastMousePosition(IntPoint(event->x(), event->y()))
; | 706 m_scrollbarGroup->setLastMousePosition(IntPoint(event->x(), event->y()))
; |
| 707 if (event->type() == EventTypeNames::mousemove) | 707 if (event->type() == EventTypeNames::mousemove) |
| 708 m_scrollbarGroup->scrollAnimator()->mouseMovedInContentArea(); | 708 m_scrollbarGroup->scrollAnimator()->mouseMovedInContentArea(); |
| 709 else if (event->type() == EventTypeNames::mouseover) | 709 else if (event->type() == EventTypeNames::mouseover) |
| 710 m_scrollbarGroup->scrollAnimator()->mouseEnteredContentArea(); | 710 m_scrollbarGroup->scrollAnimator()->mouseEnteredContentArea(); |
| 711 else if (event->type() == EventTypeNames::mouseout) | 711 else if (event->type() == EventTypeNames::mouseout) |
| 712 m_scrollbarGroup->scrollAnimator()->mouseExitedContentArea(); | 712 m_scrollbarGroup->scrollAnimator()->mouseExitedContentArea(); |
| 713 } | 713 } |
| 714 | 714 |
| 715 WebCursorInfo cursorInfo; | 715 WebCursorInfo cursorInfo; |
| 716 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 716 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) |
| 717 event->stopPropagation(); | |
| 718 event->setDefaultHandled(); | 717 event->setDefaultHandled(); |
| 719 } | |
| 720 | 718 |
| 721 // A windowless plugin can change the cursor in response to a mouse move | 719 // A windowless plugin can change the cursor in response to a mouse move |
| 722 // event. We need to reflect the changed cursor in the frame view as the | 720 // event. We need to reflect the changed cursor in the frame view as the |
| 723 // mouse is moved in the boundaries of the windowless plugin. | 721 // mouse is moved in the boundaries of the windowless plugin. |
| 724 Page* page = parentView->frame().page(); | 722 Page* page = parentView->frame().page(); |
| 725 if (!page) | 723 if (!page) |
| 726 return; | 724 return; |
| 727 toChromeClientImpl(page->chrome().client()).setCursorForPlugin(cursorInfo); | 725 toChromeClientImpl(page->chrome().client()).setCursorForPlugin(cursorInfo); |
| 728 } | 726 } |
| 729 | 727 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 753 m_webPlugin->handleDragStatusUpdate(dragStatus, dragData, dragOperationMask,
dragLocation, dragScreenLocation); | 751 m_webPlugin->handleDragStatusUpdate(dragStatus, dragData, dragOperationMask,
dragLocation, dragScreenLocation); |
| 754 } | 752 } |
| 755 | 753 |
| 756 void WebPluginContainerImpl::handleWheelEvent(WheelEvent* event) | 754 void WebPluginContainerImpl::handleWheelEvent(WheelEvent* event) |
| 757 { | 755 { |
| 758 WebMouseWheelEventBuilder webEvent(this, m_element->renderer(), *event); | 756 WebMouseWheelEventBuilder webEvent(this, m_element->renderer(), *event); |
| 759 if (webEvent.type == WebInputEvent::Undefined) | 757 if (webEvent.type == WebInputEvent::Undefined) |
| 760 return; | 758 return; |
| 761 | 759 |
| 762 WebCursorInfo cursorInfo; | 760 WebCursorInfo cursorInfo; |
| 763 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 761 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) |
| 764 event->stopPropagation(); | |
| 765 event->setDefaultHandled(); | 762 event->setDefaultHandled(); |
| 766 } | |
| 767 } | 763 } |
| 768 | 764 |
| 769 void WebPluginContainerImpl::handleKeyboardEvent(KeyboardEvent* event) | 765 void WebPluginContainerImpl::handleKeyboardEvent(KeyboardEvent* event) |
| 770 { | 766 { |
| 771 WebKeyboardEventBuilder webEvent(*event); | 767 WebKeyboardEventBuilder webEvent(*event); |
| 772 if (webEvent.type == WebInputEvent::Undefined) | 768 if (webEvent.type == WebInputEvent::Undefined) |
| 773 return; | 769 return; |
| 774 | 770 |
| 775 if (webEvent.type == WebInputEvent::KeyDown) { | 771 if (webEvent.type == WebInputEvent::KeyDown) { |
| 776 #if OS(MACOSX) | 772 #if OS(MACOSX) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 798 webEvent.modifiers |= currentInputEvent->modifiers & | 794 webEvent.modifiers |= currentInputEvent->modifiers & |
| 799 (WebInputEvent::CapsLockOn | WebInputEvent::NumLockOn); | 795 (WebInputEvent::CapsLockOn | WebInputEvent::NumLockOn); |
| 800 } | 796 } |
| 801 | 797 |
| 802 // Give the client a chance to issue edit comamnds. | 798 // Give the client a chance to issue edit comamnds. |
| 803 WebViewImpl* view = WebViewImpl::fromPage(m_element->document().frame()->pag
e()); | 799 WebViewImpl* view = WebViewImpl::fromPage(m_element->document().frame()->pag
e()); |
| 804 if (m_webPlugin->supportsEditCommands() && view->client()) | 800 if (m_webPlugin->supportsEditCommands() && view->client()) |
| 805 view->client()->handleCurrentKeyboardEvent(); | 801 view->client()->handleCurrentKeyboardEvent(); |
| 806 | 802 |
| 807 WebCursorInfo cursorInfo; | 803 WebCursorInfo cursorInfo; |
| 808 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 804 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) |
| 809 event->stopPropagation(); | |
| 810 event->setDefaultHandled(); | 805 event->setDefaultHandled(); |
| 811 } | |
| 812 } | 806 } |
| 813 | 807 |
| 814 void WebPluginContainerImpl::handleTouchEvent(TouchEvent* event) | 808 void WebPluginContainerImpl::handleTouchEvent(TouchEvent* event) |
| 815 { | 809 { |
| 816 switch (m_touchEventRequestType) { | 810 switch (m_touchEventRequestType) { |
| 817 case TouchEventRequestTypeNone: | 811 case TouchEventRequestTypeNone: |
| 818 return; | 812 return; |
| 819 case TouchEventRequestTypeRaw: { | 813 case TouchEventRequestTypeRaw: { |
| 820 WebTouchEventBuilder webEvent(this, m_element->renderer(), *event); | 814 WebTouchEventBuilder webEvent(this, m_element->renderer(), *event); |
| 821 if (webEvent.type == WebInputEvent::Undefined) | 815 if (webEvent.type == WebInputEvent::Undefined) |
| 822 return; | 816 return; |
| 823 | 817 |
| 824 if (event->type() == EventTypeNames::touchstart) | 818 if (event->type() == EventTypeNames::touchstart) |
| 825 focusPlugin(); | 819 focusPlugin(); |
| 826 | 820 |
| 827 WebCursorInfo cursorInfo; | 821 WebCursorInfo cursorInfo; |
| 828 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 822 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) |
| 829 event->stopPropagation(); | |
| 830 event->setDefaultHandled(); | 823 event->setDefaultHandled(); |
| 831 } | |
| 832 // FIXME: Can a plugin change the cursor from a touch-event callback? | 824 // FIXME: Can a plugin change the cursor from a touch-event callback? |
| 833 return; | 825 return; |
| 834 } | 826 } |
| 835 case TouchEventRequestTypeSynthesizedMouse: | 827 case TouchEventRequestTypeSynthesizedMouse: |
| 836 synthesizeMouseEventIfPossible(event); | 828 synthesizeMouseEventIfPossible(event); |
| 837 return; | 829 return; |
| 838 } | 830 } |
| 839 } | 831 } |
| 840 | 832 |
| 841 static inline bool gestureScrollHelper(ScrollbarGroup* scrollbarGroup, ScrollDir
ection positiveDirection, ScrollDirection negativeDirection, float delta) | 833 static inline bool gestureScrollHelper(ScrollbarGroup* scrollbarGroup, ScrollDir
ection positiveDirection, ScrollDirection negativeDirection, float delta) |
| 842 { | 834 { |
| 843 if (!delta) | 835 if (!delta) |
| 844 return false; | 836 return false; |
| 845 float absDelta = delta > 0 ? delta : -delta; | 837 float absDelta = delta > 0 ? delta : -delta; |
| 846 return scrollbarGroup->scroll(delta < 0 ? negativeDirection : positiveDirect
ion, ScrollByPrecisePixel, absDelta); | 838 return scrollbarGroup->scroll(delta < 0 ? negativeDirection : positiveDirect
ion, ScrollByPrecisePixel, absDelta); |
| 847 } | 839 } |
| 848 | 840 |
| 849 void WebPluginContainerImpl::handleGestureEvent(GestureEvent* event) | 841 void WebPluginContainerImpl::handleGestureEvent(GestureEvent* event) |
| 850 { | 842 { |
| 851 WebGestureEventBuilder webEvent(this, m_element->renderer(), *event); | 843 WebGestureEventBuilder webEvent(this, m_element->renderer(), *event); |
| 852 if (webEvent.type == WebInputEvent::Undefined) | 844 if (webEvent.type == WebInputEvent::Undefined) |
| 853 return; | 845 return; |
| 854 WebCursorInfo cursorInfo; | 846 WebCursorInfo cursorInfo; |
| 855 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 847 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { |
| 856 event->stopPropagation(); | |
| 857 event->setDefaultHandled(); | 848 event->setDefaultHandled(); |
| 858 return; | 849 return; |
| 859 } | 850 } |
| 860 | 851 |
| 861 if (webEvent.type == WebInputEvent::GestureScrollUpdate || webEvent.type ==
WebInputEvent::GestureScrollUpdateWithoutPropagation) { | 852 if (webEvent.type == WebInputEvent::GestureScrollUpdate || webEvent.type ==
WebInputEvent::GestureScrollUpdateWithoutPropagation) { |
| 862 if (!m_scrollbarGroup) | 853 if (!m_scrollbarGroup) |
| 863 return; | 854 return; |
| 864 if (gestureScrollHelper(m_scrollbarGroup.get(), ScrollLeft, ScrollRight,
webEvent.data.scrollUpdate.deltaX)) | 855 if (gestureScrollHelper(m_scrollbarGroup.get(), ScrollLeft, ScrollRight,
webEvent.data.scrollUpdate.deltaX)) |
| 865 event->setDefaultHandled(); | 856 event->setDefaultHandled(); |
| 866 if (gestureScrollHelper(m_scrollbarGroup.get(), ScrollUp, ScrollDown, we
bEvent.data.scrollUpdate.deltaY)) | 857 if (gestureScrollHelper(m_scrollbarGroup.get(), ScrollUp, ScrollDown, we
bEvent.data.scrollUpdate.deltaY)) |
| 867 event->setDefaultHandled(); | 858 event->setDefaultHandled(); |
| 868 } | 859 } |
| 869 // FIXME: Can a plugin change the cursor from a touch-event callback? | 860 // FIXME: Can a plugin change the cursor from a touch-event callback? |
| 870 } | 861 } |
| 871 | 862 |
| 872 void WebPluginContainerImpl::synthesizeMouseEventIfPossible(TouchEvent* event) | 863 void WebPluginContainerImpl::synthesizeMouseEventIfPossible(TouchEvent* event) |
| 873 { | 864 { |
| 874 WebMouseEventBuilder webEvent(this, m_element->renderer(), *event); | 865 WebMouseEventBuilder webEvent(this, m_element->renderer(), *event); |
| 875 if (webEvent.type == WebInputEvent::Undefined) | 866 if (webEvent.type == WebInputEvent::Undefined) |
| 876 return; | 867 return; |
| 877 | 868 |
| 878 WebCursorInfo cursorInfo; | 869 WebCursorInfo cursorInfo; |
| 879 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) { | 870 if (m_webPlugin->handleInputEvent(webEvent, cursorInfo)) |
| 880 event->stopPropagation(); | |
| 881 event->setDefaultHandled(); | 871 event->setDefaultHandled(); |
| 882 } | |
| 883 } | 872 } |
| 884 | 873 |
| 885 void WebPluginContainerImpl::focusPlugin() | 874 void WebPluginContainerImpl::focusPlugin() |
| 886 { | 875 { |
| 887 LocalFrame& containingFrame = toFrameView(parent())->frame(); | 876 LocalFrame& containingFrame = toFrameView(parent())->frame(); |
| 888 if (Page* currentPage = containingFrame.page()) | 877 if (Page* currentPage = containingFrame.page()) |
| 889 currentPage->focusController().setFocusedElement(m_element, &containingF
rame); | 878 currentPage->focusController().setFocusedElement(m_element, &containingF
rame); |
| 890 else | 879 else |
| 891 containingFrame.document()->setFocusedElement(m_element); | 880 containingFrame.document()->setFocusedElement(m_element); |
| 892 } | 881 } |
| (...skipping 28 matching lines...) Expand all Loading... |
| 921 // Take our element and get the clip rect from the enclosing layer and | 910 // Take our element and get the clip rect from the enclosing layer and |
| 922 // frame view. | 911 // frame view. |
| 923 clipRect.intersect( | 912 clipRect.intersect( |
| 924 m_element->document().view()->windowClipRectForFrameOwner(m_element)
); | 913 m_element->document().view()->windowClipRectForFrameOwner(m_element)
); |
| 925 } | 914 } |
| 926 | 915 |
| 927 return clipRect; | 916 return clipRect; |
| 928 } | 917 } |
| 929 | 918 |
| 930 } // namespace blink | 919 } // namespace blink |
| OLD | NEW |