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);
}
예제 #3
0
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;
}