diff --git a/libraries/display-plugins/src/display-plugins/CompositorHelper.cpp b/libraries/display-plugins/src/display-plugins/CompositorHelper.cpp index 5bbf183141..1d725c140b 100644 --- a/libraries/display-plugins/src/display-plugins/CompositorHelper.cpp +++ b/libraries/display-plugins/src/display-plugins/CompositorHelper.cpp @@ -305,6 +305,10 @@ void CompositorHelper::sendFakeMouseEvent() { } } +//FIXME remove static Setting::Handle<QRect> windowGeometry("WindowGeometry"); + +#include "QWindow.h" +#include "QQuickWindow.h" void CompositorHelper::setReticlePosition(const glm::vec2& position, bool sendFakeEvent) { if (isHMD()) { glm::vec2 maxOverlayPosition = _currentDisplayPlugin->getRecommendedUiSize(); @@ -322,7 +326,20 @@ void CompositorHelper::setReticlePosition(const glm::vec2& position, bool sendFa sendFakeMouseEvent(); } } else { - QCursor::setPos(position.x, position.y); + if (!_mainWindow) { + auto windows = qApp->topLevelWindows(); + QWindow* result = nullptr; + for (auto window : windows) { + QVariant isMainWindow = window->property("MainWindow"); + if (!qobject_cast<QQuickWindow*>(window)) { + result = window; + break; + } + } + _mainWindow = result;; + } + const int MENU_BAR_HEIGHT = 20; + QCursor::setPos(position.x + _mainWindow->x(), position.y + _mainWindow->y() + MENU_BAR_HEIGHT); } } diff --git a/libraries/display-plugins/src/display-plugins/CompositorHelper.h b/libraries/display-plugins/src/display-plugins/CompositorHelper.h index c0b53b329e..83a1adde17 100644 --- a/libraries/display-plugins/src/display-plugins/CompositorHelper.h +++ b/libraries/display-plugins/src/display-plugins/CompositorHelper.h @@ -17,6 +17,7 @@ #include <QtCore/QPropertyAnimation> #include <QtGui/QCursor> #include <QtGui/QMouseEvent> +#include <QtGui/QWindow> #include <GLMHelpers.h> #include <Transform.h> @@ -182,6 +183,7 @@ private: bool _fakeMouseEvent { false }; ReticleInterface* _reticleInterface { nullptr }; + QWindow* _mainWindow { nullptr }; }; // Scripting interface available to control the Reticle diff --git a/scripts/system/controllers/handControllerPointer.js b/scripts/system/controllers/handControllerPointer.js index 6a1509253f..0ddbfa5b2d 100644 --- a/scripts/system/controllers/handControllerPointer.js +++ b/scripts/system/controllers/handControllerPointer.js @@ -84,11 +84,6 @@ function ignoreMouseActivity() { return true; } var setReticlePosition = function (point2d) { - if (!HMD.active) { - // FIX SYSTEM BUG: setPosition is setting relative to screen origin, not the content area of the window. - // https://app.asana.com/0/26225263936266/118427643788550 - point2d = {x: point2d.x, y: point2d.y + 50}; - } weMovedReticle = true; Reticle.setPosition(point2d); };