📄 dom2_eventsimpl.cpp
字号:
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_pageX = clientXArg; m_pageY = clientYArg; KHTMLView* v; if ( view() && view()->document() && ( v = view()->document()->view() ) ) { m_pageX += v->contentsX(); m_pageY += v->contentsY(); } 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(); // ### make this on-demand. its soo sloooow computeLayerPos(); m_qevent = 0;}bool MouseEventImpl::isMouseEvent() const{ return true;}//---------------------------------------------------------------------------------------------TextEventImpl::TextEventImpl(){ m_keyEvent = 0;}TextEventImpl::TextEventImpl(QKeyEvent *key, bool keypress, AbstractViewImpl *view) : UIEventImpl(KEYDOWN_EVENT,true,true,view,0){ m_keyEvent = new QKeyEvent(key->type(), key->key(), key->ascii(), key->state(), key->text(), key->isAutoRepeat(), key->count() ); // Events are supposed to be accepted by default in Qt! // This line made QLineEdit's keyevents be ignored, so they were sent to the khtmlview // (and e.g. space would make it scroll down) //m_keyEvent->ignore(); if( keypress ) m_id = KEYPRESS_EVENT; else if( key->type() == QEvent::KeyPress ) m_id = KEYDOWN_EVENT; else if( key->type() == QEvent::KeyRelease ) m_id = KEYUP_EVENT; m_detail = key->count(); m_numPad = false; m_keyVal = key->ascii(); m_virtKeyVal = DOM_VK_UNDEFINED; m_inputGenerated = true; switch(key->key()) { case Qt::Key_Enter: m_numPad = true; /* fall through */ case Qt::Key_Return: m_virtKeyVal = DOM_VK_ENTER; break; case Qt::Key_NumLock: m_numPad = true; m_virtKeyVal = DOM_VK_NUM_LOCK; break; case Qt::Key_Alt: m_virtKeyVal = DOM_VK_RIGHT_ALT; // ### DOM_VK_LEFT_ALT; break; case Qt::Key_Control: m_virtKeyVal = DOM_VK_LEFT_CONTROL; // ### DOM_VK_RIGHT_CONTROL break; case Qt::Key_Shift: m_virtKeyVal = DOM_VK_LEFT_SHIFT; // ### DOM_VK_RIGHT_SHIFT break; case Qt::Key_Meta: m_virtKeyVal = DOM_VK_META; break; case Qt::Key_CapsLock: m_virtKeyVal = DOM_VK_CAPS_LOCK; break; case Qt::Key_Delete: m_virtKeyVal = DOM_VK_DELETE; break; case Qt::Key_End: m_virtKeyVal = DOM_VK_END; break; case Qt::Key_Escape: m_virtKeyVal = DOM_VK_ESCAPE; break; case Qt::Key_Home: m_virtKeyVal = DOM_VK_HOME; break;// case Qt::Key_Insert:// m_virtKeyVal = DOM_VK_INSERT;// break; case Qt::Key_Pause: m_virtKeyVal = DOM_VK_PAUSE; break; case Qt::Key_Print: m_virtKeyVal = DOM_VK_PRINTSCREEN; break; case Qt::Key_ScrollLock: m_virtKeyVal = DOM_VK_SCROLL_LOCK; break; case Qt::Key_Left: m_virtKeyVal = DOM_VK_LEFT; break; case Qt::Key_Right: m_virtKeyVal = DOM_VK_RIGHT; break; case Qt::Key_Up: m_virtKeyVal = DOM_VK_UP; break; case Qt::Key_Down: m_virtKeyVal = DOM_VK_DOWN; break; case Qt::Key_Next: m_virtKeyVal = DOM_VK_PAGE_DOWN; break; case Qt::Key_Prior: m_virtKeyVal = DOM_VK_PAGE_UP; break; case Qt::Key_F1: m_virtKeyVal = DOM_VK_F1; break; case Qt::Key_F2: m_virtKeyVal = DOM_VK_F2; break; case Qt::Key_F3: m_virtKeyVal = DOM_VK_F3; break; case Qt::Key_F4: m_virtKeyVal = DOM_VK_F4; break; case Qt::Key_F5: m_virtKeyVal = DOM_VK_F5; break; case Qt::Key_F6: m_virtKeyVal = DOM_VK_F6; break; case Qt::Key_F7: m_virtKeyVal = DOM_VK_F7; break; case Qt::Key_F8: m_virtKeyVal = DOM_VK_F8; break; case Qt::Key_F9: m_virtKeyVal = DOM_VK_F9; break; case Qt::Key_F10: m_virtKeyVal = DOM_VK_F10; break; case Qt::Key_F11: m_virtKeyVal = DOM_VK_F11; break; case Qt::Key_F12: m_virtKeyVal = DOM_VK_F12; break; case Qt::Key_F13: m_virtKeyVal = DOM_VK_F13; break; case Qt::Key_F14: m_virtKeyVal = DOM_VK_F14; break; case Qt::Key_F15: m_virtKeyVal = DOM_VK_F15; break; case Qt::Key_F16: m_virtKeyVal = DOM_VK_F16; break; case Qt::Key_F17: m_virtKeyVal = DOM_VK_F17; break; case Qt::Key_F18: m_virtKeyVal = DOM_VK_F18; break; case Qt::Key_F19: m_virtKeyVal = DOM_VK_F19; break; case Qt::Key_F20: m_virtKeyVal = DOM_VK_F20; break; case Qt::Key_F21: m_virtKeyVal = DOM_VK_F21; break; case Qt::Key_F22: m_virtKeyVal = DOM_VK_F22; break; case Qt::Key_F23: m_virtKeyVal = DOM_VK_F23; break; case Qt::Key_F24: m_virtKeyVal = DOM_VK_F24; break; default: m_virtKeyVal = DOM_VK_UNDEFINED; break; } // m_keyVal should contain the unicode value // of the pressed key if available. if (m_virtKeyVal == DOM_VK_UNDEFINED && !key->text().isEmpty()) m_keyVal = key->text().unicode()[0]; // m_numPad = ??? // key->state returns enum ButtonState, which is ShiftButton, ControlButton and AltButton or'ed together. m_modifier = key->state(); // key->text() returns the unicode sequence as a QString m_outputString = DOMString(key->text());}TextEventImpl::TextEventImpl(EventId _id, bool canBubbleArg, bool cancelableArg, AbstractViewImpl *viewArg, unsigned short detailArg, DOMString &outputStringArg, unsigned long keyValArg, unsigned long virtKeyValArg, bool inputGeneratedArg, bool numPadArg) : UIEventImpl(_id,canBubbleArg,cancelableArg,viewArg,detailArg){ m_keyEvent = 0; m_keyVal = keyValArg; m_virtKeyVal = virtKeyValArg; m_inputGenerated = inputGeneratedArg; m_outputString = outputStringArg; m_numPad = numPadArg; m_modifier = 0;}TextEventImpl::~TextEventImpl(){ delete m_keyEvent;}bool TextEventImpl::checkModifier(unsigned long modifierArg){ return ((m_modifier & modifierArg) == modifierArg);}void TextEventImpl::initTextEvent(const DOMString &typeArg, bool canBubbleArg, bool cancelableArg, const AbstractView &viewArg, long detailArg, const DOMString &outputStringArg, unsigned long keyValArg, unsigned long virtKeyValArg, bool inputGeneratedArg, bool numPadArg){ UIEventImpl::initUIEvent(typeArg, canBubbleArg, cancelableArg, viewArg, detailArg); m_outputString = outputStringArg; m_keyVal = keyValArg; m_virtKeyVal = virtKeyValArg; m_inputGenerated = inputGeneratedArg; m_numPad = numPadArg;}void TextEventImpl::initModifier(unsigned long modifierArg, bool valueArg){ if (valueArg) m_modifier |= modifierArg; else m_modifier &= (modifierArg ^ 0xFFFFFFFF);}int TextEventImpl::keyCode() const{ if (!m_keyEvent) return 0; if (m_virtKeyVal != DOM_VK_UNDEFINED) { return m_virtKeyVal; } else { int c = charCode(); if (c != 0) { return QChar(c).upper().unicode(); } else { c = m_keyEvent->key(); if (c == Qt::Key_unknown) kdDebug( 6020 ) << "Unknown key" << endl; return c; } }}int TextEventImpl::charCode() const{ if (!m_keyEvent) return 0; if (m_outputString.length() != 1) return 0; return m_outputString[0].unicode();}bool TextEventImpl::isTextEvent() 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_attrName) m_attrName->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;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -