📄 dom2_eventsimpl.cpp
字号:
}void UIEventImpl::initUIEvent(const DOMString &typeArg, bool canBubbleArg, bool cancelableArg, const AbstractView &viewArg, long detailArg){ EventImpl::initEvent(typeArg,canBubbleArg,cancelableArg); if (m_view) m_view->deref(); m_view = viewArg.handle(); if (m_view) m_view->ref(); m_detail = detailArg;}bool UIEventImpl::isUIEvent() const{ return true;}// -----------------------------------------------------------------------------MouseEventImpl::MouseEventImpl(){ m_screenX = 0; m_screenY = 0; m_clientX = 0; m_clientY = 0; m_ctrlKey = false; m_altKey = false; m_shiftKey = false; m_metaKey = false; m_button = 0; m_relatedTarget = 0; m_clipboard = 0;}MouseEventImpl::MouseEventImpl(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, unsigned short buttonArg, NodeImpl *relatedTargetArg, ClipboardImpl *clipboardArg) : UIEventImpl(_id,canBubbleArg,cancelableArg,viewArg,detailArg){ m_screenX = screenXArg; m_screenY = screenYArg; m_clientX = clientXArg; m_clientY = clientYArg; m_ctrlKey = ctrlKeyArg; m_altKey = altKeyArg; m_shiftKey = shiftKeyArg; m_metaKey = metaKeyArg; m_button = buttonArg; m_relatedTarget = relatedTargetArg; if (m_relatedTarget) m_relatedTarget->ref(); m_clipboard = clipboardArg; if (m_clipboard) m_clipboard->ref(); computeLayerPos();}void MouseEventImpl::computeLayerPos(){ m_layerX = m_clientX; m_layerY = m_clientY; DocumentImpl *doc = view()->document(); if (!doc) { return; } khtml::RenderObject::NodeInfo renderInfo(true, false); doc->renderer()->layer()->nodeAtPoint(renderInfo, m_clientX, m_clientY); NodeImpl *node = renderInfo.innerNonSharedNode(); while (node && !node->renderer()) { node = node->parent(); } if (!node) { return; } node->renderer()->enclosingLayer()->updateLayerPosition(); for (khtml::RenderLayer *layer = node->renderer()->enclosingLayer(); layer != NULL; layer = layer->parent()) { m_layerX -= layer->xPos(); m_layerY -= layer->yPos(); }}MouseEventImpl::~MouseEventImpl(){ if (m_relatedTarget) m_relatedTarget->deref(); if (m_clipboard) m_clipboard->deref();}void MouseEventImpl::initMouseEvent(const DOMString &typeArg, bool canBubbleArg, bool cancelableArg, const AbstractView &viewArg, long detailArg, long screenXArg, long screenYArg, long clientXArg, long clientYArg, bool ctrlKeyArg, bool altKeyArg, bool shiftKeyArg, bool metaKeyArg, unsigned short buttonArg, const Node &relatedTargetArg){ UIEventImpl::initUIEvent(typeArg,canBubbleArg,cancelableArg,viewArg,detailArg); if (m_relatedTarget) m_relatedTarget->deref(); m_screenX = screenXArg; m_screenY = screenYArg; m_clientX = clientXArg; m_clientY = clientYArg; m_ctrlKey = ctrlKeyArg; m_altKey = altKeyArg; m_shiftKey = shiftKeyArg; m_metaKey = metaKeyArg; m_button = buttonArg; m_relatedTarget = relatedTargetArg.handle(); if (m_relatedTarget) m_relatedTarget->ref(); computeLayerPos();}bool MouseEventImpl::isMouseEvent() const{ return true;}bool MouseEventImpl::isDragEvent() const{ return (m_id == EventImpl::DRAGENTER_EVENT || m_id == EventImpl::DRAGOVER_EVENT || m_id == EventImpl::DRAGLEAVE_EVENT || m_id == EventImpl::DROP_EVENT || m_id == EventImpl::DRAGSTART_EVENT || m_id == EventImpl::DRAG_EVENT || m_id == EventImpl::DRAGEND_EVENT);}//---------------------------------------------------------------------------------------------KeyboardEventImpl::KeyboardEventImpl(){ m_keyEvent = 0; m_keyIdentifier = 0; m_keyLocation = KeyboardEvent::DOM_KEY_LOCATION_STANDARD; m_ctrlKey = false; m_shiftKey = false; m_altKey = false; m_metaKey = false; m_altGraphKey = false;}KeyboardEventImpl::KeyboardEventImpl(QKeyEvent *key, AbstractViewImpl *view) : UIEventImpl(key->type() == QEvent::KeyRelease ? KEYUP_EVENT : key->isAutoRepeat() ? KEYPRESS_EVENT : KEYDOWN_EVENT, true,true,view,0){#if APPLE_CHANGES m_keyEvent = new QKeyEvent(*key);#else m_keyEvent = new QKeyEvent(key->type(), key->key(), key->ascii(), key->state(), key->text(), key->isAutoRepeat(), key->count());#endif#if APPLE_CHANGES DOMString identifier(key->keyIdentifier()); m_keyIdentifier = identifier.implementation(); m_keyIdentifier->ref();#else m_keyIdentifier = 0; // need the equivalent of the above for KDE#endif int keyState = key->state(); m_ctrlKey = keyState & Qt::ControlButton; m_shiftKey = keyState & Qt::ShiftButton; m_altKey = keyState & Qt::AltButton; m_metaKey = keyState & Qt::MetaButton; m_altGraphKey = false; // altGraphKey is not supported by Qt. // Note: we only support testing for num pad m_keyLocation = (keyState & Qt::Keypad) ? KeyboardEvent::DOM_KEY_LOCATION_NUMPAD : KeyboardEvent::DOM_KEY_LOCATION_STANDARD;}KeyboardEventImpl::KeyboardEventImpl(EventId _id, bool canBubbleArg, bool cancelableArg, AbstractViewImpl *viewArg, const DOMString &keyIdentifierArg, unsigned long keyLocationArg, bool ctrlKeyArg, bool shiftKeyArg, bool altKeyArg, bool metaKeyArg, bool altGraphKeyArg) : UIEventImpl(_id,canBubbleArg,cancelableArg,viewArg,0){ m_keyEvent = 0; m_keyIdentifier = keyIdentifierArg.implementation(); if (m_keyIdentifier) m_keyIdentifier->ref(); m_keyLocation = keyLocationArg; m_ctrlKey = ctrlKeyArg; m_shiftKey = shiftKeyArg; m_altKey = altKeyArg; m_metaKey = metaKeyArg; m_altGraphKey = altGraphKeyArg;}KeyboardEventImpl::~KeyboardEventImpl(){ delete m_keyEvent; if (m_keyIdentifier) m_keyIdentifier->deref();}void KeyboardEventImpl::initKeyboardEvent(const DOMString &typeArg, bool canBubbleArg, bool cancelableArg, const AbstractView &viewArg, const DOMString &keyIdentifierArg, unsigned long keyLocationArg, bool ctrlKeyArg, bool shiftKeyArg, bool altKeyArg, bool metaKeyArg, bool altGraphKeyArg){ if (m_keyIdentifier) m_keyIdentifier->deref(); UIEventImpl::initUIEvent(typeArg, canBubbleArg, cancelableArg, viewArg, 0); m_keyIdentifier = keyIdentifierArg.implementation(); if (m_keyIdentifier) m_keyIdentifier->ref(); m_keyLocation = keyLocationArg; m_ctrlKey = ctrlKeyArg; m_shiftKey = shiftKeyArg; m_altKey = altKeyArg; m_metaKey = metaKeyArg; m_altGraphKey = altGraphKeyArg;}int KeyboardEventImpl::keyCode() const{ if (!m_keyEvent) { return 0; } switch (m_id) { case KEYDOWN_EVENT: case KEYUP_EVENT:#if APPLE_CHANGES return m_keyEvent->WindowsKeyCode();#else // need the equivalent of the above for KDE#endif default: return charCode(); }}int KeyboardEventImpl::charCode() const{ if (!m_keyEvent) { return 0; } QString text = m_keyEvent->text(); if (text.length() != 1) { return 0; } return text[0].unicode();}bool KeyboardEventImpl::isKeyboardEvent() const{ return true;}// -----------------------------------------------------------------------------MutationEventImpl::MutationEventImpl(){ m_relatedNode = 0; m_prevValue = 0; m_newValue = 0; m_attrName = 0; m_attrChange = 0;}MutationEventImpl::MutationEventImpl(EventId _id, bool canBubbleArg, bool cancelableArg, const Node &relatedNodeArg, const DOMString &prevValueArg, const DOMString &newValueArg, const DOMString &attrNameArg, unsigned short attrChangeArg) : EventImpl(_id,canBubbleArg,cancelableArg){ m_relatedNode = relatedNodeArg.handle(); if (m_relatedNode) m_relatedNode->ref(); m_prevValue = prevValueArg.implementation(); if (m_prevValue) m_prevValue->ref(); m_newValue = newValueArg.implementation(); if (m_newValue) m_newValue->ref(); m_attrName = attrNameArg.implementation(); if (m_newValue) m_newValue->ref(); m_attrChange = attrChangeArg;}MutationEventImpl::~MutationEventImpl(){ if (m_relatedNode) m_relatedNode->deref(); if (m_prevValue) m_prevValue->deref(); if (m_newValue) m_newValue->deref(); if (m_attrName) m_attrName->deref();}void MutationEventImpl::initMutationEvent(const DOMString &typeArg, bool canBubbleArg, bool cancelableArg, const Node &relatedNodeArg, const DOMString &prevValueArg, const DOMString &newValueArg, const DOMString &attrNameArg, unsigned short attrChangeArg){ EventImpl::initEvent(typeArg,canBubbleArg,cancelableArg); if (m_relatedNode) m_relatedNode->deref(); if (m_prevValue) m_prevValue->deref(); if (m_newValue) m_newValue->deref(); if (m_attrName) m_attrName->deref(); m_relatedNode = relatedNodeArg.handle(); if (m_relatedNode) m_relatedNode->ref(); m_prevValue = prevValueArg.implementation(); if (m_prevValue) m_prevValue->ref(); m_newValue = newValueArg.implementation(); if (m_newValue) m_newValue->ref(); m_attrName = attrNameArg.implementation(); if (m_newValue) m_newValue->ref(); m_attrChange = attrChangeArg;}bool MutationEventImpl::isMutationEvent() const{ return true;}// -----------------------------------------------------------------------------ClipboardEventImpl::ClipboardEventImpl(){ m_clipboard = 0;}ClipboardEventImpl::ClipboardEventImpl(EventId _id, bool canBubbleArg, bool cancelableArg, ClipboardImpl *clipboardArg) : EventImpl(_id, canBubbleArg, cancelableArg), m_clipboard(clipboardArg){ if (m_clipboard) m_clipboard->ref();}ClipboardEventImpl::~ClipboardEventImpl(){ if (m_clipboard) m_clipboard->deref();}bool ClipboardEventImpl::isClipboardEvent() const{ return true;}// -----------------------------------------------------------------------------RegisteredEventListener::RegisteredEventListener(EventImpl::EventId _id, EventListener *_listener, bool _useCapture){ id = _id; listener = _listener; useCapture = _useCapture; listener->ref();}RegisteredEventListener::~RegisteredEventListener() { listener->deref();}bool RegisteredEventListener::operator==(const RegisteredEventListener &other){ return (id == other.id && listener == other.listener && useCapture == other.useCapture);}// -----------------------------------------------------------------------------ClipboardImpl::ClipboardImpl(){}ClipboardImpl::~ClipboardImpl(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -