Add node modifiers: horizontal, vertical

This commit is contained in:
tobias 2020-03-09 18:48:56 +01:00 committed by Bastien Dejean
parent 331902cc05
commit cf2d40772e
5 changed files with 39 additions and 3 deletions

View file

@ -4,10 +4,10 @@
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\" Date: 03/16/2020
.\" Manual: Bspwm Manual
.\" Source: Bspwm 0.9.9-6-g41b2de0
.\" Source: Bspwm 0.9.9-7-gda1dc1d
.\" Language: English
.\"
.TH "BSPWM" "1" "03/16/2020" "Bspwm 0\&.9\&.9\-6\-g41b2de0" "Bspwm Manual"
.TH "BSPWM" "1" "03/16/2020" "Bspwm 0\&.9\&.9\-7\-gda1dc1d" "Bspwm Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
@ -274,6 +274,16 @@ Only consider nodes in the reference desktop\&.
Only consider leaf nodes\&.
.RE
.PP
[!]horizontal
.RS 4
Only consider nodes whose split type is horizontal\&.
.RE
.PP
[!]vertical
.RS 4
Only consider nodes whose split type is vertical\&.
.RE
.PP
[!]window
.RS 4
Only consider nodes that hold a window\&.

View file

@ -174,6 +174,12 @@ Modifiers
[!]leaf::
Only consider leaf nodes.
[!]horizontal::
Only consider nodes whose split type is horizontal.
[!]vertical::
Only consider nodes whose split type is vertical.
[!]window::
Only consider nodes that hold a window.

View file

@ -542,6 +542,8 @@ bool parse_node_modifiers(char *desc, node_select_t *sel)
GET_MOD(below)
GET_MOD(normal)
GET_MOD(above)
GET_MOD(horizontal)
GET_MOD(vertical)
} else {
return false;
}

View file

@ -470,7 +470,9 @@ node_select_t make_node_select(void)
.ancestor_of = OPTION_NONE,
.below = OPTION_NONE,
.normal = OPTION_NONE,
.above = OPTION_NONE
.above = OPTION_NONE,
.horizontal = OPTION_NONE,
.vertical = OPTION_NONE
};
return sel;
}
@ -1140,6 +1142,20 @@ bool node_matches(coordinates_t *loc, coordinates_t *ref, node_select_t *sel)
WFLAG(urgent)
#undef WFLAG
if (sel->horizontal != OPTION_NONE &&
loc->node->split_type != TYPE_HORIZONTAL
? sel->horizontal == OPTION_TRUE
: sel->horizontal == OPTION_FALSE) {
return false;
}
if (sel->vertical != OPTION_NONE &&
loc->node->split_type != TYPE_VERTICAL
? sel->vertical == OPTION_TRUE
: sel->vertical == OPTION_FALSE) {
return false;
}
return true;
}

View file

@ -183,6 +183,8 @@ typedef struct {
option_bool_t below;
option_bool_t normal;
option_bool_t above;
option_bool_t horizontal;
option_bool_t vertical;
} node_select_t;
typedef struct {