Do sent TouchEnd to listeners that don't own an accepted touch
When the owner of a touch accepts it, the other listeners must receive a TouchEnd. Even though there's code implementing the logic above in ProcessTouchOwnershipEvent(), DeliverTouchEndEvent() was refusing to send those TouchEnd events in this situatuation. Signed-off-by: Daniel d'Andrada <daniel.dandrada@canonical.com> Reviewed-by: Chase Douglas <chase.douglas@canonical.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									02d91ccb09
								
							
						
					
					
						commit
						4dbbcdf645
					
				| 
						 | 
					@ -1888,6 +1888,12 @@ DeliverTouchEndEvent(DeviceIntPtr dev, TouchPointInfoPtr ti, InternalEvent *ev,
 | 
				
			||||||
        if (normal_end)
 | 
					        if (normal_end)
 | 
				
			||||||
            listener->state = LISTENER_HAS_END;
 | 
					            listener->state = LISTENER_HAS_END;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    else if (ev->device_event.flags & TOUCH_ACCEPT) {
 | 
				
			||||||
 | 
					        /* Touch has been accepted by its owner, which is not this listener */
 | 
				
			||||||
 | 
					        if (listener->state != LISTENER_HAS_END)
 | 
				
			||||||
 | 
					            rc = DeliverOneTouchEvent(client, dev, ti, grab, win, ev);
 | 
				
			||||||
 | 
					        listener->state = LISTENER_HAS_END;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 out:
 | 
					 out:
 | 
				
			||||||
    return rc;
 | 
					    return rc;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue