Fix jump to element search.

This commit is contained in:
Andre Rummler
2026-10-04 01:04:44 +02:00
parent d76f3528ae
commit 8eb2024bb1
8 changed files with 81 additions and 26 deletions
-12
View File
@@ -729,15 +729,3 @@ add_executable(
add_test(NAME tst_xrefpos COMMAND tst_xrefpos)
target_include_directories(tst_xrefpos PRIVATE ${QET_DIR}/sources)
target_link_libraries(tst_xrefpos PRIVATE Qt::Test Qt::Widgets Qt::Xml pugixml::pugixml)
# Qt 6.4.2 writes the attributes of an element in an order that changes from
# one process to the next, so a project saved twice by two runs of the binary
# differs in bytes only (seen on projects without any numbering, too). A fixed
# hash seed makes the order stable; it changes nothing for a newer Qt.
if(Qt6_VERSION VERSION_LESS 6.5.0)
foreach(qet_test tst_resaveunchanged tst_elementautonumids)
if(TEST ${qet_test})
set_tests_properties(${qet_test} PROPERTIES ENVIRONMENT "QT_HASH_SEED=0")
endif()
endforeach()
endif()
+33
View File
@@ -267,6 +267,39 @@ private slots:
QVERIFY2(read(first) == read(second), "the second save changed the file");
}
// The id given to a numbering of a file written before the ids is the
// file's own: two projects which both have a numbering of the same name
// do not get the same id, or a paste from one into the other would
// take the other's numbering for the same one.
void derivedIdsBelongToTheirProject()
{
QFile in(QStringLiteral(QET_EXAMPLES_DIR "/industrial.qet"));
QVERIFY(in.open(QIODevice::ReadOnly));
QDomDocument doc;
QVERIFY(doc.setContent(&in));
doc.documentElement().setAttribute(QStringLiteral("title"), QStringLiteral("Another project"));
const QString other = m_dir.filePath(QStringLiteral("another-project.qet"));
QFile out(other);
QVERIFY(out.open(QIODevice::WriteOnly));
out.write(doc.toByteArray());
out.close();
const QString first = resave(QStringLiteral(QET_EXAMPLES_DIR "/industrial.qet"));
const QString second = resave(other);
QVERIFY2(!first.isEmpty() && !second.isEmpty(), "--resave failed");
const Saved a = parse(read(first));
const Saved b = parse(read(second));
QVERIFY(a.scheme_id.contains(QStringLiteral("Equipment")));
QVERIFY(b.scheme_id.contains(QStringLiteral("Equipment")));
QVERIFY(!a.scheme_id.value(QStringLiteral("Equipment")).isNull());
QVERIFY2(a.scheme_id.value(QStringLiteral("Equipment")) != b.scheme_id.value(QStringLiteral("Equipment")),
"two projects gave the same id to their numbering of the same name");
// each keeps its own ids when saved again
const QString again = resave(second);
QVERIFY(!again.isEmpty());
QCOMPARE(parse(read(again)).scheme_id, b.scheme_id);
}
// Rename, refused rename and removal, an edit that keeps the numbers,
// an edit that renumbers, and undo/redo: through the scripting API,
// which goes through the same ElementAutoNumSchemeCommand as the UI.
-3
View File
@@ -122,9 +122,6 @@ private slots:
// (#973), and a value with accents comes back as it went in.
void singleSpaceValueKept()
{
#if QT_VERSION < QT_VERSION_CHECK(6, 5, 0)
QSKIP("QDomDocument::PreserveSpacingOnlyNodes needs Qt 6.5 (see QETProject::openFile)");
#endif
QByteArray xml = read(QStringLiteral(QET_EXAMPLES_DIR "/Projet_vierge.qet"));
QVERIFY(xml.contains("<properties>"));
xml.replace("<properties>",