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

        Parameters
        ==========
        event (pygame.event.Event of pygame.MOUSEBUTTONUP
        type)
              Check pygame.event module documentation on
              pygame website for more info about this event
              object.
        """
        ### retrieve mouse position
        mouse_pos = event.pos

        ### retrieve pressed state of ctrl and shift keys

        mods_bitmask = SERVICES_NS.get_pressed_mod_keys()
        ctrl = mods_bitmask & KMOD_CTRL
        shift = mods_bitmask & KMOD_SHIFT

        ### check whether any path obj was the target of
        ### the mouse release action

        for path_obj in self.path_objs:

            if path_obj.rect.collidepoint(mouse_pos):

                ## get the current frame index since the
                ## app was started/reseted
                frame_index = GENERAL_NS.frame_index

                ## use it to obtain the number of frames passed by
                ## since the last mouse release
                frames_since_last = frame_index - self.last_release_frame

                ## if such number is less than or equal the
                ## maximum number defined for a second mouse
                ## event we consider it as if it were a
                ## double click on the path object, in
                ## which case we load its path; since this
                ## relies on the change_current_dir method,
                ## this operation only makes a difference
                ## if the path is an existing directory

                if frames_since_last <= MAX_FRAMES_TO_2ND_MOUSE_EVENT:
                    path_obj.load()

                ## otherwise, we consider as if the path
                ## object was clicked

                else:

                    # execute the appropriate operation
                    # for the existing scenarios depending
                    # on the pressed states of the ctrl and
                    # shift keys

                    if not ctrl and not shift:
                        self.select_single_path(path_obj)

                    elif ctrl and not shift:
                        self.revert_selection_state(path_obj)

                    elif shift and not ctrl:
                        self.extend_selection(path_obj)

                ## regardless of the block executed above,
                ## we store the frame index as the more recent
                ## time measurement of a mouse release event
                self.last_release_frame = frame_index

                ## finally since you found the colliding
                ## path obj, you know the others didn't
                ## collide, so you can safely break out
                ## of the loop
                break
Act according to mouse release event.

        Parameters
        ==========
        event (pygame.event.Event of pygame.MOUSEBUTTONUP
        type)
              Check pygame.event module documentation on
              pygame website for more info about this event
              object.
        
nodezator/fileman/dirpanel/mouseop.py