mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-03 01:04:13 +02:00
a16bac8f84
A selection of several parts is moved by ElementPrimitiveDecorator, which snapped to a fixed 1-unit step at every zoom. That is the "selection is big" half of #112: below 100 % one part landed on the 10 grid but a multi-part selection did not, and at 100-400 % it ignored the grid too. It now snaps to the editor's current grid, as a single part does; Ctrl still gives the fine 1-unit step. Resizing and arrow-key moves are unchanged. Also from review: add rows just below each zoom threshold to tst_elementviewgrid (each catches a moved threshold the old rows missed), and use one grid_step in drawBackground() instead of identical x/y copies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
54 lines
1.9 KiB
C++
54 lines
1.9 KiB
C++
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
#include <QtTest>
|
|
|
|
#include "editor/elementviewgrid.h"
|
|
|
|
// The symbol editor's snap step at each zoom (bugtracker #112): below
|
|
// 100 % the grid is hidden but parts must still snap every 10 units.
|
|
class tst_elementviewgrid : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private slots:
|
|
void stepAtZoom_data()
|
|
{
|
|
QTest::addColumn<qreal>("zoom");
|
|
QTest::addColumn<int>("step");
|
|
QTest::addColumn<bool>("drawGrid");
|
|
QTest::addColumn<bool>("drawCross");
|
|
|
|
QTest::newRow("10 % (fit to a big symbol)") << 0.10 << 10 << false << false;
|
|
QTest::newRow("62.5 %, the #112 case") << 0.625 << 10 << false << false;
|
|
QTest::newRow("100 %") << 1.0 << 10 << true << false;
|
|
QTest::newRow("200 %") << 2.0 << 10 << true << false;
|
|
QTest::newRow("400 %") << 4.0 << 5 << true << true;
|
|
QTest::newRow("800 %") << 8.0 << 2 << true << true;
|
|
QTest::newRow("1000 %") << 10.0 << 1 << true << true;
|
|
|
|
// Just below each threshold: the comparisons are strict (<), so a
|
|
// change to <= would move these rows into the next band.
|
|
QTest::newRow("99.9 %") << 0.999 << 10 << false << false;
|
|
QTest::newRow("399.9 %") << 3.999 << 10 << true << false;
|
|
QTest::newRow("401 %") << 4.01 << 5 << true << true;
|
|
QTest::newRow("799.9 %") << 7.999 << 5 << true << true;
|
|
QTest::newRow("999.9 %") << 9.999 << 2 << true << true;
|
|
}
|
|
|
|
void stepAtZoom()
|
|
{
|
|
QFETCH(qreal, zoom);
|
|
QFETCH(int, step);
|
|
QFETCH(bool, drawGrid);
|
|
QFETCH(bool, drawCross);
|
|
|
|
const ElementViewGrid grid = ElementViewGrid::forZoom(zoom);
|
|
QCOMPARE(grid.step, step);
|
|
QCOMPARE(grid.draw_grid, drawGrid);
|
|
QCOMPARE(grid.draw_cross, drawCross);
|
|
}
|
|
};
|
|
|
|
QTEST_APPLESS_MAIN(tst_elementviewgrid)
|
|
|
|
#include "tst_elementviewgrid.moc"
|