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