mirror of
https://github.com/swaywm/sway.git
synced 2024-11-24 08:51:27 +00:00
workspace criterion also applys to containers
This commit is contained in:
parent
f7a0f06dff
commit
4a664a2e7b
|
@ -159,6 +159,31 @@ static bool has_container_criteria(struct criteria *criteria) {
|
||||||
|
|
||||||
static bool criteria_matches_container(struct criteria *criteria,
|
static bool criteria_matches_container(struct criteria *criteria,
|
||||||
struct sway_container *container) {
|
struct sway_container *container) {
|
||||||
|
struct sway_seat *seat = input_manager_current_seat();
|
||||||
|
struct sway_container *focus = seat_get_focused_container(seat);
|
||||||
|
struct sway_view *focused = focus ? focus->view : NULL;
|
||||||
|
|
||||||
|
if (criteria->workspace) {
|
||||||
|
struct sway_workspace *ws = container->pending.workspace;
|
||||||
|
if (!ws) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (criteria->workspace->match_type) {
|
||||||
|
case PATTERN_FOCUSED:
|
||||||
|
if (focused &&
|
||||||
|
strcmp(ws->name, focused->container->pending.workspace->name)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PATTERN_PCRE2:
|
||||||
|
if (regex_cmp(ws->name, criteria->workspace->regex) < 0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (criteria->con_mark) {
|
if (criteria->con_mark) {
|
||||||
bool exists = false;
|
bool exists = false;
|
||||||
struct sway_container *con = container;
|
struct sway_container *con = container;
|
||||||
|
@ -358,27 +383,6 @@ static bool criteria_matches_view(struct criteria *criteria,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (criteria->workspace) {
|
|
||||||
struct sway_workspace *ws = view->container->pending.workspace;
|
|
||||||
if (!ws) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (criteria->workspace->match_type) {
|
|
||||||
case PATTERN_FOCUSED:
|
|
||||||
if (focused &&
|
|
||||||
strcmp(ws->name, focused->container->pending.workspace->name)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PATTERN_PCRE2:
|
|
||||||
if (regex_cmp(ws->name, criteria->workspace->regex) < 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (criteria->pid) {
|
if (criteria->pid) {
|
||||||
if (criteria->pid != view->pid) {
|
if (criteria->pid != view->pid) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -1031,7 +1031,7 @@ The following attributes may be matched with:
|
||||||
applications and requires XWayland.
|
applications and requires XWayland.
|
||||||
|
|
||||||
*workspace*
|
*workspace*
|
||||||
Compare against the workspace name for this view. Can be a regular
|
Compare against the workspace name for this container. Can be a regular
|
||||||
expression. If the value is \_\_focused\_\_, then all the views on the
|
expression. If the value is \_\_focused\_\_, then all the views on the
|
||||||
currently focused workspace matches.
|
currently focused workspace matches.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue