def manage_hovered_widget(self):
        """Verify whether a menu item is being hovered.

        Performs administrative tasks depending on whether
        or not a hovered widget was found, which kind of
        widget it is and other specific details.
        """
        ### return the hovered widget or None (if none was
        ### found)
        hovered = self.get_hovered_widget()

        ### before going on, also store the hovered
        ### variable in an attribute for reference
        ### outside this method
        self.hovered_widget = hovered

        ### admin tasks in case there's a hovered widget

        if hovered:

            ## evaluate conditions

            is_top_command = self.is_top_command(hovered)
            is_top_menu = self.is_top_menu(hovered)

            ## if an active branch is being drawn, perform
            ## special tasks based on additional conditions

            if self.is_drawing_active_branch():

                # if item is a top command, we are only
                # interested in collapsing the active
                # branch

                if is_top_command:

                    self.active_menu = None
                    self.draw.remove(self.draw_active_branch)

                # if item is a top menu, we turn it into
                # the active menu

                elif is_top_menu:
                    self.active_menu = hovered

            ## otherwise, we start doing so if we have
            ## a top menu and a top menu was expanded
            ## before

            elif is_top_menu and self.was_top_menu_expanded:

                self.active_menu = hovered

                (
                    self.draw.insert(
                        -1,
                        self.draw_active_branch,
                    )
                )

            # if the widget is on top, regardless of it
            # being a command or a menu, unhighlight all
            # other top items

            if is_top_menu or is_top_command:

                for child in self.children:

                    if child is not hovered:
                        child.unhighlight()

            ## finally, since a hovered widget was found,
            ## we highlight it along with its parents in the
            ## active branch
            self.highlight_widget_and_parents(hovered)

        ### admin tasks in case there's no hovered widget

        ## if there isn't a hovered_arrow, there's no
        ## active branch and the keep_focus_when_unhovered
        ## attribute is set to False, then the menu manager
        ## must loose its focus to the loop holder (in
        ## other words, the user isn't hovering any visible
        ## element of the menu manager and there's no
        ## expanded menu); notice that by requiring the
        ## absence of an active branch to loose focus we are
        ## ensuring that the user can freely maneuver the
        ## mouse cursor when there's an active branch
        ## without causing the menu manager to loose focus
        ## (it is an usability choice);
        ## the value of the keep_focus_when_unhovered is
        ## also an usability choice made upon instantiation
        ## (for more information check the parameter
        ## description in the __init__ method docstring)

        elif (
            not self.is_drawing_active_branch()
            and not self.hovered_arrow
            and not self.keep_focus_when_unhovered
        ):
            self.focus_loop_holder()

        ## if no active branch exists, but there's an
        ## arrow hovered, unhighlight the active menu

        elif not self.is_drawing_active_branch() and self.hovered_arrow:
            self.collapse_active_menu()
Verify whether a menu item is being hovered.

        Performs administrative tasks depending on whether
        or not a hovered widget was found, which kind of
        widget it is and other specific details.
        
nodezator/menu/hover.py