docs: def on_drag_data_received(self, widget, context, x, y, data, info, time):
          """Receives state_id from LibraryTree and moves the state to the position of the mouse
  
          :param widget:
          :param context:
          :param x: Integer: x-position of mouse
          :param y: Integer: y-position of mouse
          :param data: SelectionData: contains state_id
          :param info:
          :param time:
          """
          state_id_insert = data.get_text()
          parent_m = self.model.selection.get_selected_state()
          if not isinstance(parent_m, ContainerStateModel):
              return
          state_v = self.canvas.get_view_for_model(parent_m.states[state_id_insert])
          pos_start = state_v.model.get_meta_data_editor()['rel_pos']
          motion = InMotion(state_v, self.view.editor)
          motion.start_move(self.view.editor.get_matrix_i2v(state_v).transform_point(pos_start[0], pos_start[1]))
          motion.move((x, y))
          motion.stop_move()
          state_v.model.set_meta_data_editor('rel_pos', motion.item.position)
          self.canvas.wait_for_update(trigger_update=True)
          self._meta_data_changed(None, state_v.model, 'append_to_last_change', True)