| 1622 | } |
| 1623 | |
| 1624 | void |
| 1625 | TrackerPanel::onMultipleKeysRemovedOnTrackCenter(const TrackMarkerPtr &marker, |
| 1626 | const std::list<double> &keys) |
| 1627 | { |
| 1628 | TrackKeysMap::iterator found = _imp->keys.find(marker); |
| 1629 | |
| 1630 | if ( found == _imp->keys.end() ) { |
| 1631 | return; |
| 1632 | } |
| 1633 | std::list<SequenceTime> toRemove; |
| 1634 | |
| 1635 | for (std::list<double>::const_iterator it = keys.begin(); it != keys.end(); ++it) { |
| 1636 | std::set<double>::iterator it2 = found->second.centerKeys.find(*it); |
| 1637 | if ( it2 != found->second.centerKeys.end() ) { |
| 1638 | found->second.centerKeys.erase(it2); |
| 1639 | } |
| 1640 | toRemove.push_back(*it); |
| 1641 | } |
| 1642 | |
| 1643 | |
| 1644 | if (found->second.visible) { |
| 1645 | NodeGuiPtr node = _imp->node.lock(); |
| 1646 | if (!node) { |
| 1647 | return; |
| 1648 | } |
| 1649 | NodePtr internalNode = node->getNode(); |
| 1650 | if (!internalNode) { |
| 1651 | return; |
| 1652 | } |
| 1653 | AppInstancePtr app = internalNode->getApp(); |
| 1654 | if (!app) { |
| 1655 | return; |
| 1656 | } |
| 1657 | app->removeMultipleKeyframeIndicator(toRemove, true); |
| 1658 | } |
| 1659 | } |
| 1660 | |
| 1661 | void |
| 1662 | TrackerPanel::onMultipleKeyframesSetOnTrackCenter(const TrackMarkerPtr& marker, |