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:
| Argument | Value
| w		 | The event window 
 | event_mask	 | The client's selected pointer events on the event window
 | pointer_mode	 | GrabModeAsync
 | keyboard_mode	 | GrabModeAsync 
 | owner_events	 | True, on the event window, otherwise False 
 | confine_to	 | None 
 | cursor		 | None 
 |  | ||||
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().