14.5: one View › Snap for all snapping
This commit is contained in:
14 files changed
+33
-43
No files matched your search
@@ -29,7 +29,7 @@ void CompositorMenusTests::everyEntryHasSwiftsShortcutWithCtrlForCommand()
|
||||
{"newCanvas", "Ctrl+N"}, {"openProject", "Ctrl+O"}, {"importImages", ""}, {"save", "Ctrl+S"}, {"saveAs", "Ctrl+Shift+S"},
|
||||
{"exportPNG", "Ctrl+Shift+E"}, {"exportJPEG", "Ctrl+Alt+Shift+S"},
|
||||
{"closeProject", "Ctrl+W"}, {"undo", "Ctrl+Z"}, {"redo", "Ctrl+Shift+Z"}, {"fit", "Ctrl+0"}, {"actualPixels", "Ctrl+1"},
|
||||
{"zoomIn", "Ctrl+="}, {"zoomOut", "Ctrl+-"}, {"pixelGrid", ""}, {"snap", ""}, {"showGrid", "Ctrl+'"}, {"showGuides", "Ctrl+;"}, {"gridSettings", ""}, {"showRulers", "Ctrl+R"}, {"snapEnabled", "Ctrl+Shift+;"}, {"snapToGuides", ""}, {"snapToGrid", ""}, {"snapToLayers", ""}, {"snapToDocumentBounds", ""}, {"lockGuides", "Ctrl+Alt+;"}, {"clearGuides", ""}, {"transformControls", "Ctrl+H"}, {"transformLayer", "Ctrl+T"},
|
||||
{"zoomIn", "Ctrl+="}, {"zoomOut", "Ctrl+-"}, {"pixelGrid", ""}, {"showGrid", "Ctrl+'"}, {"showGuides", "Ctrl+;"}, {"gridSettings", ""}, {"showRulers", "Ctrl+R"}, {"snapEnabled", "Ctrl+Shift+;"}, {"snapToGuides", ""}, {"snapToGrid", ""}, {"snapToLayers", ""}, {"snapToDocumentBounds", ""}, {"lockGuides", "Ctrl+Alt+;"}, {"clearGuides", ""}, {"transformControls", "Ctrl+H"}, {"transformLayer", "Ctrl+T"},
|
||||
{"layerViaCopy", "Ctrl+J"}, {"cut", "Ctrl+X"}, {"copy", "Ctrl+C"}, {"copyMerged", "Ctrl+Shift+C"}, {"paste", "Ctrl+V"}, {"keyboardShortcuts", ""}, {"fillForeground", "Alt+Backspace"}, {"fillBackground", "Ctrl+Backspace"}, {"clearSelectionPixels", ""}, {"contentAwareFill", "Shift+Backspace"}, {"clippingMask", "Ctrl+Alt+G"}, {"groupLayers", "Ctrl+G"},
|
||||
{"ungroupLayers", "Ctrl+Shift+G"}, {"moveOutOfFolder", ""}, {"newBlankLayer", "Ctrl+Shift+N"}, {"renameLayer", ""}, {"layerVisibility", ""}, {"moveLayerUp", "Ctrl+]"}, {"moveLayerDown", "Ctrl+["},
|
||||
{"mergeLayers", "Ctrl+E"}, {"flipHorizontal", ""}, {"flipVertical", ""}, {"deleteLayer", ""},
|
||||
@@ -51,7 +51,7 @@ void CompositorMenusTests::everyEntryHasSwiftsShortcutWithCtrlForCommand()
|
||||
QCOMPARE(titles, (QStringList{"&File", "&Edit", "&View", "&Select", "&Image", "Fil&ter", "&Layer"}));
|
||||
QCOMPARE(menus[0]->actions().size(), 12);
|
||||
QCOMPARE(menus[1]->actions().size(), 13);
|
||||
QCOMPARE(menus[2]->actions().size(), 17);
|
||||
QCOMPARE(menus[2]->actions().size(), 16);
|
||||
QCOMPARE(menus[3]->actions().size(), 11);
|
||||
// Swift 1.3.4's Color Range… follows Subject.
|
||||
const QList<QAction *> select = menus[3]->actions();
|
||||
|
||||
@@ -200,7 +200,7 @@ void CropCanvasTests::snappingReachesEightViewPoints()
|
||||
shown.drag(from, to);
|
||||
QCOMPARE(shown.frame(), std::optional(QRectF(100, 50, 300, 120)));
|
||||
// Snap off: the edges stay where the pointer puts them.
|
||||
shown.session.setSnappingEnabled(false);
|
||||
shown.session.setSnapEnabled(false);
|
||||
shown.session.setCropRect(std::nullopt);
|
||||
shown.drag(from, to);
|
||||
QCOMPARE(shown.frame(), std::optional(QRectF(100, 50, 290, 120)));
|
||||
|
||||
@@ -451,11 +451,11 @@ void GuideTests::drawnPointsSnapToTheSnapToTargets()
|
||||
// The canvas's middle is no target for a drawn point.
|
||||
QCOMPARE(session->snappedPoint(QPointF(62, 149), 2), QPointF(64, 149));
|
||||
QVERIFY(session->snapGuides.ys.empty());
|
||||
session->setSnappingEnabled(false);
|
||||
session->setSnapEnabled(false);
|
||||
session->snapGuides = {{1}, {2}};
|
||||
QCOMPARE(session->snappedPoint(QPointF(62, 20), 3), QPointF(62, 20));
|
||||
QVERIFY(session->snapGuides.xs.empty() && session->snapGuides.ys.empty());
|
||||
session->setSnappingEnabled(true);
|
||||
session->setSnapEnabled(true);
|
||||
session->setSnapEnabled(false);
|
||||
QCOMPARE(session->snappedPoint(QPointF(62, 20), 3), QPointF(62, 20));
|
||||
QVERIFY(session->snapGuides.xs.empty() && session->snapGuides.ys.empty());
|
||||
|
||||
@@ -25,13 +25,13 @@ void ResizeSnapCanvasTests::resizedEdgesSnapUnlessCtrl()
|
||||
QCOMPARE(layerWith(session, shown.red).transform.size, QSizeF(246, 100));
|
||||
// Snapping off, nothing snaps.
|
||||
session.undo();
|
||||
session.setSnappingEnabled(false);
|
||||
session.setSnapEnabled(false);
|
||||
shown.drag(QPointF(250, 150), QPointF(396, 150));
|
||||
QCOMPARE(layerWith(session, shown.red).transform.size, QSizeF(246, 100));
|
||||
QCOMPARE(session.snapGuides, SnapGuides{});
|
||||
// Locked, Shift frees the lock: a corner snaps both edges.
|
||||
session.undo();
|
||||
session.setSnappingEnabled(true);
|
||||
session.setSnapEnabled(true);
|
||||
session.setLocksTransformRatio(true);
|
||||
shown.press(QPointF(250, 200));
|
||||
shown.move(QPointF(396, 296), Qt::ShiftModifier);
|
||||
|
||||
@@ -171,10 +171,10 @@ void ResizeSnapTests::aTieTakesTheLowEdge()
|
||||
void ResizeSnapTests::snappingOffOrAnotherDragLeavesThePoint()
|
||||
{
|
||||
Resized resized;
|
||||
resized.session.setSnappingEnabled(false);
|
||||
resized.session.setSnapEnabled(false);
|
||||
const LayerTransform result = resized.resize(3, QPointF(110, 60), QPointF(147, 60), false);
|
||||
QCOMPARE(result.origin.x() + result.size.width(), 147.0);
|
||||
resized.session.setSnappingEnabled(true);
|
||||
resized.session.setSnapEnabled(true);
|
||||
const TransformDrag move{layerWith(resized.session, resized.layer).transform, QPointF(110, 60), {TransformDrag::Kind::move, 3}, std::nullopt};
|
||||
QCOMPARE(resized.session.snappedResizePoint(QPointF(147, 60), move, false, {resized.layer}, 5, [&](QPointF to) { return move.updated(to, false, false); }),
|
||||
QPointF(147, 60));
|
||||
|
||||
@@ -17,7 +17,7 @@ namespace {
|
||||
struct Snapping : Canvas {
|
||||
Snapping()
|
||||
{
|
||||
session.setSnappingEnabled(true);
|
||||
session.setSnapEnabled(true);
|
||||
session.setSnapEnabled(true);
|
||||
session.setSnapToDocumentBounds(true);
|
||||
session.setSnapToLayers(false);
|
||||
@@ -151,7 +151,7 @@ void SnapDrawingCanvasTests::aMovedSelectionSnapsItsEdges()
|
||||
QVERIFY(session->beginSelectionMove());
|
||||
const double whole = std::round(2 - left);
|
||||
QCOMPARE(session->snappedSelectionOffset(QSizeF(whole, 0), 3), QSizeF(whole - (left + whole), 0));
|
||||
session->setSnappingEnabled(false);
|
||||
session->setSnapEnabled(false);
|
||||
QCOMPARE(session->snappedSelectionOffset(QSizeF(-8.6, 0), 3), QSizeF(-8.6, 0));
|
||||
QVERIFY(session->snapGuides.xs.empty());
|
||||
}
|
||||
|
||||
@@ -77,13 +77,13 @@ void TransformSnapTests::snappedMoveNudgesWithinToleranceAndKeepsTheGuides()
|
||||
const LayerTransform snapped = session.snappedMove(draft, {a}, 5);
|
||||
QVERIFY(snapped != draft && !session.snapGuides.xs.empty());
|
||||
QSignalSpy changes(&session, &EditorSession::changed);
|
||||
session.setSnappingEnabled(false);
|
||||
session.setSnapEnabled(false);
|
||||
QVERIFY(!session.snappingEnabled() && changes.count() == 1);
|
||||
QCOMPARE(session.snapGuides, SnapGuides{});
|
||||
session.snapGuides = SnapGuides{{1}, {2}};
|
||||
QCOMPARE(session.snappedMove(draft, {a}, 5), draft);
|
||||
QCOMPARE(session.snapGuides, SnapGuides{});
|
||||
session.setSnappingEnabled(true);
|
||||
session.setSnapEnabled(true);
|
||||
QCOMPARE(session.snappedMove(draft, {a}, 5), snapped);
|
||||
}
|
||||
|
||||
|
||||
+10
-9
@@ -71,15 +71,16 @@ void ViewMenuTests::thePixelGridEntryTogglesTheSession()
|
||||
QVERIFY(!grid.isChecked());
|
||||
bar.workspace.newCanvas();
|
||||
QVERIFY(grid.isChecked() && grid.isEnabled());
|
||||
// Snap, beneath it, follows the session the same way.
|
||||
QAction &snap = bar.action("snap");
|
||||
QVERIFY(snap.isCheckable() && snap.isChecked() && snap.isEnabled() && snap.text() == "Snap");
|
||||
snap.trigger();
|
||||
QVERIFY(!bar.session().snappingEnabled() && !snap.isChecked());
|
||||
snap.trigger();
|
||||
QVERIFY(bar.session().snappingEnabled() && snap.isChecked());
|
||||
bar.session().setSnappingEnabled(false);
|
||||
QVERIFY(!snap.isChecked());
|
||||
// One Snap for all snapping (Swift 1.4.6).
|
||||
QVERIFY(!bar.window.findChild<QAction *>("snap"));
|
||||
QStringList titles;
|
||||
for (const QAction *entry : bar.window.findChildren<QAction *>())
|
||||
titles << entry->text();
|
||||
QCOMPARE(titles.count("Snap"), qsizetype(1));
|
||||
bar.session().setSnapEnabled(false);
|
||||
QVERIFY(!bar.session().snappingEnabled() && !bar.action("snapEnabled").isChecked());
|
||||
bar.session().setSnapEnabled(true);
|
||||
QVERIFY(bar.session().snappingEnabled() && bar.action("snapEnabled").isChecked());
|
||||
}
|
||||
|
||||
void ViewMenuTests::guideEntriesFollowTheSession()
|
||||
|
||||
Reference in new issue
Block a user