Home | History | Annotate | Download | only in win
      1 /*
      2  * Copyright (C) 2006, 2007, 2008 Apple Inc. All rights reserved.
      3  * Copyright (C) 2007-2009 Torch Mobile, Inc.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions
      7  * are met:
      8  * 1. Redistributions of source code must retain the above copyright
      9  *    notice, this list of conditions and the following disclaimer.
     10  * 2. Redistributions in binary form must reproduce the above copyright
     11  *    notice, this list of conditions and the following disclaimer in the
     12  *    documentation and/or other materials provided with the distribution.
     13  *
     14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     25  */
     26 
     27 #include "config.h"
     28 #include "EventHandler.h"
     29 
     30 #include "Cursor.h"
     31 #include "FloatPoint.h"
     32 #include "FocusController.h"
     33 #include "FrameView.h"
     34 #include "Frame.h"
     35 #include "HitTestRequest.h"
     36 #include "HitTestResult.h"
     37 #include "MouseEventWithHitTestResults.h"
     38 #include "Page.h"
     39 #include "PlatformKeyboardEvent.h"
     40 #include "PlatformWheelEvent.h"
     41 #include "Scrollbar.h"
     42 #include "SelectionController.h"
     43 #include "WCDataObject.h"
     44 #include "NotImplemented.h"
     45 
     46 #if OS(WINCE)
     47 #include "Clipboard.h"
     48 #else
     49 #include "ClipboardWin.h"
     50 #endif
     51 
     52 namespace WebCore {
     53 
     54 const double EventHandler::TextDragDelay = 0.0;
     55 
     56 bool EventHandler::passMousePressEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe)
     57 {
     58     subframe->eventHandler()->handleMousePressEvent(mev.event());
     59     return true;
     60 }
     61 
     62 bool EventHandler::passMouseMoveEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe, HitTestResult* hoveredNode)
     63 {
     64     if (m_mouseDownMayStartDrag && !m_mouseDownWasInSubframe)
     65         return false;
     66     subframe->eventHandler()->handleMouseMoveEvent(mev.event(), hoveredNode);
     67     return true;
     68 }
     69 
     70 bool EventHandler::passMouseReleaseEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe)
     71 {
     72     subframe->eventHandler()->handleMouseReleaseEvent(mev.event());
     73     return true;
     74 }
     75 
     76 bool EventHandler::passWheelEventToWidget(PlatformWheelEvent& wheelEvent, Widget* widget)
     77 {
     78     if (!widget->isFrameView())
     79         return false;
     80 
     81     return static_cast<FrameView*>(widget)->frame()->eventHandler()->handleWheelEvent(wheelEvent);
     82 }
     83 
     84 bool EventHandler::tabsToAllFormControls(KeyboardEvent*) const
     85 {
     86     return true;
     87 }
     88 
     89 bool EventHandler::eventActivatedView(const PlatformMouseEvent& event) const
     90 {
     91     return event.didActivateWebView();
     92 }
     93 
     94 PassRefPtr<Clipboard> EventHandler::createDraggingClipboard() const
     95 {
     96 #if OS(WINCE)
     97     return 0;
     98 #else
     99     COMPtr<WCDataObject> dataObject;
    100     WCDataObject::createInstance(&dataObject);
    101     return ClipboardWin::create(Clipboard::DragAndDrop, dataObject.get(), ClipboardWritable, m_frame);
    102 #endif
    103 }
    104 
    105 void EventHandler::focusDocumentView()
    106 {
    107     Page* page = m_frame->page();
    108     if (!page)
    109         return;
    110     page->focusController()->setFocusedFrame(m_frame);
    111 }
    112 
    113 bool EventHandler::passWidgetMouseDownEventToWidget(const MouseEventWithHitTestResults&)
    114 {
    115     notImplemented();
    116     return false;
    117 }
    118 
    119 unsigned EventHandler::accessKeyModifiers()
    120 {
    121     return PlatformKeyboardEvent::AltKey;
    122 }
    123 
    124 }
    125