(self, touch: MotionEvent)
return False
Inherited from
        https://github.com/kivy/kivy/blob/master/kivy/uix/scatter.py#L590.
Inherited from
        https://github.com/kivy/kivy/blob/master/kivy/uix/scatter.py#L590.
Inherited from https : // github . com / kivy / kivy / blob / master / kivy / uix / scatter . py#L590 .
def on_touch_up(self, touch: MotionEvent) -> bool:
        """ Inherited from
        https://github.com/kivy/kivy/blob/master/kivy/uix/scatter.py#L590. """
        if self.disabled:
            return False

        x, y = touch.x, touch.y
        # if the touch isnt on the widget we do nothing, just try children
        if not touch.grab_current == self:
            touch.push()
            touch.apply_transform_2d(self.to_local)
            for child in self.children:
                if child.dispatch('on_touch_up', touch):
                    touch.pop()
                    return True
            touch.pop()

        # remove it from our saved touches
        if touch in self._touches and touch.grab_state:
            touch.ungrab(self)
            del self._last_touch_pos[touch]
            self._touches.remove(touch)

        # if no connection was made
        if 'cur_line' in touch.ud.keys() and touch.button == 'left':
            logger.info('Finish connection through smart bubble')
            connection = touch.ud['cur_line']
            if connection.forward:
                edge = connection.start
            else:
                edge = connection.end
            self.add_widget(blocks.SmartBubble(pos=touch.pos, backdrop=self, pin=edge))
            return True

        # stop propagating if its within our bounds
        if self.collide_point(x, y):
            return True
        return False
def on_touch_up ( self , touch : MotionEvent ) -> bool : if self . disabled : return False x , y = touch . x , touch . y # if the touch isnt on the widget we do nothing, just try children if not touch . grab_current == self : touch . push ( ) touch . apply_transform_2d ( self . to_local ) for child in self . children : if child . dispatch ( 'on_touch_up' , touch ) : touch . pop ( ) return True touch . pop ( ) # remove it from our saved touches if touch in self . _touches and touch . grab_state : touch . ungrab ( self ) del self . _last_touch_pos [ touch ] self . _touches . remove ( touch ) # if no connection was made if 'cur_line' in touch . ud . keys ( ) and touch . button == 'left' : logger . info ( 'Finish connection through smart bubble' ) connection = touch . ud [ 'cur_line' ] if connection . forward : edge = connection . start else : edge = connection . end self . add_widget ( blocks . SmartBubble ( pos = touch . pos , backdrop = self , pin = edge ) ) return True # stop propagating if its within our bounds if self . collide_point ( x , y ) : return True return False