fix highdpi mouse pos
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user