          """ Reset the visible property and position of the given objects and add to the recycle
          bin.
  
          for image_id in images:
              self._canvas.itemconfig(image_id, image="")
              self._canvas.coords(image_id, 0, 0)
          for mesh in meshes:
              for key, mesh_ids in mesh.items():
                  coords = (0, 0, 0, 0) if key == "line" else (0, 0)
 
</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") </s> remove             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")

 </s> add             self._remove_rows(existing_rows, required_rows) </s> remove         if point_x > self._grid.dimensions[0]:
 </s> add         if not self._grid.is_valid or point_x > self._grid.dimensions[0]:
        Parameters
        ---------
        images: list
            List of image_ids to be recycled
        meshes: list
            List of dictionaries containing the mesh annotation ids to be recycled
        """
        logger.debug("Recycling objects: (images: %s, meshes: %s)", len(images), len(meshes))
          """ Reset the visible property and position of the given objects and add to the recycle
          bin.
  
        Parameters
        ---------
        images: list
            List of image_ids to be recycled
        meshes: list
            List of dictionaries containing the mesh annotation ids to be recycled
        """
        logger.debug("Recycling objects: (images: %s, meshes: %s)", len(images), len(meshes))
          for image_id in images:
              self._canvas.itemconfig(image_id, image="")
              self._canvas.coords(image_id, 0, 0)
          for mesh in meshes:
              for key, mesh_ids in mesh.items():
                  coords = (0, 0, 0, 0) if key == "line" else (0, 0)
keep keep add keep keep keep keep keep keep
 Bugfix - Manual Tool
  - Fix non-appearing landmark annotations in face viewer 
tools/manual/faceviewer/viewport.py