fix selection for highdpi
This commit is contained in:
@@ -93,7 +93,8 @@ void MouseController::mouseReleaseEvent(QMouseEvent * e) {
|
|||||||
|
|
||||||
|
|
||||||
void MouseController::mousePressEvent(QMouseEvent * e) {
|
void MouseController::mousePressEvent(QMouseEvent * e) {
|
||||||
downPos = e->pos();
|
QPoint cpos = e->pos() * view->devicePixelRatio();
|
||||||
|
downPos = cpos;
|
||||||
if (cur_action != RendererService::haNoAction && e->buttons() == Qt::LeftButton) {
|
if (cur_action != RendererService::haNoAction && e->buttons() == Qt::LeftButton) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -102,15 +103,15 @@ void MouseController::mousePressEvent(QMouseEvent * e) {
|
|||||||
view->renderer_.mouse_rect = QRect();
|
view->renderer_.mouse_rect = QRect();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!QRect(QPoint(), view->size()).contains(e->pos())) return;
|
if (!QRect(QPoint(), view->size()).contains(cpos)) return;
|
||||||
lastPos = e->pos();
|
lastPos = cpos;
|
||||||
downPos = e->pos();
|
downPos = cpos;
|
||||||
emit view->glMousePressEvent(e);
|
emit view->glMousePressEvent(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
||||||
QPoint cpos = e->pos();
|
QPoint cpos = e->pos() * view->devicePixelRatio();
|
||||||
if (cur_action != RendererService::haNoAction && (e->buttons() == Qt::LeftButton)) {
|
if (cur_action != RendererService::haNoAction && (e->buttons() == Qt::LeftButton)) {
|
||||||
RendererService & rs(view->renderer_.rend_service);
|
RendererService & rs(view->renderer_.rend_service);
|
||||||
ObjectBaseList objects = view->scene()->selectedObjects(true);
|
ObjectBaseList objects = view->scene()->selectedObjects(true);
|
||||||
@@ -189,7 +190,7 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
|||||||
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));
|
||||||
} else
|
} else
|
||||||
lastPos = e->pos();
|
lastPos = cpos;
|
||||||
emit view->objectsPositionChanged();
|
emit view->objectsPositionChanged();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -206,13 +207,8 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
|||||||
}
|
}
|
||||||
QRect g_rect(QPoint(), view->size());
|
QRect g_rect(QPoint(), view->size());
|
||||||
if (mouseRotate_) {
|
if (mouseRotate_) {
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
float dx = cpos.x() - lastPos.x();
|
||||||
float dx = e->x() - lastPos.x();
|
float dy = cpos.y() - lastPos.y();
|
||||||
float dy = e->y() - lastPos.y();
|
|
||||||
#else
|
|
||||||
float dx = e->position().toPoint().x() - lastPos.x();
|
|
||||||
float dy = e->position().toPoint().y() - lastPos.y();
|
|
||||||
#endif
|
|
||||||
if (e->buttons().testFlag(QT_MID_BUTTON)) {
|
if (e->buttons().testFlag(QT_MID_BUTTON)) {
|
||||||
if (cameraOrbit_) {
|
if (cameraOrbit_) {
|
||||||
view->camera()->orbitZ(dx / 4.f);
|
view->camera()->orbitZ(dx / 4.f);
|
||||||
@@ -229,8 +225,8 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
|||||||
emit view->cameraPosChanged(view->camera()->pos());
|
emit view->cameraPosChanged(view->camera()->pos());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (customMouseMove_) emit view->customMouseMoveEvent(e->pos(), lastPos, e->buttons());
|
if (customMouseMove_) emit view->customMouseMoveEvent(cpos, lastPos, e->buttons());
|
||||||
lastPos = e->pos();
|
lastPos = cpos;
|
||||||
if (e->buttons() == 0) {
|
if (e->buttons() == 0) {
|
||||||
cur_handle = QFlags<RendererService::HandleMesh>();
|
cur_handle = QFlags<RendererService::HandleMesh>();
|
||||||
cur_action = RendererService::haNoAction;
|
cur_action = RendererService::haNoAction;
|
||||||
@@ -267,13 +263,8 @@ void MouseController::mouseMoveEvent(QMouseEvent * e) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lastPos = g_rect.center();
|
lastPos = g_rect.center();
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
int dx = cpos.x() - lastPos.x();
|
||||||
int dx = e->x() - lastPos.x();
|
int dy = cpos.y() - lastPos.y();
|
||||||
int dy = e->y() - lastPos.y();
|
|
||||||
#else
|
|
||||||
int dx = e->position().toPoint().x() - lastPos.x();
|
|
||||||
int dy = e->position().toPoint().y() - lastPos.y();
|
|
||||||
#endif
|
|
||||||
emit view->glMouseMoveEvent(new QMouseEvent(QEvent::MouseMove, QPoint(dx, dy), e->button(), e->buttons(), e->modifiers()));
|
emit view->glMouseMoveEvent(new QMouseEvent(QEvent::MouseMove, QPoint(dx, dy), e->button(), e->buttons(), e->modifiers()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ QGLViewWindow::QGLViewWindow(QWidget * parent): QMainWindow(parent), Ui::QGLView
|
|||||||
view->view()->setHoverHaloEnabled(true);
|
view->view()->setHoverHaloEnabled(true);
|
||||||
view->view()->setDepthStart(0.1);
|
view->view()->setDepthStart(0.1);
|
||||||
view->view()->setSelectionMode(Scene::smMultiSelection);
|
view->view()->setSelectionMode(Scene::smMultiSelection);
|
||||||
view->view()->renderer_.addFramebufferEffect(new Effect1());
|
// view->view()->renderer_.addFramebufferEffect(new Effect1());
|
||||||
|
|
||||||
|
|
||||||
groupShadows->setChecked(view->view()->isFeatureEnabled(QGLView::qglShadowsEnabled));
|
groupShadows->setChecked(view->view()->isFeatureEnabled(QGLView::qglShadowsEnabled));
|
||||||
|
|||||||
Reference in New Issue
Block a user