@ -3,6 +3,7 @@
# include "log.h"
# include "log.h"
# include "sway/commands.h"
# include "sway/commands.h"
# include "sway/input/input-manager.h"
# include "sway/input/input-manager.h"
# include "sway/input/cursor.h"
# include "sway/input/seat.h"
# include "sway/input/seat.h"
# include "sway/output.h"
# include "sway/output.h"
# include "sway/tree/arrange.h"
# include "sway/tree/arrange.h"
@ -180,6 +181,7 @@ static struct cmd_results *focus_mode(struct sway_workspace *ws,
}
}
if ( new_focus ) {
if ( new_focus ) {
seat_set_focus_container ( seat , new_focus ) ;
seat_set_focus_container ( seat , new_focus ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
} else {
} else {
return cmd_results_new ( CMD_FAILURE , " focus " ,
return cmd_results_new ( CMD_FAILURE , " focus " ,
" Failed to find a %s container in workspace " ,
" Failed to find a %s container in workspace " ,
@ -212,6 +214,7 @@ static struct cmd_results *focus_output(struct sway_seat *seat,
free ( identifier ) ;
free ( identifier ) ;
if ( output ) {
if ( output ) {
seat_set_focus ( seat , seat_get_focus_inactive ( seat , & output - > node ) ) ;
seat_set_focus ( seat , seat_get_focus_inactive ( seat , & output - > node ) ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
}
}
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
@ -232,6 +235,7 @@ struct cmd_results *cmd_focus(int argc, char **argv) {
if ( argc = = 0 & & container ) {
if ( argc = = 0 & & container ) {
seat_set_focus_container ( seat , container ) ;
seat_set_focus_container ( seat , container ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
}
}
@ -260,6 +264,7 @@ struct cmd_results *cmd_focus(int argc, char **argv) {
struct sway_node * focus = seat_get_active_child ( seat , node ) ;
struct sway_node * focus = seat_get_active_child ( seat , node ) ;
if ( focus ) {
if ( focus ) {
seat_set_focus ( seat , focus ) ;
seat_set_focus ( seat , focus ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
}
}
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
}
}
@ -279,6 +284,7 @@ struct cmd_results *cmd_focus(int argc, char **argv) {
struct sway_node * node =
struct sway_node * node =
get_node_in_output_direction ( new_output , direction ) ;
get_node_in_output_direction ( new_output , direction ) ;
seat_set_focus ( seat , node ) ;
seat_set_focus ( seat , node ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
}
}
@ -286,6 +292,7 @@ struct cmd_results *cmd_focus(int argc, char **argv) {
node_get_in_direction ( container , seat , direction ) ;
node_get_in_direction ( container , seat , direction ) ;
if ( next_focus ) {
if ( next_focus ) {
seat_set_focus ( seat , next_focus ) ;
seat_set_focus ( seat , next_focus ) ;
cursor_send_pointer_motion ( seat - > cursor , 0 , true ) ;
}
}
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;
return cmd_results_new ( CMD_SUCCESS , NULL , NULL ) ;