code: def childEvent(self, event):    
          
          super(AbstractDragView, self).childEvent(event)
          if event.type() == QtCore.QEvent.ChildRemoved:
              # hack to catch drop offs   
              if self.originalPos is not None:
                  selected = self.limbo_component
                  self.model().insertItem(self.originalPos, selected)
                  self.originalPos = None
                  self.dragStartPosition = None
                  self.viewport().update()
docs: Catches items dropped off edge of view, 
          reinserts at original position
  
          :param event: contains event parameters for child object events
          :type event: :qtdoc:`QChildEvent`