diff --git a/MainWindow.h b/MainWindow.h index 0a71492..425ecd3 100644 --- a/MainWindow.h +++ b/MainWindow.h @@ -515,6 +515,7 @@ public: OutputGLWindow* getOutputWindow() const { return outputWindow; } MapperGLCanvas* getSourceCanvas() const { return sourceCanvas; } MapperGLCanvas* getDestinationCanvas() const { return destinationCanvas; } + int getPreferredScreen() const { return outputWindow->getPreferredScreen(); } /// Returns true iff we should display the controls. bool displayControls() const { return _displayControls; } diff --git a/OutputGLCanvas.cpp b/OutputGLCanvas.cpp index ef94103..11dc5eb 100644 --- a/OutputGLCanvas.cpp +++ b/OutputGLCanvas.cpp @@ -60,8 +60,19 @@ void OutputGLCanvas::drawForeground(QPainter *painter , const QRectF &rect) // Display crosshair cursor. if (_displayCrosshair) { +#ifdef Q_OS_OSX + QPoint globalCursorPos = QCursor::pos(); + int mouseScreen = QApplication::desktop()->screenNumber(globalCursorPos); + QRect mouseScreenGeometry = QApplication::desktop()->screen(mouseScreen)->geometry(); + QPoint localCursorPos = globalCursorPos - mouseScreenGeometry.topLeft(); + QPointF cursorPosition = mapToScene(localCursorPos); + qDebug() << "Cursor pos " << globalCursorPos << " " << cursorPosition << " " << localCursorPos << mouseScreen << endl; + if (rect.contains(cursorPosition) && getMainWindow()->getPreferredScreen() == mouseScreen) +// qDebug() << "Cursor pos " << mapToScene(mapFromGlobal(QCursor::pos(QApplication::screens()[1]))); +#else QPointF cursorPosition = mapToScene(mapFromGlobal(cursor().pos()));// - rect.topLeft();//(QCursor::pos());///*this->mapFromGlobal(*/QCursor::pos()/*)*/; if (rect.contains(cursorPosition)) +#endif { painter->setPen(MM::CONTROL_COLOR); painter->drawLine(cursorPosition.x(), rect.y(), cursorPosition.x(), rect.height()); diff --git a/OutputGLWindow.cpp b/OutputGLWindow.cpp index 3f6347f..8ef86ae 100644 --- a/OutputGLWindow.cpp +++ b/OutputGLWindow.cpp @@ -87,7 +87,7 @@ void OutputGLWindow::setFullScreen(bool fullscreen) void OutputGLWindow::_updateToPreferredScreen() { // Check if user is on multiple screen (always pre - int screen = _preferredScreen; + int screen = getPreferredScreen(); //Move window to second screen before fullscreening it. setGeometry(QApplication::desktop()->screenGeometry(screen)); }