          existing_rows = len(self._images)
          logger.trace("existing_rows: %s. required_rows: %s", existing_rows, required_rows)
  
          if existing_rows > required_rows:
              for image_id, mesh_ids in zip(self._images[required_rows: existing_rows].flatten(),
                                            self._meshes[required_rows: existing_rows].flatten()):
                  logger.trace("Hiding image id: %s", image_id)
                  self._canvas.itemconfig(image_id, image="")
                  for ids in mesh_ids.values():
                      for mesh_id in ids:
                          self._canvas.itemconfig(mesh_id, state="hidden")
  
          if existing_rows < required_rows:
              self._add_rows(existing_rows, required_rows)
  
          self._shift()
  
 
</s> remove             self._recycle_objects()
 </s> add             self._reset_viewport() </s> remove         logger.debug("existing rows: %s, required_rows: %s, base_coords: %s",
 </s> add         logger.trace("existing rows: %s, required_rows: %s, base_coords: %s", </s> remove     def _recycle_objects(self):
        """  On a column count change, place all existing objects into the recycle bin so that
        they can be used for the new grid shape and reset the objects size to the new size. """
 </s> add     def _reset_viewport(self):
        """ Reset all objects in the viewport on a column count change. Reset the viewport size
        to the newly specified face size. """
        logger.debug("Resetting Viewport")
            self._remove_rows(existing_rows, required_rows)
          existing_rows = len(self._images)
          logger.trace("existing_rows: %s. required_rows: %s", existing_rows, required_rows)
  
          if existing_rows > required_rows:
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
            self._remove_rows(existing_rows, required_rows)
          if existing_rows < required_rows:
              self._add_rows(existing_rows, required_rows)
  
          self._shift()
  
keep keep keep keep replace replace replace replace replace replace replace replace keep keep keep keep keep
 Bugfix - Manual Tool
  - Fix non-appearing landmark annotations in face viewer 
tools/manual/faceviewer/viewport.py