@@ -426,7 +426,6 @@ void LabelImages::delete_selected_annotation(){
426426 return ;
427427 }
428428
429- std::string old_label = m_annotations[m_selected_obj_idx].label ;
430429 m_annotations.erase (m_annotations.begin () + m_selected_obj_idx);
431430
432431 if (m_annotations.size () == 0 ){ // no more annotations
@@ -443,6 +442,7 @@ void LabelImages::delete_selected_annotation(){
443442
444443
445444 m_selected_obj_idx = m_annotations.size (); // don't select anything after deleting an object, but keep the old selected label
445+ std::string old_label = selected_label ();
446446 set_selected_label (old_label);
447447 update_rendered_objects ();
448448}
@@ -458,6 +458,8 @@ void LabelImages::change_annotation_selection_by_mouse(double x, double y){
458458
459459 const size_t old_selected_idx = m_selected_obj_idx;
460460
461+ m_selected_obj_idx = m_annotations.size (); // de-select annotations by default, when clicking the screen
462+
461463 size_t closest_distance = SIZE_MAX;
462464 std::vector<size_t > zero_distance_annotations;
463465 for (size_t i = 0 ; i < m_annotations.size (); i++){
@@ -490,7 +492,11 @@ void LabelImages::change_annotation_selection_by_mouse(double x, double y){
490492 }
491493 }
492494
493- if (old_selected_idx != m_selected_obj_idx){
495+ if (m_selected_obj_idx == m_annotations.size ()){ // no annotation selected
496+ std::string old_label = selected_label ();
497+ set_selected_label (old_label);
498+ update_rendered_objects ();
499+ }else if (old_selected_idx != m_selected_obj_idx){ // different object selected
494500 std::string new_label = m_annotations[m_selected_obj_idx].label ;
495501 set_selected_label (new_label);
496502 update_rendered_objects ();
0 commit comments