more work on dragging in hmd

This commit is contained in:
Brad Hefta-Gaub 2016-02-18 10:07:37 -08:00
parent 279519b6d5
commit c4fc3e4057
3 changed files with 13 additions and 23 deletions

View file

@ -1743,7 +1743,7 @@ bool Application::event(QEvent* event) {
switch (event->type()) {
case QEvent::MouseMove:
qDebug() << __FUNCTION__ << "(QEvent::MouseMove)... line:" << __LINE__;
//qDebug() << __FUNCTION__ << "(QEvent::MouseMove)... line:" << __LINE__;
mouseMoveEvent((QMouseEvent*)event);
return true;
case QEvent::MouseButtonPress:
@ -1781,7 +1781,7 @@ bool Application::event(QEvent* event) {
dropEvent(static_cast<QDropEvent*>(event));
return true;
case QEvent::Leave:
qDebug() << __FUNCTION__ << "().... QEvent::Leave";
//qDebug() << __FUNCTION__ << "().... QEvent::Leave";
break; // fall through
default:
break;
@ -1813,7 +1813,7 @@ bool Application::event(QEvent* event) {
bool Application::eventFilter(QObject* object, QEvent* event) {
if (event->type() == QEvent::Leave) {
qDebug() << __FUNCTION__ << "().... QEvent::Leave";
//qDebug() << __FUNCTION__ << "().... QEvent::Leave";
_compositor.handleLeaveEvent();
}
@ -2204,7 +2204,7 @@ void Application::mouseMoveEvent(QMouseEvent* event) {
if (_aboutToQuit) {
return;
}
qDebug() << __FUNCTION__ << "line:" << __LINE__ << "event:" << event << "_fakedMouseEvent:" << _fakedMouseEvent;
//qDebug() << __FUNCTION__ << "line:" << __LINE__ << "event:" << event << "_fakedMouseEvent:" << _fakedMouseEvent;
maybeToggleMenuVisible(event);
@ -2261,13 +2261,13 @@ void Application::mousePressEvent(QMouseEvent* event) {
// keyboard shortcuts not to be swallowed by them. In particular, WebEngineViews
// will consume all keyboard events.
offscreenUi->unfocusWindows();
qDebug() << __FUNCTION__ << "event:" << event;
//qDebug() << __FUNCTION__ << "event:" << event;
auto eventPosition = _compositor.getMouseEventPosition(event);
QPointF transformedPos = offscreenUi->mapToVirtualScreen(eventPosition, _glWidget);
qDebug() << __FUNCTION__ << " eventPosition:" << eventPosition;
qDebug() << __FUNCTION__ << "transformedPos:" << transformedPos;
//qDebug() << __FUNCTION__ << " eventPosition:" << eventPosition;
//qDebug() << __FUNCTION__ << "transformedPos:" << transformedPos;
QMouseEvent mappedEvent(event->type(),
transformedPos,

View file

@ -313,7 +313,6 @@ QPointF ApplicationCompositor::getMouseEventPosition(QMouseEvent* event) {
void ApplicationCompositor::handleLeaveEvent() {
if (qApp->isHMDMode()) {
auto applicationGeometry = qApp->getApplicationGeometry();
qDebug() << "SENDING mouse back to center:" << applicationGeometry.center();
_ignoreMouseMove = true;
auto sendToPos = applicationGeometry.center();
QCursor::setPos(sendToPos);
@ -322,31 +321,19 @@ void ApplicationCompositor::handleLeaveEvent() {
}
void ApplicationCompositor::trackRealMouseMoveEvent() {
qDebug() << __FUNCTION__ << "(event) BEFORE _lastKnownRealMouse:" << _lastKnownRealMouse;
_lastKnownRealMouse = QCursor::pos();
qDebug() << __FUNCTION__ << "(event) AFTER _lastKnownRealMouse:" << _lastKnownRealMouse;
}
void ApplicationCompositor::handleRealMouseMoveEvent(bool sendFakeEvent) {
qDebug() << __FUNCTION__ << "()";
if (_ignoreMouseMove) {
qDebug() << __FUNCTION__ << "() IGNORE MOUSE MOVE!!!";
_ignoreMouseMove = false;
return;
}
auto applicationGeometry = qApp->getApplicationGeometry();
qDebug() << ".... applicationGeometry:" << applicationGeometry;
auto newPosition = QCursor::pos();
auto changeInRealMouse = newPosition - _lastKnownRealMouse;
qDebug() << __FUNCTION__ << "() ..... _lastKnownRealMouse:" << _lastKnownRealMouse;
qDebug() << __FUNCTION__ << "() ............. newPosition:" << newPosition;
qDebug() << __FUNCTION__ << "() ....... changeInRealMouse:" << changeInRealMouse;
auto newReticlePosition = _reticlePositionInHMD + toGlm(changeInRealMouse);
_lastKnownRealMouse = newPosition;
qDebug() << ".... about to call setReticlePosition() newReticlePosition:" << newReticlePosition;
setReticlePosition(newReticlePosition, sendFakeEvent);
}
@ -363,9 +350,12 @@ void ApplicationCompositor::setReticlePosition(glm::vec2 position, bool sendFake
if (sendFakeEvent) {
// in HMD mode we need to fake our mouse moves...
QPoint globalPos(_reticlePositionInHMD.x, _reticlePositionInHMD.y);
QMouseEvent event(QEvent::MouseMove, globalPos, Qt::NoButton, Qt::NoButton, Qt::NoModifier);
auto button = Qt::NoButton;
auto buttons = QApplication::mouseButtons();
auto modifiers = QApplication::keyboardModifiers();
QMouseEvent event(QEvent::MouseMove, globalPos, button, buttons, modifiers);
qDebug() << "about to call .... qApp->fakeMouseEvent(&event);";
//qDebug() << "about to call .... qApp->fakeMouseEvent(&event);";
qApp->fakeMouseEvent(&event);
}
} else {

View file

@ -576,7 +576,7 @@ bool OffscreenQmlSurface::eventFilter(QObject* originalDestination, QEvent* even
//qDebug() << __FUNCTION__ << "event:" << event;
QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event);
QPointF transformedPos = mapToVirtualScreen(mouseEvent->localPos(), originalDestination);
qDebug() << __FUNCTION__ << "transformedPos:" << transformedPos;
//qDebug() << __FUNCTION__ << "transformedPos:" << transformedPos;
QMouseEvent mappedEvent(mouseEvent->type(),
transformedPos,
mouseEvent->screenPos(), mouseEvent->button(),