mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Fix segfault in dispatch_cursor_button
This commit is contained in:
		
							parent
							
								
									c36665bc17
								
							
						
					
					
						commit
						4ce18d2744
					
				
					 1 changed files with 6 additions and 5 deletions
				
			
		| 
						 | 
					@ -863,8 +863,8 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Handle tiling resize via border
 | 
						// Handle tiling resize via border
 | 
				
			||||||
	if (resize_edge && button == BTN_LEFT && state == WLR_BUTTON_PRESSED &&
 | 
						if (cont && resize_edge && button == BTN_LEFT &&
 | 
				
			||||||
			!is_floating) {
 | 
								state == WLR_BUTTON_PRESSED && !is_floating) {
 | 
				
			||||||
		seat_set_focus_container(seat, cont);
 | 
							seat_set_focus_container(seat, cont);
 | 
				
			||||||
		seat_begin_resize_tiling(seat, cont, button, edge);
 | 
							seat_begin_resize_tiling(seat, cont, button, edge);
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
| 
						 | 
					@ -873,7 +873,8 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
 | 
				
			||||||
	// Handle tiling resize via mod
 | 
						// Handle tiling resize via mod
 | 
				
			||||||
	bool mod_pressed = keyboard &&
 | 
						bool mod_pressed = keyboard &&
 | 
				
			||||||
		(wlr_keyboard_get_modifiers(keyboard) & config->floating_mod);
 | 
							(wlr_keyboard_get_modifiers(keyboard) & config->floating_mod);
 | 
				
			||||||
	if (!is_floating_or_child && mod_pressed && state == WLR_BUTTON_PRESSED) {
 | 
						if (cont && !is_floating_or_child && mod_pressed &&
 | 
				
			||||||
 | 
								state == WLR_BUTTON_PRESSED) {
 | 
				
			||||||
		uint32_t btn_resize = config->floating_mod_inverse ?
 | 
							uint32_t btn_resize = config->floating_mod_inverse ?
 | 
				
			||||||
			BTN_LEFT : BTN_RIGHT;
 | 
								BTN_LEFT : BTN_RIGHT;
 | 
				
			||||||
		if (button == btn_resize) {
 | 
							if (button == btn_resize) {
 | 
				
			||||||
| 
						 | 
					@ -901,7 +902,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Handle beginning floating move
 | 
						// Handle beginning floating move
 | 
				
			||||||
	if (is_floating_or_child && !is_fullscreen_or_child &&
 | 
						if (cont && is_floating_or_child && !is_fullscreen_or_child &&
 | 
				
			||||||
			state == WLR_BUTTON_PRESSED) {
 | 
								state == WLR_BUTTON_PRESSED) {
 | 
				
			||||||
		uint32_t btn_move = config->floating_mod_inverse ? BTN_RIGHT : BTN_LEFT;
 | 
							uint32_t btn_move = config->floating_mod_inverse ? BTN_RIGHT : BTN_LEFT;
 | 
				
			||||||
		if (button == btn_move && state == WLR_BUTTON_PRESSED &&
 | 
							if (button == btn_move && state == WLR_BUTTON_PRESSED &&
 | 
				
			||||||
| 
						 | 
					@ -916,7 +917,7 @@ void dispatch_cursor_button(struct sway_cursor *cursor,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Handle beginning floating resize
 | 
						// Handle beginning floating resize
 | 
				
			||||||
	if (is_floating_or_child && !is_fullscreen_or_child &&
 | 
						if (cont && is_floating_or_child && !is_fullscreen_or_child &&
 | 
				
			||||||
			state == WLR_BUTTON_PRESSED) {
 | 
								state == WLR_BUTTON_PRESSED) {
 | 
				
			||||||
		// Via border
 | 
							// Via border
 | 
				
			||||||
		if (button == BTN_LEFT && resize_edge != WLR_EDGE_NONE) {
 | 
							if (button == BTN_LEFT && resize_edge != WLR_EDGE_NONE) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue