def on_mouse_release(self, event):
        """Act according to mouse release position.

        Parameters
        ==========
        event
            (pygame.event.Event of pygame.MOUSEBUTTONUP type)

            It is required in order to comply with
            protocol used. We retrieve the mouse position
            from its "pos" attribute.

            Check pygame.event module documentation on
            pygame website for more info about this event
            object.
        """
        ### obtain the relative mouse position by
        ### subtracting the rect's topleft from the
        ### mouse's absolute position

        rel_mouse_pos = [a - b for a, b in zip(event.pos, self.rect.topleft)]

        ### if the mouse relative position collides with
        ### the rect of one of the buttons, execute the
        ### operation with the respective name, then exit
        ### this method by returning

        for i, rect in enumerate(self.button_rects):

            if rect.collidepoint(rel_mouse_pos):

                getattr(self, self.button_callable_names[i])()
                return

        ### if index entry was target, ignore
        if self.collides_with_entry(event.pos):
            return

        ### otherwise, it means the user clicked outside
        ### the buttons's boundaries, so we execute the
        ### path previewing method
        self.preview_paths()
Act according to mouse release position.

        Parameters
        ==========
        event
            (pygame.event.Event of pygame.MOUSEBUTTONUP type)

            It is required in order to comply with
            protocol used. We retrieve the mouse position
            from its "pos" attribute.

            Check pygame.event module documentation on
            pygame website for more info about this event
            object.
        
nodezator/widget/pathpreview/base.py