def drag_mode_draw(self):
        """Draw operations for the drag mode."""
        ### reference objects/data locally for quick access

        image = self.image
        offset = self.offset
        rect = self.rect.inflate(-2, -2)

        ### clean the widget surface
        image.blit(self.clean_bg, (0, 0))

        ### draw buttons on the widget surface

        for button in self.buttons:

            image.blit(button.image, button.rect.move(offset))

        ### iterate over the lists of items, drawing the
        ### items and additional vertical lines around them
        ### on the widget surface

        for a_list in (self.items, self.available_items):

            for item in a_list.get_colliding(rect):

                offset_rect = item.rect.move(offset)
                image.blit(item.image, offset_rect)

                draw_vertical_lines(image, offset_rect)

        ### reference the dragged object locally and draw
        ### it in the widget surface if it collides with
        ### the widget, along with vertical lines and an
        ### outline around it

        dragged_obj = self.dragged_obj

        if rect.colliderect(dragged_obj.rect):

            offset_rect = dragged_obj.rect.move(offset)
            image.blit(dragged_obj.image, offset_rect)

            draw_vertical_lines(image, offset_rect)

            draw_rect(image, ITEM_OUTLINE, offset_rect.inflate(2, 2), 2)

        ### draw a border around the widget
        draw_border(image, thickness=2)

        ### draw the widget on the screen
        super().draw()

        ### finally update the screen
        SERVICES_NS.update_screen()
Draw operations for the drag mode.
nodezator/our3rdlibs/sortingeditor/modes.py