dom2_eventsimpl.h
来自「最新Nokia手机浏览器全套源代码完美版。」· C头文件 代码 · 共 509 行 · 第 1/2 页
H
509 行
/*
* 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) 2003 Apple Computer, Inc.
*
* 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., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*
*/
#ifndef _DOM_EventsImpl_h_
#define _DOM_EventsImpl_h_
#include "dom/dom2_events.h"
#include "misc/shared.h"
#include "xml/dom2_viewsimpl.h"
#include <qdatetime.h>
#include <qevent.h>
class KHTMLPart;
class QPoint;
class QStringList;
namespace DOM {
class AbstractViewImpl;
class DOMStringImpl;
class NodeImpl;
class ClipboardImpl;
// ### support user-defined events
class EventImpl : public khtml::Shared<EventImpl>
{
public:
enum EventId {
UNKNOWN_EVENT = 0,
// UI events
DOMFOCUSIN_EVENT,
DOMFOCUSOUT_EVENT,
DOMACTIVATE_EVENT,
// Mouse events
CLICK_EVENT,
MOUSEDOWN_EVENT,
MOUSEUP_EVENT,
MOUSEOVER_EVENT,
MOUSEMOVE_EVENT,
MOUSEOUT_EVENT,
// IE copy/paste events
BEFORECUT_EVENT,
CUT_EVENT,
BEFORECOPY_EVENT,
COPY_EVENT,
BEFOREPASTE_EVENT,
PASTE_EVENT,
// IE drag and drop events
DRAGENTER_EVENT,
DRAGOVER_EVENT,
DRAGLEAVE_EVENT,
DROP_EVENT,
DRAGSTART_EVENT,
DRAG_EVENT,
DRAGEND_EVENT,
// IE selection events
SELECTSTART_EVENT,
// Mutation events
DOMSUBTREEMODIFIED_EVENT,
DOMNODEINSERTED_EVENT,
DOMNODEREMOVED_EVENT,
DOMNODEREMOVEDFROMDOCUMENT_EVENT,
DOMNODEINSERTEDINTODOCUMENT_EVENT,
DOMATTRMODIFIED_EVENT,
DOMCHARACTERDATAMODIFIED_EVENT,
// HTML events
LOAD_EVENT,
BEFOREUNLOAD_EVENT,
UNLOAD_EVENT,
ABORT_EVENT,
ERROR_EVENT,
SELECT_EVENT,
CHANGE_EVENT,
SUBMIT_EVENT,
RESET_EVENT,
FOCUS_EVENT,
BLUR_EVENT,
RESIZE_EVENT,
SCROLL_EVENT,
CONTEXTMENU_EVENT,
#if APPLE_CHANGES
SEARCH_EVENT,
#endif
INPUT_EVENT,
// Keyboard events
KEYDOWN_EVENT,
KEYUP_EVENT,
// Text events
TEXTINPUT_EVENT,
// khtml events (not part of DOM)
KHTML_DBLCLICK_EVENT, // for html ondblclick
KHTML_CLICK_EVENT, // for html onclick
KHTML_DRAGDROP_EVENT,
KHTML_ERROR_EVENT,
KEYPRESS_EVENT,
KHTML_MOVE_EVENT,
KHTML_ORIGCLICK_MOUSEUP_EVENT,
// XMLHttpRequest events
KHTML_READYSTATECHANGE_EVENT,
// extensions
MOUSEWHEEL_EVENT,
HORIZONTALMOUSEWHEEL_EVENT,
numEventIds
};
EventImpl();
EventImpl(EventId _id, bool canBubbleArg, bool cancelableArg);
virtual ~EventImpl();
MAIN_THREAD_ALLOCATED;
EventId id() const { return m_id; }
DOMString type() const;
NodeImpl *target() const;
void setTarget(NodeImpl *_target);
NodeImpl *currentTarget() const;
void setCurrentTarget(NodeImpl *_currentTarget);
unsigned short eventPhase() const;
void setEventPhase(unsigned short _eventPhase);
bool bubbles() const;
bool cancelable() const;
DOMTimeStamp timeStamp();
void stopPropagation();
void preventDefault();
void initEvent(const DOMString &eventTypeArg, bool canBubbleArg, bool cancelableArg);
virtual bool isUIEvent() const;
virtual bool isMouseEvent() const;
virtual bool isMutationEvent() const;
virtual bool isKeyboardEvent() const;
virtual bool isDragEvent() const; // a subset of mouse events
virtual bool isClipboardEvent() const;
virtual bool isWheelEvent() const;
bool propagationStopped() const { return m_propagationStopped; }
bool defaultPrevented() const { return m_defaultPrevented; }
static EventId typeToId(const DOMString &type);
static DOMString idToType(EventId id);
void setDefaultHandled() { m_defaultHandled = true; }
bool defaultHandled() const { return m_defaultHandled; }
void setCancelBubble(bool cancel) { m_cancelBubble = cancel; }
void setDefaultPrevented(bool defaultPrevented) { m_defaultPrevented = defaultPrevented; }
bool getCancelBubble() const { return m_cancelBubble; }
virtual bool storesResultAsString() const;
virtual void storeResult(const DOMString&);
protected:
DOMStringImpl *m_type;
bool m_canBubble;
bool m_cancelable;
bool m_propagationStopped;
bool m_defaultPrevented;
bool m_defaultHandled;
bool m_cancelBubble;
EventId m_id;
NodeImpl *m_currentTarget; // ref > 0 maintained externally
unsigned short m_eventPhase;
NodeImpl *m_target;
QDateTime m_createTime;
};
class UIEventImpl : public EventImpl
{
public:
UIEventImpl();
UIEventImpl(EventId _id,
bool canBubbleArg,
bool cancelableArg,
AbstractViewImpl *viewArg,
long detailArg);
virtual ~UIEventImpl();
AbstractViewImpl *view() const { return m_view; }
long detail() const { return m_detail; }
void initUIEvent(const DOMString &typeArg,
bool canBubbleArg,
bool cancelableArg,
const AbstractView &viewArg,
long detailArg);
virtual bool isUIEvent() const;
protected:
AbstractViewImpl *m_view;
long m_detail;
};
class UIEventWithKeyStateImpl : public UIEventImpl {
public:
UIEventWithKeyStateImpl() : m_ctrlKey(false), m_altKey(false), m_shiftKey(false), m_metaKey(false) { }
UIEventWithKeyStateImpl(EventId eventID, bool canBubbleArg, bool cancelableArg, AbstractViewImpl *viewArg,
long detailArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg, bool metaKeyArg)
: UIEventImpl(eventID, canBubbleArg, cancelableArg, viewArg, detailArg)
, m_ctrlKey(ctrlKeyArg), m_altKey(altKeyArg), m_shiftKey(shiftKeyArg), m_metaKey(metaKeyArg) { }
bool ctrlKey() const { return m_ctrlKey; }
bool shiftKey() const { return m_shiftKey; }
bool altKey() const { return m_altKey; }
bool metaKey() const { return m_metaKey; }
protected: // expose these so init functions can set them
bool m_ctrlKey : 1;
bool m_altKey : 1;
bool m_shiftKey : 1;
bool m_metaKey : 1;
};
// Internal only: Helper class for what's common between mouse and wheel events.
class MouseRelatedEventImpl : public UIEventWithKeyStateImpl {
public:
MouseRelatedEventImpl();
MouseRelatedEventImpl(EventId _id,
bool canBubbleArg,
bool cancelableArg,
AbstractViewImpl *viewArg,
long detailArg,
long screenXArg,
long screenYArg,
long clientXArg,
long clientYArg,
bool ctrlKeyArg,
bool altKeyArg,
bool shiftKeyArg,
bool metaKeyArg,
bool isSimulated = false);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?