diff --git a/clay.h b/clay.h
index 337c098..8a275a9 100644
--- a/clay.h
+++ b/clay.h
@@ -311,6 +311,12 @@ typedef struct
     Clay_FloatingAttachPointType parent;
 } Clay_FloatingAttachPoints;
 
+typedef enum {
+    CLAY_POINTER_CAPTURE_MODE_CAPTURE,
+    CLAY_POINTER_CAPTURE_MODE_PARENT,
+    CLAY_POINTER_CAPTURE_MODE_PASSTHROUGH,
+} Clay_PointerCaptureMode;
+
 typedef struct
 {
     Clay_Vector2 offset;
@@ -318,6 +324,7 @@ typedef struct
     uint16_t zIndex;
     uint32_t parentId;
     Clay_FloatingAttachPoints attachment;
+    Clay_PointerCaptureMode capturePointer;
 } Clay_FloatingElementConfig;
 
 // Custom
@@ -3518,6 +3525,7 @@ void Clay_SetPointerState(Clay_Vector2 position, bool isPointerDown) {
         Clay__LayoutElementTreeRoot *root = Clay__LayoutElementTreeRootArray_Get(&Clay__layoutElementTreeRoots, rootIndex);
         Clay__int32_tArray_Add(&dfsBuffer, (int32_t)root->layoutElementIndex);
         Clay__treeNodeVisited.internalArray[0] = false;
+        bool found = false;
         while (dfsBuffer.length > 0) {
             if (Clay__treeNodeVisited.internalArray[dfsBuffer.length - 1]) {
                 dfsBuffer.length--;
@@ -3535,6 +3543,7 @@ void Clay_SetPointerState(Clay_Vector2 position, bool isPointerDown) {
                         mapItem->onHoverFunction(mapItem->elementId, Clay__pointerInfo, mapItem->hoverFunctionUserData);
                     }
                     Clay__ElementIdArray_Add(&Clay__pointerOverIds, mapItem->elementId);
+                    found = true;
                 }
                 if (Clay__ElementHasConfig(currentElement, CLAY__ELEMENT_CONFIG_TYPE_TEXT)) {
                     dfsBuffer.length--;
@@ -3548,6 +3557,12 @@ void Clay_SetPointerState(Clay_Vector2 position, bool isPointerDown) {
                 dfsBuffer.length--;
             }
         }
+
+        Clay_LayoutElement *rootElement = Clay_LayoutElementArray_Get(&Clay__layoutElements, Clay__int32_tArray_Get(&dfsBuffer, (int)dfsBuffer.length - 1));
+        if (found && Clay__ElementHasConfig(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER) &&
+                Clay__FindElementConfigWithType(rootElement, CLAY__ELEMENT_CONFIG_TYPE_FLOATING_CONTAINER).floatingElementConfig->capturePointer == CLAY_POINTER_CAPTURE_MODE_CAPTURE) {
+            break;
+        }
     }
 
     if (isPointerDown) {