Absolute mouse input now works on secondary monitors

This commit is contained in:
Cacodemon345
2023-03-04 23:10:43 +06:00
parent e650ec7505
commit 7de41b383c
2 changed files with 18 additions and 3 deletions

View File

@@ -733,7 +733,9 @@ MainWindow::initRendererMonitorSlot(int monitor_index)
secondaryRenderer->showMaximized();
}
secondaryRenderer->switchRenderer((RendererStack::Renderer) vid_api);
secondaryRenderer->setMouseTracking(true);
}
connect(this, &MainWindow::pollMouse, secondaryRenderer.get(), &RendererStack::mousePoll, Qt::DirectConnection);
}
}

View File

@@ -127,7 +127,7 @@ qt_mouse_capture(int on)
{
if (!on) {
mouse_capture = 0;
QApplication::setOverrideCursor(Qt::ArrowCursor);
if (QApplication::overrideCursor()) QApplication::restoreOverrideCursor();
#ifdef __APPLE__
CGAssociateMouseAndMouseCursorPosition(true);
#endif
@@ -144,6 +144,17 @@ qt_mouse_capture(int on)
void
RendererStack::mousePoll()
{
if (m_monitor_index >= 1) {
if (mouse_mode >= 1) {
mouse_x_abs = mousedata.x_abs;
mouse_y_abs = mousedata.y_abs;
if (!mouse_tablet_in_proximity) {
mouse_tablet_in_proximity = mousedata.mouse_tablet_in_proximity;
}
}
return;
}
#ifdef Q_OS_WINDOWS
if (mouse_mode == 0) {
mouse_x_abs = mousedata.x_abs;
@@ -151,6 +162,7 @@ RendererStack::mousePoll()
return;
}
#endif
#ifndef __APPLE__
mouse_x = mousedata.deltax;
mouse_y = mousedata.deltay;
@@ -270,8 +282,9 @@ void
RendererStack::leaveEvent(QEvent *event)
{
mousedata.mouse_tablet_in_proximity = 0;
if (mouse_mode == 1)
QApplication::setOverrideCursor(Qt::ArrowCursor);
if (mouse_mode == 1 && QApplication::overrideCursor())
QApplication::restoreOverrideCursor();
if (QApplication::platformName().contains("wayland")) {
event->accept();
return;