UI: fix invalid read on sensors that change while editing

This commit is contained in:
Carl Philipp Klemm 2026-04-27 21:30:54 +02:00
parent 34f129967b
commit 90f4538200

View file

@ -37,15 +37,15 @@ void SensorListWidget::onDoubleClick(QTreeWidgetItem *item, int column)
{
if(item && item->type() == 1001)
{
const Sensor& sensor = static_cast<SensorListItem*>(item)->getSensor();
Sensor sensor = static_cast<SensorListItem*>(item)->getSensor();
SensorSettingsDialog diag(sensor, this);
if(diag.exec())
{
Sensor updatedSensor = sensor;
updatedSensor.name = diag.getName();
updatedSensor.hidden = diag.getHidden();
updatedSensor.groupName = diag.getGroupName();
globalSensors.sensorGotState(updatedSensor, SENSOR_UPDATE_USER);
sensor.name = diag.getName();
sensor.hidden = diag.getHidden();
sensor.groupName = diag.getGroupName();
globalSensors.sensorGotState(sensor, SENSOR_UPDATE_USER);
}
}
}
@ -103,8 +103,7 @@ void SensorListWidget::sensorsChanged(std::vector<Sensor> sensors)
itemString.append(sensor.getUnit());
}
SensorListItem* sensorItem = new SensorListItem(
sensor.name + (sensor.hidden ? " (H)" : ""), sensor);
SensorListItem* sensorItem = new SensorListItem(sensor.name + (sensor.hidden ? " (H)" : ""), sensor);
sensorItem->setText(0, sensor.name + (sensor.hidden ? " (H)" : ""));
sensorItem->setText(1, itemString);
if(sensor.type <= 128)
@ -124,10 +123,8 @@ void SensorListWidget::sensorsChanged(std::vector<Sensor> sensors)
groupItem->setText(0, sensor.groupName);
bool wasExpanded = expandedStates.value(sensor.groupName, false);
if(!wasExpanded && pendingGroupExpandedStates_.contains(sensor.groupName))
{
wasExpanded = pendingGroupExpandedStates_[sensor.groupName];
}
if(pendingGroupExpandedStates_.contains(sensor.groupName))
wasExpanded = pendingGroupExpandedStates_.take(sensor.groupName);
groupItem->setExpanded(wasExpanded);
groupItems[sensor.groupName] = groupItem;
}