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

View File

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

View File

@@ -461,7 +461,7 @@ void Renderer::renderScene() {
rend_selection.drawSelection(fbo_out, cur_write_plane); rend_selection.drawSelection(fbo_out, cur_write_plane);
rend_service.renderService(); rend_service.renderService();
} else { } 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(); phase.end();