def track_mouse(self):
        """Transfer mouse relative pos to selected objs."""
        current_x, current_y = SERVICES_NS.get_mouse_pos()
        start_x, start_y = self.mouse_pos_backup

        delta_x = current_x - start_x
        delta_y = current_y - start_y

        ### control translation finesse

        delta_x //= self.translation_factor
        delta_y //= self.translation_factor

        ### control axis restraining

        delta_x *= self.x_axis_factor
        delta_y *= self.y_axis_factor

        ### iterate over selected objs setting the
        ### resulting relative positions

        for obj in self.selected_objs:

            rel_pos = self.relative_pos_map[obj]

            final_deltas = offset_point(rel_pos, (delta_x, delta_y))

            try:
                obj.rectsman.midtop = final_deltas
            except AttributeError:
                obj.rect.midtop = final_deltas

            if hasattr(obj, 'anchor_viewer_objects'):
                obj.anchor_viewer_objects()
Transfer mouse relative pos to selected objs.
nodezator/editing/reposition.py