Xi: deliver barrier events as grabbed events where necessary
If the grab_window is the barrier window and the client owns the grab, deliver as normal grabbed event (respecting owner_events). Otherwise, deliver as usual. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> Reviewed-by: Jasper St. Pierre <jstpierre@mecheye.net>
This commit is contained in:
		
							parent
							
								
									3b16140170
								
							
						
					
					
						commit
						353aa51592
					
				| 
						 | 
				
			
			@ -1647,6 +1647,7 @@ ProcessBarrierEvent(InternalEvent *e, DeviceIntPtr dev)
 | 
			
		|||
    BarrierEvent *be = &e->barrier_event;
 | 
			
		||||
    xEvent *ev;
 | 
			
		||||
    int rc;
 | 
			
		||||
    GrabPtr grab = dev->deviceGrab.grab;
 | 
			
		||||
 | 
			
		||||
    if (!IsMaster(dev))
 | 
			
		||||
        return;
 | 
			
		||||
| 
						 | 
				
			
			@ -1660,10 +1661,21 @@ ProcessBarrierEvent(InternalEvent *e, DeviceIntPtr dev)
 | 
			
		|||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    filter = GetEventFilter(dev, ev);
 | 
			
		||||
    /* A client has a grab, deliver to this client if the grab_window is the
 | 
			
		||||
       barrier window.
 | 
			
		||||
 | 
			
		||||
    DeliverEventsToWindow(dev, pWin, ev, 1,
 | 
			
		||||
                          filter, NullGrab);
 | 
			
		||||
       Otherwise, deliver normally to the client.
 | 
			
		||||
     */
 | 
			
		||||
    if (grab &&
 | 
			
		||||
        CLIENT_ID(be->barrierid) == CLIENT_ID(grab->resource) &&
 | 
			
		||||
        grab->window->drawable.id == be->window) {
 | 
			
		||||
        DeliverGrabbedEvent(e, dev, FALSE);
 | 
			
		||||
    } else {
 | 
			
		||||
        filter = GetEventFilter(dev, ev);
 | 
			
		||||
 | 
			
		||||
        DeliverEventsToWindow(dev, pWin, ev, 1,
 | 
			
		||||
                              filter, NullGrab);
 | 
			
		||||
    }
 | 
			
		||||
    free(ev);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue