Commit cf178232 authored by pixhawk's avatar pixhawk

Fixed some bugs that allowed to have multiple or no "current" mission elements in Edit list

parent 763ec366
...@@ -401,6 +401,19 @@ int UASWaypointManager::removeWaypoint(quint16 seq) ...@@ -401,6 +401,19 @@ int UASWaypointManager::removeWaypoint(quint16 seq)
if (seq < waypointsEditable.size()) if (seq < waypointsEditable.size())
{ {
Waypoint *t = waypointsEditable[seq]; Waypoint *t = waypointsEditable[seq];
if (t->getCurrent() == true) //trying to remove the current waypoint
{
if (seq+1 < waypointsEditable.size()) // setting the next waypoint as current
{
waypointsEditable[seq+1]->setCurrent(true);
}
else if (seq-1 >= 0) //if deleting the last on the list, then setting the previous waypoint as current
{
waypointsEditable[seq-1]->setCurrent(true);
}
}
waypointsEditable.remove(seq); waypointsEditable.remove(seq);
delete t; delete t;
t = NULL; t = NULL;
......
...@@ -293,7 +293,7 @@ void WaypointList::addCurrentPositionWaypoint() ...@@ -293,7 +293,7 @@ void WaypointList::addCurrentPositionWaypoint()
yawGlobal = last->getYaw(); yawGlobal = last->getYaw();
} }
// Create global frame waypoint per default // Create global frame waypoint per default
wp = new Waypoint(0, uas->getLatitude(), uas->getLongitude(), uas->getAltitude(), 0, acceptanceRadiusGlobal, holdTime, yawGlobal, true, true, MAV_FRAME_GLOBAL_RELATIVE_ALT, MAV_CMD_NAV_WAYPOINT); wp = new Waypoint(0, uas->getLatitude(), uas->getLongitude(), uas->getAltitude(), 0, acceptanceRadiusGlobal, holdTime, yawGlobal, true, false, MAV_FRAME_GLOBAL_RELATIVE_ALT, MAV_CMD_NAV_WAYPOINT);
WPM->addWaypointEditable(wp); WPM->addWaypointEditable(wp);
updateStatusLabel(tr("Added GLOBAL, ALTITUDE OVER GROUND waypoint")); updateStatusLabel(tr("Added GLOBAL, ALTITUDE OVER GROUND waypoint"));
} }
...@@ -307,7 +307,7 @@ void WaypointList::addCurrentPositionWaypoint() ...@@ -307,7 +307,7 @@ void WaypointList::addCurrentPositionWaypoint()
holdTime = last->getHoldTime(); holdTime = last->getHoldTime();
} }
// Create local frame waypoint as second option // Create local frame waypoint as second option
wp = new Waypoint(0, uas->getLocalX(), uas->getLocalY(), uas->getLocalZ(), uas->getYaw(), acceptanceRadiusLocal, holdTime, 0.0, true, true, MAV_FRAME_LOCAL_NED, MAV_CMD_NAV_WAYPOINT); wp = new Waypoint(0, uas->getLocalX(), uas->getLocalY(), uas->getLocalZ(), uas->getYaw(), acceptanceRadiusLocal, holdTime, 0.0, true, false, MAV_FRAME_LOCAL_NED, MAV_CMD_NAV_WAYPOINT);
WPM->addWaypointEditable(wp); WPM->addWaypointEditable(wp);
updateStatusLabel(tr("Added LOCAL (NED) waypoint")); updateStatusLabel(tr("Added LOCAL (NED) waypoint"));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment