def _select_at_point(self, point): result = [] doc = self.presenter layers = doc.get_editable_layers() layers.reverse() win_point = doc.canvas.doc_to_win(point) hit_surface = doc.canvas.hit_surface for layer in layers: if result: break objs = [] + layer.childs objs.reverse() for obj in objs: bbox = self._get_fixed_bbox(obj.cache_bbox) d = 0.0 if obj.style[1]: d = doc.canvas.zoom * obj.style[1][1] bbox = libgeom.enlarge_bbox(bbox, d, d) if libgeom.is_point_in_bbox(win_point, bbox): if hit_surface.is_point_into_object(win_point, obj): result.append(obj) break return result