From a0649190deaaf093112e99881c25ff550f07e96b Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Tue, 7 Aug 2018 09:30:27 +1000 Subject: Fix edge cases when moving floating container to new workspace * Removes container_floating_move_to_container, instead opting to put that logic in container_move_to * In the seat code, focusing a floating view now updates the pending state only and lets the next transaction carry it over to the current state. This is required, otherwise it would crash. * When unfullscreening a floating container, an output check is now done to see if it should center it. --- sway/input/seat.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'sway/input') diff --git a/sway/input/seat.c b/sway/input/seat.c index dd4d5c3b..6dd7cf7d 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -717,12 +717,8 @@ void seat_set_focus_warp(struct sway_seat *seat, // If we've focused a floating container, bring it to the front. // We do this by putting it at the end of the floating list. - // This must happen for both the pending and current children lists. if (container && container_is_floating(container)) { list_move_to_end(container->parent->children, container); - if (container_has_ancestor(container, container->current.parent)) { - list_move_to_end(container->parent->current.children, container); - } } // clean up unfocused empty workspace on new output -- cgit v1.2.3 From 4c5dc6f135ce1b46ecffb6440b0b106df0a3e18d Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 8 Aug 2018 22:27:21 +1000 Subject: Focus floating views when beginning move/resize operations --- sway/input/cursor.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'sway/input') diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 80b4f9dc..39874b73 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -429,6 +429,9 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor, struct sway_container *cont) { struct sway_seat *seat = cursor->seat; + seat_set_focus(seat, cont); + seat_pointer_notify_button(seat, time_msec, button, state); + // Deny moving or resizing a fullscreen container if (container_is_fullscreen_or_child(cont)) { seat_pointer_notify_button(seat, time_msec, button, state); @@ -468,10 +471,6 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor, seat_begin_resize(seat, floater, button, edge); return; } - - // Send event to surface - seat_set_focus(seat, cont); - seat_pointer_notify_button(seat, time_msec, button, state); } /** -- cgit v1.2.3 From f5dc3ac09d6f44d51b5bb7f8f5ac863cd228afd8 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 8 Aug 2018 22:32:59 +1000 Subject: Don't call send_pointer_notify_button when doing move or resize --- sway/input/cursor.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'sway/input') diff --git a/sway/input/cursor.c b/sway/input/cursor.c index 39874b73..3f417e96 100644 --- a/sway/input/cursor.c +++ b/sway/input/cursor.c @@ -430,7 +430,6 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor, struct sway_seat *seat = cursor->seat; seat_set_focus(seat, cont); - seat_pointer_notify_button(seat, time_msec, button, state); // Deny moving or resizing a fullscreen container if (container_is_fullscreen_or_child(cont)) { @@ -471,6 +470,8 @@ static void dispatch_cursor_button_floating(struct sway_cursor *cursor, seat_begin_resize(seat, floater, button, edge); return; } + + seat_pointer_notify_button(seat, time_msec, button, state); } /** -- cgit v1.2.3