mirror of
https://github.com/NickHu/sway
synced 2024-12-30 22:23:30 +01:00
Implement focus child
command
The `focus child` command focuses the child container within the selected container.
This commit is contained in:
parent
6d2b455727
commit
88b7cbe314
5 changed files with 12 additions and 5 deletions
|
@ -5,7 +5,8 @@ enum movement_direction {
|
||||||
MOVE_RIGHT,
|
MOVE_RIGHT,
|
||||||
MOVE_UP,
|
MOVE_UP,
|
||||||
MOVE_DOWN,
|
MOVE_DOWN,
|
||||||
MOVE_PARENT
|
MOVE_PARENT,
|
||||||
|
MOVE_CHILD
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "container.h"
|
#include "container.h"
|
||||||
|
|
|
@ -864,6 +864,8 @@ static struct cmd_results *cmd_focus(int argc, char **argv) {
|
||||||
move_focus(MOVE_DOWN);
|
move_focus(MOVE_DOWN);
|
||||||
} else if (strcasecmp(argv[0], "parent") == 0) {
|
} else if (strcasecmp(argv[0], "parent") == 0) {
|
||||||
move_focus(MOVE_PARENT);
|
move_focus(MOVE_PARENT);
|
||||||
|
} else if (strcasecmp(argv[0], "child") == 0) {
|
||||||
|
move_focus(MOVE_CHILD);
|
||||||
} else if (strcasecmp(argv[0], "mode_toggle") == 0) {
|
} else if (strcasecmp(argv[0], "mode_toggle") == 0) {
|
||||||
int i;
|
int i;
|
||||||
swayc_t *workspace = swayc_active_workspace();
|
swayc_t *workspace = swayc_active_workspace();
|
||||||
|
@ -903,7 +905,7 @@ static struct cmd_results *cmd_focus(int argc, char **argv) {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return cmd_results_new(CMD_INVALID, "focus",
|
return cmd_results_new(CMD_INVALID, "focus",
|
||||||
"Expected 'focus <direction|parent|mode_toggle>' or 'focus output <direction|name>'");
|
"Expected 'focus <direction|parent|child|mode_toggle>' or 'focus output <direction|name>'");
|
||||||
}
|
}
|
||||||
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
return cmd_results_new(CMD_SUCCESS, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ bool move_focus(enum movement_direction direction) {
|
||||||
return false;
|
return false;
|
||||||
} else if (new_view->type == C_OUTPUT) {
|
} else if (new_view->type == C_OUTPUT) {
|
||||||
return set_focused_container(swayc_active_workspace_for(new_view));
|
return set_focused_container(swayc_active_workspace_for(new_view));
|
||||||
} else if (direction == MOVE_PARENT) {
|
} else if (direction == MOVE_PARENT || direction == MOVE_CHILD) {
|
||||||
return set_focused_container(new_view);
|
return set_focused_container(new_view);
|
||||||
} else if (config->mouse_warping) {
|
} else if (config->mouse_warping) {
|
||||||
swayc_t *old_op = old_view->type == C_OUTPUT ?
|
swayc_t *old_op = old_view->type == C_OUTPUT ?
|
||||||
|
|
|
@ -1009,6 +1009,10 @@ static swayc_t *get_swayc_in_output_direction(swayc_t *output, enum movement_dir
|
||||||
}
|
}
|
||||||
|
|
||||||
swayc_t *get_swayc_in_direction_under(swayc_t *container, enum movement_direction dir, swayc_t *limit) {
|
swayc_t *get_swayc_in_direction_under(swayc_t *container, enum movement_direction dir, swayc_t *limit) {
|
||||||
|
if (dir == MOVE_CHILD) {
|
||||||
|
return container->focused;
|
||||||
|
}
|
||||||
|
|
||||||
swayc_t *parent = container->parent;
|
swayc_t *parent = container->parent;
|
||||||
if (dir == MOVE_PARENT) {
|
if (dir == MOVE_PARENT) {
|
||||||
if (parent->type == C_OUTPUT) {
|
if (parent->type == C_OUTPUT) {
|
||||||
|
|
|
@ -59,8 +59,8 @@ They are expected to be used with **bindsym** or at runtime through **swaymsg**(
|
||||||
Make focused view floating, non-floating, or the opposite of what it is now.
|
Make focused view floating, non-floating, or the opposite of what it is now.
|
||||||
|
|
||||||
**focus** <direction>::
|
**focus** <direction>::
|
||||||
Direction may be one of _up_, _down_, _left_, _right_, or _parent_. The
|
Direction may be one of _up_, _down_, _left_, _right_, _parent_, or _child_.
|
||||||
directional focus commands will move the focus in that direction. The parent
|
The directional focus commands will move the focus in that direction. The parent
|
||||||
focus command will change the focus to the parent of the currently focused
|
focus command will change the focus to the parent of the currently focused
|
||||||
container, which is useful, for example, to open a sibling of the parent
|
container, which is useful, for example, to open a sibling of the parent
|
||||||
container, or to move the entire container around.
|
container, or to move the entire container around.
|
||||||
|
|
Loading…
Reference in a new issue