From 99064fe2ab32ed97a6e29bedfbe0ddb9dc893c8f Mon Sep 17 00:00:00 2001 From: Laurent Trinques Date: Fri, 27 Mar 2020 21:21:49 +0100 Subject: [PATCH] Moving elements by mouse does not respect the grid settings When moving element by mouse, snapping to grid uses fixed 10 px steps hardcoded in source instead of using the value from grid settings. When moved by keyboard, the grid step is respected. It is due to QPointF Diagram::snapToGrid(const QPointF &p) function not considering the settings. Thanks jethro for this patch --- sources/diagram.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 249b632b7..8794bb331 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -1652,7 +1652,11 @@ DiagramPosition Diagram::convertPosition(const QPointF &pos) { */ QPointF Diagram::snapToGrid(const QPointF &p) { - //Return a point rounded to the nearest pixel + QSettings settings; + int xGrid = settings.value("diagrameditor/Xgrid", Diagram::xGrid).toInt(); + int yGrid = settings.value("diagrameditor/Ygrid", Diagram::yGrid).toInt(); + + //Return a point rounded to the nearest pixel if (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier)) { int p_x = qRound(p.x()); @@ -1661,8 +1665,8 @@ QPointF Diagram::snapToGrid(const QPointF &p) } //Return a point snapped to the grid - int p_x = qRound(p.x() / Diagram::xGrid) * Diagram::xGrid; - int p_y = qRound(p.y() / Diagram::yGrid) * Diagram::yGrid; + int p_x = qRound(p.x() / xGrid) * xGrid; + int p_y = qRound(p.y() / yGrid) * yGrid; return (QPointF(p_x, p_y)); }