fix highdpi mouse pos

This commit is contained in:
2023-02-07 11:14:46 +03:00
parent a2695ae481
commit 9cc870c996
3 changed files with 21 additions and 20 deletions

View File

@@ -103,7 +103,7 @@ void MouseController::mousePressEvent(QMouseEvent * e) {
view->renderer_.mouse_rect = QRect();
return;
}
if (!QRect(QPoint(), view->size()).contains(cpos)) return;
if (!QRect(QPoint(), view->size() * view->devicePixelRatio()).contains(cpos)) return;
lastPos = cpos;
downPos = cpos;
emit view->glMousePressEvent(e);
@@ -188,9 +188,10 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
axe_vector[a] = 1.;
foreach(ObjectBase * o, objects)
o->scale(QVector3D(1, 1, 1) + (axe_vector * sc));
QCursor::setPos(view->mapToGlobal(downPos));
} else
QCursor::setPos(view->mapToGlobal(downPos / view->devicePixelRatio()));
} else {
lastPos = cpos;
}
emit view->objectsPositionChanged();
return;
}
@@ -205,7 +206,7 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
}
return;
}
QRect g_rect(QPoint(), view->size());
QRect g_rect(QPoint(), view->size() * view->devicePixelRatio());
if (mouseRotate_) {
float dx = cpos.x() - lastPos.x();
float dy = cpos.y() - lastPos.y();

View File

@@ -150,7 +150,7 @@ void QGLView::timerEvent(QTimerEvent *) {
void QGLView::render() {
resizeGL(pixelWidth(), pixelHeight());
emit glBeginPaint();
renderer_.mouse_pos = mapFromGlobal(QCursor::pos());
renderer_.mouse_pos = mapFromGlobal(QCursor::pos()) * devicePixelRatio();
renderer_.renderScene();
emit glEndPaint();
fps_tm = time.elapsed();

View File

@@ -461,7 +461,7 @@ void Renderer::renderScene() {
rend_selection.drawSelection(fbo_out, cur_write_plane);
rend_service.renderService();
} else {
fbo_out.blit(cur_write_plane, 0, 0, fbo_out.rect(), QRect(QPoint(), view->size()));
fbo_out.blit(cur_write_plane, 0, 0, fbo_out.rect(), QRect(QPoint(), view->size() * view->devicePixelRatio()));
}
phase.end();