def METHOD_NAME(
    self, window_pos=None, space_pos=None, event_type=None, modifiers=None, **kwargs
):
    # We don't set tool_active here, as this can't be properly honored...
    # And we don't care about nearest_snap either...
    response = RESPONSE_CHAIN
    if event_type == "leftdown":
        self.stop = False
        self.last_position = space_pos[:2]
        self.scene.animate(self)
        response = RESPONSE_CONSUME
    elif event_type == "move" or event_type == "hover":
        self.last_position = space_pos[:2]
        response = RESPONSE_CONSUME
    elif event_type == "lost" or (event_type == "key_up" and modifiers == "escape"):
        self.stop = True
        self.series.clear()
        if self.scene.pane.tool_active:
            self.scene.pane.tool_active = False
            self.scene.request_refresh()
            return RESPONSE_CONSUME
        else:
            return RESPONSE_CHAIN
    elif event_type == "leftup":
        self.stop = True
        if self.series:
            t = Path()
            t.move(self.series[0])
            for m in self.series:
                t.line(m)
            elements = self.scene.context.elements
            node = elements.elem_branch.add(
                path=t,
                type="elem path",
                stroke_width=elements.default_strokewidth,
                stroke=elements.default_stroke,
                fill=elements.default_fill,
            )
            if elements.classify_new:
                elements.classify([node])
            self.notify_created(node)
            self.series.clear()
        response = RESPONSE_CONSUME
    return response