Project tabs drag to reorder; tabs that don't fit gather in a menu (13.14)

This commit is contained in:
ZacharyZhang-NY committed 2026-10-01 16:22:27 -04:00
1 parent 0616f9b006
commit 3f2b99f045
15 files changed
+957 -138

No files matched your search

+32
View File
@@ -42,6 +42,7 @@ private slots:
void everyChangeIsAnnouncedAndRefusalsAreSilent();
void aDropThatIsNoLayerIdIsIgnored();
void anOpenFilterHoldsTheSwitch();
void moveTabReordersWithoutTouchingSelectionOrDocuments();
};
void ProjectWorkspaceTests::newCanvasOpensAnEmptyTabWithoutAModal()
@@ -358,5 +359,36 @@ void ProjectWorkspaceTests::anOpenFilterHoldsTheSwitch()
QVERIFY(workspace.canSwitch());
}
void ProjectWorkspaceTests::moveTabReordersWithoutTouchingSelectionOrDocuments()
{
ProjectWorkspace workspace;
const QUuid a = workspace.current().id, b = workspace.addTab(false).id, c = workspace.addTab(false).id;
const auto order = [&] {
std::vector<QUuid> ids;
for (const std::shared_ptr<ProjectTab> &tab : workspace.tabs())
ids.push_back(tab->id);
return ids;
};
QSignalSpy changed(&workspace, &ProjectWorkspace::changed);
workspace.moveTab(c, 0);
QVERIFY((order() == std::vector<QUuid>{c, a, b}));
workspace.moveTab(a, 2);
QVERIFY((order() == std::vector<QUuid>{c, b, a}));
QCOMPARE(changed.size(), 2);
// Out of range clamps to the ends.
workspace.moveTab(c, 99);
QVERIFY((order() == std::vector<QUuid>{b, a, c}));
workspace.moveTab(c, -4);
QVERIFY((order() == std::vector<QUuid>{c, b, a}));
QCOMPARE(changed.size(), 4);
// Where it is, or no tab: nothing, silently.
workspace.moveTab(a, 2);
workspace.moveTab(QUuid::createUuid(), 0);
QVERIFY((order() == std::vector<QUuid>{c, b, a}));
QCOMPARE(changed.size(), 4);
// Chrome: the selection stays.
QCOMPARE(workspace.selectedID(), c);
}
QTEST_MAIN(ProjectWorkspaceTests)
#include "ProjectWorkspaceTests.moc"