     }
 
     
-    private func acceptClickEvent(_ event: NSEvent) -> Bool {
-        if let view = self.window?.contentView?.hitTest(event.locationInWindow) , view.isDescendant(of: self.contentDocumentView) == false {
-            if view == self.clipView || view.isDescendant(of: self) { self.window?.makeFirstResponder(self) }
-            return false
-        }
-        return true
+    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
-        guard acceptClickEvent(theEvent) else {
+        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)
-        self.mouseDownIP = self.indexPathForItem(at: point)
+        if accept.itemSpecific {
+            self.mouseDownIP = self.indexPathForItem(at: point)
+        }
         self.delegate?.collectionView?(self, mouseDownInItemAt: self.mouseDownIP, with: theEvent)
     }
     

    open override func rightMouseDown(with theEvent: NSEvent) {
        super.rightMouseDown(with: theEvent)
        
        guard self.acceptClickEvent(theEvent) else { return }
        let point = self.contentView.convert(theEvent.locationInWindow, from: nil)
        self.delegate?.collectionView?(self, didRightClickItemAt: self.indexPathForItem(at: point), with: theEvent)
    }
    
    final func moveSelectionInDirection(_ direction: CollectionViewDirection, extendSelection: Bool) {

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