mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-19 20:44:16 +02:00
Guard elements-panel project-open auto-select against a detached item
- ElementsPanel::addProject auto-selects the first diagram via
setCurrentItem(qtwi_project->child(0)). When a project is opened before
the panel's first reload() has created its title-block collection items,
indexOfTopLevelItem(common_tbt_collection_item_) returns -1 and the
preceding insertChild() leaves qtwi_project detached from the tree model.
- The unguarded auto-select leaves a detached/invalid current item -- an
intermittent SIGSEGV in QTreeModel::index()/parent() on some builds; on
current master with Qt 6.11.2 the test shows the invalid selection without
a fault. Calling setCurrentItem() on an item the QTreeModel does not own is
unsafe; guard the auto-select with qtwi_project->treeWidget() so it runs
only when the item is attached.
- No behavioural change in the normal case: reload() re-adds the project
attached shortly after and performs the selection then.
- Pre-existing since a82f6de23 ("Add highlight current page in ProjectView").
Assisted-by: Claude Code
Signed-off-by: hairykiwi <174199+hairykiwi@users.noreply.github.com>
This commit is contained in:
@@ -156,9 +156,11 @@ QTreeWidgetItem *ElementsPanel::addProject(QETProject *project,
|
||||
|
||||
if (first_add){
|
||||
qtwi_project -> setExpanded(true);
|
||||
// on adding an project select first diagram
|
||||
setCurrentItem(qtwi_project -> child(0));
|
||||
qtwi_project -> child(0)->setSelected(true);
|
||||
// on adding a project select first diagram, once the project item is attached
|
||||
if (qtwi_project -> treeWidget()) {
|
||||
setCurrentItem(qtwi_project -> child(0));
|
||||
qtwi_project -> child(0)->setSelected(true);
|
||||
}
|
||||
}
|
||||
else {
|
||||
// 2. Check whether we can restore the previous selection
|
||||
|
||||
Reference in New Issue
Block a user