UI: fix invalid read on sensors that change while editing
This commit is contained in:
parent
34f129967b
commit
90f4538200
1 changed files with 9 additions and 12 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue