void LLEmbeddedBrowserWindow::scrollWheelEvent(int16_t x, int16_t y, int16_t scroll_x, int16_t scroll_y, LLQtWebKit::EKeyboardModifier modifiers) { #ifdef LLEMBEDDEDBROWSER_DEBUG qDebug() << "LLEmbeddedBrowserWindow" << __FUNCTION__ << x << y; #endif Qt::KeyboardModifiers qt_modifiers = convert_modifiers(modifiers); if(scroll_y != 0) { QWheelEvent event(QPoint(x, y), scroll_y, d->mCurrentMouseButtonState, qt_modifiers, Qt::Vertical); qApp->sendEvent(d->mGraphicsView->viewport(), &event); } if(scroll_x != 0) { QWheelEvent event(QPoint(x, y), scroll_x, d->mCurrentMouseButtonState, qt_modifiers, Qt::Horizontal); qApp->sendEvent(d->mGraphicsView->viewport(), &event); } }
void LLEmbeddedBrowserWindow::mouseEvent(LLQtWebKit::EMouseEvent mouse_event, int16_t button, int16_t x, int16_t y, LLQtWebKit::EKeyboardModifier modifiers) { #if LLEMBEDDEDBROWSER_DEBUG > 10 qDebug() << "LLEmbeddedBrowserWindow" << __FUNCTION__ << x << y; #endif QEvent::Type type = event_from_mouse_event(mouse_event); Qt::MouseButton qt_button = qt_button_from_button_number(button); Qt::KeyboardModifiers qt_modifiers = convert_modifiers(modifiers); if(type == QEvent::MouseMove) { // Mouse move events should always use "no button". qt_button = Qt::NoButton; } // FIXME: should the current button state be updated before or after constructing the event? switch(type) { case QEvent::MouseButtonPress: case QEvent::MouseButtonDblClick: d->mCurrentMouseButtonState |= qt_button; break; case QEvent::MouseButtonRelease: d->mCurrentMouseButtonState &= ~qt_button; break; default: break; } QMouseEvent event(type, QPoint(x, y), qt_button, d->mCurrentMouseButtonState, qt_modifiers); qt_sendSpontaneousEvent(d->mGraphicsView->viewport(), &event); }
modifiers_t modifier_state() { return convert_modifiers(GG::GUI::GetGUI()->ModKeys()); }
// Send a keyboard event with native event data. void LLEmbeddedBrowserWindow::keyboardEvent( LLQtWebKit::EKeyEvent key_event, uint32_t key_code, const char *utf8_text, LLQtWebKit::EKeyboardModifier modifiers, uint32_t native_scan_code, uint32_t native_virtual_key, uint32_t native_modifiers) { QEvent::Type type = event_from_keyboard_event(key_event); Qt::KeyboardModifiers qt_modifiers = convert_modifiers(modifiers); bool auto_repeat = (key_event == LLQtWebKit::KE_KEY_REPEAT); QString text = QString::fromUtf8(utf8_text); Qt::Key key = Qt::Key_unknown; switch (key_code) { case LLQtWebKit::KEY_RETURN: key = Qt::Key_Return; break; case LLQtWebKit::KEY_LEFT: key = Qt::Key_Left; break; case LLQtWebKit::KEY_RIGHT: key = Qt::Key_Right; break; case LLQtWebKit::KEY_UP: key = Qt::Key_Up; break; case LLQtWebKit::KEY_DOWN: key = Qt::Key_Down; break; case LLQtWebKit::KEY_ESCAPE: key = Qt::Key_Escape; break; case LLQtWebKit::KEY_BACKSPACE: key = Qt::Key_Backspace; break; case LLQtWebKit::KEY_DELETE: key = Qt::Key_Delete; break; case LLQtWebKit::KEY_SHIFT: key = Qt::Key_Shift; break; case LLQtWebKit::KEY_CONTROL: key = Qt::Key_Control; break; case LLQtWebKit::KEY_ALT: key = Qt::Key_Alt; break; case LLQtWebKit::KEY_HOME: key = Qt::Key_Home; break; case LLQtWebKit::KEY_END: key = Qt::Key_End; break; case LLQtWebKit::KEY_PAGE_UP: key = Qt::Key_PageUp; break; case LLQtWebKit::KEY_PAGE_DOWN: key = Qt::Key_PageDown; break; case LLQtWebKit::KEY_HYPHEN: key = Qt::Key_hyphen; break; case LLQtWebKit::KEY_EQUALS: key = Qt::Key_Equal; break; case LLQtWebKit::KEY_INSERT: key = Qt::Key_Insert; break; case LLQtWebKit::KEY_CAPSLOCK: key = Qt::Key_CapsLock; break; case LLQtWebKit::KEY_TAB: key = Qt::Key_Tab; break; case LLQtWebKit::KEY_ADD: key = Qt::Key_Plus; break; case LLQtWebKit::KEY_SUBTRACT: key = Qt::Key_Minus; break; case LLQtWebKit::KEY_MULTIPLY: key = Qt::Key_Asterisk; break; case LLQtWebKit::KEY_DIVIDE: key = Qt::Key_Slash; break; case LLQtWebKit::KEY_F1: key = Qt::Key_F1; break; case LLQtWebKit::KEY_F2: key = Qt::Key_F2; break; case LLQtWebKit::KEY_F3: key = Qt::Key_F3; break; case LLQtWebKit::KEY_F4: key = Qt::Key_F4; break; case LLQtWebKit::KEY_F5: key = Qt::Key_F5; break; case LLQtWebKit::KEY_F6: key = Qt::Key_F6; break; case LLQtWebKit::KEY_F7: key = Qt::Key_F7; break; case LLQtWebKit::KEY_F8: key = Qt::Key_F8; break; case LLQtWebKit::KEY_F9: key = Qt::Key_F9; break; case LLQtWebKit::KEY_F10: key = Qt::Key_F10; break; case LLQtWebKit::KEY_F11: key = Qt::Key_F11; break; case LLQtWebKit::KEY_F12: key = Qt::Key_F12; break; case LLQtWebKit::KEY_PAD_UP: key = Qt::Key_Up; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_DOWN: key = Qt::Key_Down; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_LEFT: key = Qt::Key_Left; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_RIGHT: key = Qt::Key_Right; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_HOME: key = Qt::Key_Home; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_END: key = Qt::Key_End; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_PGUP: key = Qt::Key_PageUp; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_PGDN: key = Qt::Key_PageDown; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_CENTER: key = Qt::Key_5; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_INS: key = Qt::Key_Insert; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_DEL: key = Qt::Key_Delete; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_RETURN: key = Qt::Key_Enter; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_ADD: key = Qt::Key_Plus; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_SUBTRACT: key = Qt::Key_Minus; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_MULTIPLY: key = Qt::Key_Asterisk; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_PAD_DIVIDE: key = Qt::Key_Slash; qt_modifiers |= Qt::KeypadModifier; break; case LLQtWebKit::KEY_NONE: key = Qt::Key_unknown; break; default: key = (Qt::Key)toupper(key_code); break; } QKeyEvent *event = QKeyEvent::createExtendedKeyEvent( type, key, qt_modifiers, native_scan_code, native_virtual_key, native_modifiers, text, auto_repeat, text.count()); qApp->sendEvent(d->mGraphicsScene, event); delete event; }