def METHOD_NAME(self, window_pos=None, space_pos=None, event_type=None, **kwargs):
    if event_type in ("hover", "hover_start", "hover_end"):
        return
    ax = self.start_x
    ay = self.start_y
    bx = self.end_x
    by = self.end_y
    px = space_pos[0]
    py = space_pos[1]
    vAPx = px - ax
    vAPy = py - ay
    vABx = bx - ax
    vABy = by - ay
    sqDistanceAB = vABx * vABx + vABy * vABy
    ABAPproduct = vABx * vAPx + vABy * vAPy
    amount = ABAPproduct / sqDistanceAB
    if amount > 1:
        amount = 1
    if amount < 0:
        amount = 0
    value = self.position_to_value(amount)
    if event_type == "leftdown":
        # New down, find the closest seeker.
        self.seeker = -1
        self.moving = True
        best = float("inf")
        for idx, v in enumerate(self.values):
            current = abs(value - v)
            if current < best:
                best = current
                self.seeker = idx
    elif event_type in ("drop", "leftup"):
        # Stopping action.
        self.moving = False
        self.seeker = -1
        self.scene.request_refresh()
    elif event_type == "leftclick":
        if self.clicked:
            self.clicked(self.values, self.seeker)
        self.moving = False
        self.seeker = -1
        self.scene.request_refresh()
    if self.seeker != -1:
        self.values[self.seeker] = value
        self.changed(self.values, self.seeker)
        self.scene.request_refresh()
    return RESPONSE_CONSUME