mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-09-27 12:34:14 +02:00
030e6ebf00
The element and element_info tables had two independent insert paths -- addElement() for an element added to a live diagram, and populateElementTable()/populateElementInfoTable() for a full rebuild -- which bound the same row differently. The incremental path wrote kindInformations()["type"] into element.sub_type; the bulk path wrote elementData().masterTypeToString(). So the table held different values depending on whether the project had been reloaded since the element was placed, and element_nomenclature_view exposes that column as element_sub_type, which ElementQueryWidget filters on for the Coil, Protection, Commutator and PLC nomenclature options. That divergence is the same shape as the type-filter one fixed in the previous commit, and it is the reason this stack kept finding bugs that were invisible while editing and only appeared after a reload. Rather than correct a second instance of it, both paths now go through bindElementValues() and bindElementInfoValues(), following the bindDiagramInfoValues() helper this class already had. Live and reloaded now agree by construction instead of by coincidence. The bulk path's values are the ones kept, because they are what every already saved project contains: nothing a reload produces changes, and the previous commit's 19-project BOM regression stays valid. It is the live path that moves, onto the values a reload would have given it anyway. Measured, placing one element into a new project and then saving and reopening it: live element table: slave/ x1 reloaded element table: slave/ x1 and for the same element, what the two paths would have stored: bulk (now shared): "" incremental (before this commit): "simple" Re-ran the BOM regression over the same 19 projects after this change: content identical to the pre-change baseline on all 19, and identical line-for-line on 18, the exception being the three byte-identical photovoltaique rows already described in the previous commit. Note for anyone reading masterTypeToString(): the const no-argument overload returns an empty string for anything that is not a Master, so the "coil" fallback in the static overload is only reached for real master elements. Non-master elements get an empty sub_type, not a spurious "coil".