102772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   Copyright (C) 2000 Simon Hausmann <hausmann@kde.org>
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   Copyright (C) 2006 Apple Computer, Inc.
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   This library is free software; you can redistribute it and/or
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   modify it under the terms of the GNU Library General Public
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   License as published by the Free Software Foundation; either
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   version 2 of the License, or (at your option) any later version.
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   This library is distributed in the hope that it will be useful,
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   but WITHOUT ANY WARRANTY; without even the implied warranty of
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   Library General Public License for more details.
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   You should have received a copy of the GNU Library General Public License
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   along with this library; see the file COPYING.LIB.  If not, write to
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)   Boston, MA 02110-1301, USA.
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)*/
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#ifndef EventWithHitTestResults_h
22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#define EventWithHitTestResults_h
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
2453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/HitTestResult.h"
25197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/PlatformEvent.h"
26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "platform/PlatformGestureEvent.h"
271e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)#include "platform/PlatformMouseEvent.h"
285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class Scrollbar;
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
33197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtemplate <typename EventType>
34197021e6b966cfb06891637935ef33fff06433d1Ben Murdochclass EventWithHitTestResults {
355d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    STACK_ALLOCATED();
36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public:
38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    EventWithHitTestResults(const EventType& event, const HitTestResult& hitTestResult)
39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        : m_event(event)
40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch        , m_hitTestResult(hitTestResult)
41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    {
42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    }
435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    const EventType& event() const { return m_event; }
455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    const HitTestResult& hitTestResult() const { return m_hitTestResult; }
465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    LayoutPoint localPoint() const { return m_hitTestResult.localPoint(); }
475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    Scrollbar* scrollbar() const { return m_hitTestResult.scrollbar(); }
48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    bool isOverLink() const { return m_hitTestResult.isOverLink(); }
495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    bool isOverWidget() const { return m_hitTestResult.isOverWidget(); }
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    Node* innerNode() const { return m_hitTestResult.innerNode(); }
515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private:
53197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    EventType m_event;
545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)    HitTestResult m_hitTestResult;
555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)};
565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
57197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtypedef EventWithHitTestResults<PlatformMouseEvent> MouseEventWithHitTestResults;
58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
59197021e6b966cfb06891637935ef33fff06433d1Ben Murdochtypedef EventWithHitTestResults<PlatformGestureEvent> GestureEventWithHitTestResults;
60197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch
61c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#endif // EventWithHitTestResults_h
64