@ -1060,13 +1060,14 @@ update_xkb_state_from_core(struct x11_backend *b, uint16_t x11_mask) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					static  void  
					 
					 
					 
					static  void  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					x11_backend_deliver_button_event ( struct  x11_backend  * b ,  
					 
					 
					 
					x11_backend_deliver_button_event ( struct  x11_backend  * b ,  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									 xcb_generic_event_t  * event ,  int  state )   
					 
					 
					 
									 xcb_generic_event_t  * event )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					{  
					 
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						xcb_button_press_event_t  * button_event  =   
					 
					 
					 
						xcb_button_press_event_t  * button_event  =   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							( xcb_button_press_event_t  * )  event ;   
					 
					 
					 
							( xcb_button_press_event_t  * )  event ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						uint32_t  button ;   
					 
					 
					 
						uint32_t  button ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  x11_output  * output ;   
					 
					 
					 
						struct  x11_output  * output ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						struct  weston_pointer_axis_event  weston_event ;   
					 
					 
					 
						struct  weston_pointer_axis_event  weston_event ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						bool  is_button_pressed  =  event - > response_type  = =  XCB_BUTTON_PRESS ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						assert ( event - > response_type  = =  XCB_BUTTON_PRESS  | |   
					 
					 
					 
						assert ( event - > response_type  = =  XCB_BUTTON_PRESS  | |   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						       event - > response_type  = =  XCB_BUTTON_RELEASE ) ;   
					 
					 
					 
						       event - > response_type  = =  XCB_BUTTON_RELEASE ) ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1075,7 +1076,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( ! output )   
					 
					 
					 
						if  ( ! output )   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  ( sta te )   
					 
					 
					 
						if  ( i s_bu tton_pr essed )   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
							xcb_grab_pointer ( b - > conn ,  0 ,  output - > window ,   
					 
					 
					 
							xcb_grab_pointer ( b - > conn ,  0 ,  output - > window ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									 XCB_EVENT_MASK_BUTTON_PRESS  |   
					 
					 
					 
									 XCB_EVENT_MASK_BUTTON_PRESS  |   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									 XCB_EVENT_MASK_BUTTON_RELEASE  |   
					 
					 
					 
									 XCB_EVENT_MASK_BUTTON_RELEASE  |   
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1105,7 +1106,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  4 :   
					 
					 
					 
						case  4 :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							/* Axis are measured in pixels, but the xcb events are discrete
   
					 
					 
					 
							/* Axis are measured in pixels, but the xcb events are discrete
   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							 *  steps .  Therefore  move  the  axis  by  some  pixels  every  step .  */   
					 
					 
					 
							 *  steps .  Therefore  move  the  axis  by  some  pixels  every  step .  */   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( sta te )  {   
					 
					 
					 
							if  ( i s_bu tton_pr essed )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . value  =  - DEFAULT_AXIS_STEP_DISTANCE ;   
					 
					 
					 
								weston_event . value  =  - DEFAULT_AXIS_STEP_DISTANCE ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . discrete  =  - 1 ;   
					 
					 
					 
								weston_event . discrete  =  - 1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . has_discrete  =  true ;   
					 
					 
					 
								weston_event . has_discrete  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1118,7 +1119,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							}   
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  5 :   
					 
					 
					 
						case  5 :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( sta te )  {   
					 
					 
					 
							if  ( i s_bu tton_pr essed )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . value  =  DEFAULT_AXIS_STEP_DISTANCE ;   
					 
					 
					 
								weston_event . value  =  DEFAULT_AXIS_STEP_DISTANCE ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . discrete  =  1 ;   
					 
					 
					 
								weston_event . discrete  =  1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . has_discrete  =  true ;   
					 
					 
					 
								weston_event . has_discrete  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1131,7 +1132,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							}   
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  6 :   
					 
					 
					 
						case  6 :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( sta te )  {   
					 
					 
					 
							if  ( i s_bu tton_pr essed )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . value  =  - DEFAULT_AXIS_STEP_DISTANCE ;   
					 
					 
					 
								weston_event . value  =  - DEFAULT_AXIS_STEP_DISTANCE ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . discrete  =  - 1 ;   
					 
					 
					 
								weston_event . discrete  =  - 1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . has_discrete  =  true ;   
					 
					 
					 
								weston_event . has_discrete  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1144,7 +1145,7 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							}   
					 
					 
					 
							}   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return ;   
					 
					 
					 
							return ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						case  7 :   
					 
					 
					 
						case  7 :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ( sta te )  {   
					 
					 
					 
							if  ( i s_bu tton_pr essed )  {   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . value  =  DEFAULT_AXIS_STEP_DISTANCE ;   
					 
					 
					 
								weston_event . value  =  DEFAULT_AXIS_STEP_DISTANCE ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . discrete  =  1 ;   
					 
					 
					 
								weston_event . discrete  =  1 ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								weston_event . has_discrete  =  true ;   
					 
					 
					 
								weston_event . has_discrete  =  true ;   
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -1163,8 +1164,8 @@ x11_backend_deliver_button_event(struct x11_backend *b, 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						notify_button ( & b - > core_seat ,   
					 
					 
					 
						notify_button ( & b - > core_seat ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							      weston_compositor_get_time ( ) ,  button ,   
					 
					 
					 
							      weston_compositor_get_time ( ) ,  button ,   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							      sta te  ?  WL_POINTER_BUTTON_STATE_PRESSED  :   
					 
					 
					 
							      i s_bu tton_pr essed   ?  WL_POINTER_BUTTON_STATE_PRESSED  :   
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
								       WL_POINTER_BUTTON_STATE_RELEASED ) ;   
					 
					 
					 
										   WL_POINTER_BUTTON_STATE_RELEASED ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
						notify_pointer_frame ( & b - > core_seat ) ;   
					 
					 
					 
						notify_pointer_frame ( & b - > core_seat ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					}  
					 
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -1357,10 +1358,8 @@ x11_backend_handle_event(int fd, uint32_t mask, void *data) 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
									   STATE_UPDATE_NONE ) ;   
					 
					 
					 
									   STATE_UPDATE_NONE ) ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								break ;   
					 
					 
					 
								break ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							case  XCB_BUTTON_PRESS :   
					 
					 
					 
							case  XCB_BUTTON_PRESS :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								x11_backend_deliver_button_event ( b ,  event ,  1 ) ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								break ;   
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							case  XCB_BUTTON_RELEASE :   
					 
					 
					 
							case  XCB_BUTTON_RELEASE :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								x11_backend_deliver_button_event ( b ,  event ,  0 ) ;   
					 
					 
					 
								x11_backend_deliver_button_event ( b ,  event ) ;   
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								break ;   
					 
					 
					 
								break ;   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							case  XCB_MOTION_NOTIFY :   
					 
					 
					 
							case  XCB_MOTION_NOTIFY :   
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								x11_backend_deliver_motion_event ( b ,  event ) ;   
					 
					 
					 
								x11_backend_deliver_motion_event ( b ,  event ) ;