Merge pull request #3132 from emersion/dispatch-cursor-btn-segfault

Fix segfault in dispatch_cursor_button
This commit is contained in:
Ryan Dwyer 2018-11-17 20:24:01 +10:00 committed by GitHub
commit cb63321de6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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) {