def define_drawing_behaviours(self):
        """Define drawing operations.

        Also takes scrollability or lack thereof into
        account.
        """
        ### instantiate call list to hold drawing operations
        self.draw = CallList()

        ### before gathering the behaviours, let's first
        ### define behaviours for drawing menu manager with
        ### all branches collapsed, depending on various
        ### conditions

        ## create call list to gather such behaviours
        self.draw_top_items = CallList()

        ## add specific behaviour when menu manager is
        ## scrollable

        if self.is_scrollable():

            # append the super().draw method in
            # draw_top_items list
            self.draw_top_items.append(self.clean_image)

            # append method to draw items in the scroll
            # area
            self.draw_top_items.append(self.draw_items_on_scroll_area)

            # append method to draw arrows
            self.draw_top_items.append(self.draw_arrows)

            # append the super().draw method in
            # draw_top_items list
            self.draw_top_items.append(super().draw)

        ## otherwise add specific behaviour for when the
        ## menu manager items don't scroll

        else:

            # append the super().draw method in
            # draw_top_items list
            self.draw_top_items.append(super().draw)

            # draw children normally
            self.draw_top_items.append(self.children.draw)

        ## also, if an outline is requested, add method to
        ## draw it (this is an usability measure designed
        ## to be used with popup menus, that is, vertical
        ## ones; usage on menubar is possible, though not
        ## encouraged)
        if self.use_outline:
            self.draw_top_items.append(self.draw_outline)

        ### now let's gather all drawing behaviours to be
        ### executed in the draw cycle of the menu manager

        update_screen = partial(methodcaller('update_screen'), SERVICES_NS)

        self.draw = CallList(
            [self.draw_behind, self.draw_top_items, update_screen]
        )

        ### also define a control attribute: the active menu
        self.active_menu = None
Define drawing operations.

        Also takes scrollability or lack thereof into
        account.
        
nodezator/menu/behaviour.py