diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebCore/dom/Event.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebCore/dom/Event.h Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,160 @@ +/* + * This file is part of the DOM implementation for KDE. + * + * Copyright (C) 2001 Peter Kelly (pmk@post.com) + * Copyright (C) 2001 Tobias Anton (anton@stud.fbi.fh-darmstadt.de) + * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) + * Copyright (C) 2003, 2004, 2005, 2006, 2007 Apple Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef Event_h +#define Event_h + +#include "AtomicString.h" +#include "EventTarget.h" +#include "Shared.h" + +namespace WebCore { + + class Clipboard; + + // FIXME: this should probably defined elsewhere. + typedef unsigned long long DOMTimeStamp; + + // FIXME: these too should probably defined elsewhere. + const int EventExceptionOffset = 100; + const int EventExceptionMax = 199; + enum EventExceptionCode { UNSPECIFIED_EVENT_TYPE_ERR = EventExceptionOffset }; + + class Event : public Shared { + public: + enum PhaseType { + CAPTURING_PHASE = 1, + AT_TARGET = 2, + BUBBLING_PHASE = 3 + }; + + enum EventType { + MOUSEDOWN = 1, + MOUSEUP = 2, + MOUSEOVER = 4, + MOUSEOUT = 8, + MOUSEMOVE = 16, + MOUSEDRAG = 32, + CLICK = 64, + DBLCLICK = 128, + KEYDOWN = 256, + KEYUP = 512, + KEYPRESS = 1024, + DRAGDROP = 2048, + FOCUS = 4096, + BLUR = 8192, + SELECT = 16384, + CHANGE = 32768 + }; + + Event(); + Event(const AtomicString& type, bool canBubble, bool cancelable); + virtual ~Event(); + + void initEvent(const AtomicString& type, bool canBubble, bool cancelable); + + const AtomicString& type() const { return m_type; } + + EventTarget* target() const { return m_target.get(); } + void setTarget(PassRefPtr); + + EventTarget* currentTarget() const { return m_currentTarget; } + void setCurrentTarget(EventTarget* currentTarget) { m_currentTarget = currentTarget; } + + unsigned short eventPhase() const { return m_eventPhase; } + void setEventPhase(unsigned short eventPhase) { m_eventPhase = eventPhase; } + + bool bubbles() const { return m_canBubble; } + bool cancelable() const { return m_cancelable; } + DOMTimeStamp timeStamp() { return m_createTime; } + void stopPropagation() { m_propagationStopped = true; } + + // IE Extensions + EventTarget* srcElement() const { return target(); } // MSIE extension - "the object that fired the event" + + bool returnValue() const { return !defaultPrevented(); } + void setReturnValue(bool returnValue) { setDefaultPrevented(!returnValue); } + + Clipboard* clipboardData() const { return isClipboardEvent() ? clipboard() : 0; } + + virtual bool isUIEvent() const; + virtual bool isMouseEvent() const; + virtual bool isMutationEvent() const; + virtual bool isKeyboardEvent() const; + virtual bool isTextEvent() const; + virtual bool isDragEvent() const; // a subset of mouse events + virtual bool isClipboardEvent() const; + virtual bool isWheelEvent() const; + virtual bool isBeforeTextInsertedEvent() const; + virtual bool isOverflowEvent() const; +#if ENABLE(SVG) + virtual bool isSVGZoomEvent() const; +#endif + + bool propagationStopped() const { return m_propagationStopped; } + + bool defaultPrevented() const { return m_defaultPrevented; } + void preventDefault() { if (m_cancelable) m_defaultPrevented = true; } + void setDefaultPrevented(bool defaultPrevented) { m_defaultPrevented = defaultPrevented; } + + bool defaultHandled() const { return m_defaultHandled; } + void setDefaultHandled() { m_defaultHandled = true; } + + bool cancelBubble() const { return m_cancelBubble; } + void setCancelBubble(bool cancel) { m_cancelBubble = cancel; } + + Event* underlyingEvent() const { return m_underlyingEvent.get(); } + void setUnderlyingEvent(PassRefPtr); + + virtual bool storesResultAsString() const; + virtual void storeResult(const String&); + + virtual Clipboard* clipboard() const { return 0; } + + protected: + virtual void receivedTarget(); + bool dispatched() const { return m_target; } + + private: + AtomicString m_type; + bool m_canBubble; + bool m_cancelable; + + bool m_propagationStopped; + bool m_defaultPrevented; + bool m_defaultHandled; + bool m_cancelBubble; + + EventTarget* m_currentTarget; + unsigned short m_eventPhase; + RefPtr m_target; + DOMTimeStamp m_createTime; + + RefPtr m_underlyingEvent; + }; + +} // namespace WebCore + +#endif // Event_h