The X server searches the ancestors of w from the root down, looking for a passive grab to activate. If no matching passive grab on the button exists, the X server automatically starts an active grab for the client receiving the event and sets the last-pointer-grab time to the current server time. The effect is essentially equivalent to an XGrabButton() with these client passed arguments:
||w ||The event window
||event_mask ||The client's selected pointer events on the event window
||owner_events ||True, on the event window, otherwise False
The active grab is automatically terminated when the logical state of the pointer has all buttons released. Clients can modify the active grab by calling XUngrabPointer() and XChangeActivePointerGrab().