mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-20 05:14:16 +02:00
9a41e01187
A symbol built after opening (lazy folios) links to the partners its link rows name, and to the symbols whose rows name it; its file's list only adds what the rows miss. The rows keep a partner on a folio not built until it is built, in its saved place, so a symbol no longer keeps a list of its own: the list read from the file is dropped once opening has filled the database. pendingLinks(), waitingLinks(), keepsSavedLinks(), linksToSave() and QETProject::waitingLinkTargets() go; the callers that asked a symbol for its waiting partners ask the database (waitingPartners()). When its links change, a symbol's rows are written from its built partners and the waiting partners its rows held, in their order (rowsToWrite()), so a full rewrite of the table keeps them too. A symbol built alone as a partner on a folio not built (Diagram::buildSymbols()) counts as built: its rows are kept, it is not waiting (waitingSymbols(), waitingPartners()), so saving does not build its folio, and removing it does not remove the rows naming it. A row naming a placed symbol that has not linked yet (its folio being built) is kept too. At opening the database holds no link until its fill (forgetLinks()); the symbols read their files' lists until then, and the fill takes their order: a symbol's own rows, its list, then the rows naming it. The symbols waiting on folios not built are cached and updated as folios are built. QET_CHECK_LINK_ROWS now checks the rows against the links: each built partner in its order, no other row but to a folio not built. tst_resaveunchanged::undoKeepsLinksToUnbuiltFolios: m_000 opened with lazy folios, a contact, its folio or its coil's folio (not built) removed, then undone: every link saved as before. QETZ-DB-FIRST stage 2a-3. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>