| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1286,14 +1286,6 @@ notify_button(struct wl_input_device *device, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else | 
					 | 
					 | 
					 | 
						else | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							wlsc_compositor_idle_release(compositor); | 
					 | 
					 | 
					 | 
							wlsc_compositor_idle_release(compositor); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (state && surface && device->grab == NULL) { | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							compositor->shell->activate(compositor->shell, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										    surface, wd, time); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							wl_input_device_start_grab(device, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										   &device->implicit_grab, | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										   button, time); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						wl_list_for_each(b, &compositor->binding_list, link) { | 
					 | 
					 | 
					 | 
						wl_list_for_each(b, &compositor->binding_list, link) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (b->button == button && | 
					 | 
					 | 
					 | 
							if (b->button == button && | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							    b->modifier == wd->modifier_state && state) { | 
					 | 
					 | 
					 | 
							    b->modifier == wd->modifier_state && state) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1303,6 +1295,12 @@ notify_button(struct wl_input_device *device, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							} | 
					 | 
					 | 
					 | 
							} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						} | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (state && surface && device->grab == NULL) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							wl_input_device_start_grab(device, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										   &device->implicit_grab, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										   button, time); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (device->grab) | 
					 | 
					 | 
					 | 
						if (device->grab) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							device->grab->interface->button(device->grab, time, | 
					 | 
					 | 
					 | 
							device->grab->interface->button(device->grab, time, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
											button, state); | 
					 | 
					 | 
					 | 
											button, state); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -1326,6 +1324,21 @@ terminate_binding(struct wl_input_device *device, uint32_t time, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							wl_display_terminate(compositor->wl_display); | 
					 | 
					 | 
					 | 
							wl_display_terminate(compositor->wl_display); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					static void | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					click_to_activate_binding(struct wl_input_device *device, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                         uint32_t time, uint32_t key, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
								  uint32_t button, uint32_t state, void *data) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						struct wlsc_input_device *wd = (struct wlsc_input_device *) device; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						struct wlsc_compositor *compositor = data; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						struct wlsc_surface *focus; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						focus = (struct wlsc_surface *) device->pointer_focus; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						if (state && focus && device->grab == NULL) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							compositor->shell->activate(compositor->shell, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
										    focus, wd, time); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					WL_EXPORT struct wlsc_binding * | 
					 | 
					 | 
					 | 
					WL_EXPORT struct wlsc_binding * | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					wlsc_compositor_add_binding(struct wlsc_compositor *compositor, | 
					 | 
					 | 
					 | 
					wlsc_compositor_add_binding(struct wlsc_compositor *compositor, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								    uint32_t key, uint32_t button, uint32_t modifier, | 
					 | 
					 | 
					 | 
								    uint32_t key, uint32_t button, uint32_t modifier, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -1906,6 +1919,9 @@ wlsc_compositor_init(struct wlsc_compositor *ec, struct wl_display *display) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									    MODIFIER_CTRL | MODIFIER_ALT, | 
					 | 
					 | 
					 | 
									    MODIFIER_CTRL | MODIFIER_ALT, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									    terminate_binding, ec); | 
					 | 
					 | 
					 | 
									    terminate_binding, ec); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						wlsc_compositor_add_binding(ec, 0, BTN_LEFT, 0, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
									    click_to_activate_binding, ec); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						screenshooter_create(ec); | 
					 | 
					 | 
					 | 
						screenshooter_create(ec); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						wlsc_data_device_manager_init(ec); | 
					 | 
					 | 
					 | 
						wlsc_data_device_manager_init(ec); | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |