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