def METHOD_NAME(self, touch):
    if self._get_uid('svavoid') in touch.ud or\
            self._drag_touch is not touch:
        return super(DragBehavior, self).METHOD_NAME(touch) or\
            self._get_uid() in touch.ud
    if touch.grab_current is not self:
        return True
    uid = self._get_uid()
    ud = touch.ud[uid]
    mode = ud['mode']
    if mode == 'unknown':
        ud['dx'] += abs(touch.dx)
        ud['dy'] += abs(touch.dy)
        if ud['dx'] > sp(self.drag_distance):
            mode = 'drag'
        if ud['dy'] > sp(self.drag_distance):
            mode = 'drag'
        ud['mode'] = mode
    if mode == 'drag':
        self.x += touch.dx
        self.y += touch.dy
    return True