summaryrefslogtreecommitdiffstats
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-09-06 19:26:56 +1000
committerLibravatar Ryan Dwyer <ryandwyer1@gmail.com>2018-09-06 19:26:56 +1000
commit908095ef9a479cafaf7d815824f243b4576ff1bb (patch)
tree812b58eae73d0816610e93c6595facb42b141536 /sway/tree/view.c
parentMerge pull request #2578 from RyanDwyer/fix-binding-reload (diff)
downloadsway-908095ef9a479cafaf7d815824f243b4576ff1bb.tar.gz
sway-908095ef9a479cafaf7d815824f243b4576ff1bb.tar.zst
sway-908095ef9a479cafaf7d815824f243b4576ff1bb.zip
Introduce seat_set_focus_container and seat_set_focus_workspace
These are the same as seat_set_focus, but accept a specific type rather than using nodes. Doing this adds more typesafety and lets us avoid using &con->node which looks a little ugly. This fixes a crash that pretty much nobody would ever come across. If you have a bindsym for "focus" with no arguments and run it from an empty workspace, sway would crash because it assumes `container` is not NULL.
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index f9dcb11a..312c62d1 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -294,7 +294,7 @@ void view_request_activate(struct sway_view *view) {
294 switch (config->focus_on_window_activation) { 294 switch (config->focus_on_window_activation) {
295 case FOWA_SMART: 295 case FOWA_SMART:
296 if (workspace_is_visible(ws)) { 296 if (workspace_is_visible(ws)) {
297 seat_set_focus(seat, &view->container->node); 297 seat_set_focus_container(seat, view->container);
298 } else { 298 } else {
299 view_set_urgent(view, true); 299 view_set_urgent(view, true);
300 } 300 }
@@ -303,7 +303,7 @@ void view_request_activate(struct sway_view *view) {
303 view_set_urgent(view, true); 303 view_set_urgent(view, true);
304 break; 304 break;
305 case FOWA_FOCUS: 305 case FOWA_FOCUS:
306 seat_set_focus(seat, &view->container->node); 306 seat_set_focus_container(seat, view->container);
307 break; 307 break;
308 case FOWA_NONE: 308 case FOWA_NONE:
309 break; 309 break;
@@ -404,7 +404,7 @@ void view_execute_criteria(struct sway_view *view) {
404 } 404 }
405 wlr_log(WLR_DEBUG, "for_window '%s' matches view %p, cmd: '%s'", 405 wlr_log(WLR_DEBUG, "for_window '%s' matches view %p, cmd: '%s'",
406 criteria->raw, view, criteria->cmdlist); 406 criteria->raw, view, criteria->cmdlist);
407 seat_set_focus(seat, &view->container->node); 407 seat_set_focus_container(seat, view->container);
408 list_add(view->executed_criteria, criteria); 408 list_add(view->executed_criteria, criteria);
409 struct cmd_results *res = execute_command(criteria->cmdlist, NULL); 409 struct cmd_results *res = execute_command(criteria->cmdlist, NULL);
410 if (res->status != CMD_SUCCESS) { 410 if (res->status != CMD_SUCCESS) {