dix: take grabs into account for XI_Enter/Leave events.
This commit is contained in:
		
							parent
							
								
									1815defdb2
								
							
						
					
					
						commit
						10b5e98101
					
				
							
								
								
									
										16
									
								
								dix/events.c
								
								
								
								
							
							
						
						
									
										16
									
								
								dix/events.c
								
								
								
								
							| 
						 | 
					@ -4182,7 +4182,6 @@ DeviceEnterLeaveEvent(
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    GrabPtr             grab = mouse->deviceGrab.grab;
 | 
					    GrabPtr             grab = mouse->deviceGrab.grab;
 | 
				
			||||||
    xXIEnterEvent       *event;
 | 
					    xXIEnterEvent       *event;
 | 
				
			||||||
    Mask                mask;
 | 
					 | 
				
			||||||
    int                 filter;
 | 
					    int                 filter;
 | 
				
			||||||
    int                 btlen, len, i;
 | 
					    int                 btlen, len, i;
 | 
				
			||||||
    DeviceIntPtr        kbd;
 | 
					    DeviceIntPtr        kbd;
 | 
				
			||||||
| 
						 | 
					@ -4223,19 +4222,22 @@ DeviceEnterLeaveEvent(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    FixUpEventFromWindow(mouse, (xEvent*)event, pWin, None, FALSE);
 | 
					    FixUpEventFromWindow(mouse, (xEvent*)event, pWin, None, FALSE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event))
 | 
					 | 
				
			||||||
        return;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    filter = GetEventFilter(mouse, (xEvent*)event);
 | 
					    filter = GetEventFilter(mouse, (xEvent*)event);
 | 
				
			||||||
    mask = 0x0; /* FIXME: we should handle grabs, once we can */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (grab)
 | 
					    if (grab)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        Mask mask;
 | 
				
			||||||
 | 
					        mask = grab->xi2mask[XIAllDevices][type/8] |
 | 
				
			||||||
 | 
					               grab->xi2mask[XIAllMasterDevices][type/8] |
 | 
				
			||||||
 | 
					               grab->xi2mask[mouse->id][type/8];
 | 
				
			||||||
        TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask,
 | 
					        TryClientEvents(rClient(grab), mouse, (xEvent*)event, 1, mask,
 | 
				
			||||||
                        filter, grab);
 | 
					                        filter, grab);
 | 
				
			||||||
    else
 | 
					    } else {
 | 
				
			||||||
 | 
					        if (!GetWindowXI2Mask(mouse, pWin, (xEvent*)event))
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
        DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter,
 | 
					        DeliverEventsToWindow(mouse, pWin, (xEvent*)event, 1, filter,
 | 
				
			||||||
                              NullGrab);
 | 
					                              NullGrab);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    xfree(event);
 | 
					    xfree(event);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue