         let indexPath = self.indexPathForItem(at: point)
         self.delegate?.collectionView?(self, mouseUpInItemAt: indexPath, with: theEvent)
         
-        guard self.acceptClickEvent(theEvent) else { return }
+        guard self.acceptClickEvent(theEvent).accept == true else { return }
         
         if mouseDownIP == nil && allowsEmptySelection {
             self._deselectAllItems(true, notify: true)

        var items : [NSDraggingItem] = []
        
        guard let mouseDown = mouseDownIP else { return }
        guard self.acceptClickEvent(theEvent) else { return }
        
        if self.interactionDelegate?.collectionView?(self, shouldBeginDraggingAt: mouseDown, with: theEvent) != true { return }
        

    }

    
    private func acceptClickEvent(_ event: NSEvent) -> (accept: Bool, itemSpecific: Bool) {
        guard let view = self.window?.contentView?.hitTest(event.locationInWindow), view.isDescendant(of: self) else {
            return (false, false)
        }
        if view.isDescendant(of: self._floatingSupplementaryView) { return (true, false) }
//        if view == self.clipView || view.isDescendant(of: self) { self.window?.makeFirstResponder(self) }
        return (true, true)
    }
    
    private var mouseDownIP: IndexPath?
    open override func mouseDown(with theEvent: NSEvent) {
        
        self.mouseDownIP = nil
        let accept = acceptClickEvent(theEvent)
        guard accept.accept else {
            return
        }
        self.window?.makeFirstResponder(self)
        //        self.nextResponder?.mouseDown(theEvent)
        // super.mouseDown(theEvent) DONT DO THIS, it will consume the event and mouse up is not called
        let point = self.contentView.convert(theEvent.locationInWindow, from: nil)
        if accept.itemSpecific {
            self.mouseDownIP = self.indexPathForItem(at: point)
        }
        self.delegate?.collectionView?(self, mouseDownInItemAt: self.mouseDownIP, with: theEvent)
    }
    
