summaryrefslogtreecommitdiff
path: root/sway/tree/view.c
diff options
context:
space:
mode:
authorBrian Ashworth <[email protected]>2018-08-08 15:26:44 -0400
committerGitHub <[email protected]>2018-08-08 15:26:44 -0400
commit3c26536267e13859eb6088ce0192579f10ac871f (patch)
treea4676629358071b0f0748dde33a32d82c9a58175 /sway/tree/view.c
parent776b9b7e1fa72ebc4f7e79de280ea5dd9901787e (diff)
parente28101e6e1ed757fe8a7402c5123ee7e58546895 (diff)
Merge branch 'master' into master
Diffstat (limited to 'sway/tree/view.c')
-rw-r--r--sway/tree/view.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 06cef900..950494d8 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -1,5 +1,6 @@
#define _POSIX_C_SOURCE 200809L
#include <stdlib.h>
+#include <strings.h>
#include <wayland-server.h>
#include <wlr/render/wlr_renderer.h>
#include <wlr/types/wlr_buffer.h>
@@ -456,7 +457,13 @@ static struct sway_container *select_workspace(struct sway_view *view) {
if (criteria->type == CT_ASSIGN_WORKSPACE) {
ws = workspace_by_name(criteria->target);
if (!ws) {
- ws = workspace_create(NULL, criteria->target);
+ if (strcasecmp(criteria->target, "back_and_forth") == 0) {
+ if (prev_workspace_name) {
+ ws = workspace_create(NULL, prev_workspace_name);
+ }
+ } else {
+ ws = workspace_create(NULL, criteria->target);
+ }
}
break;
} else {
@@ -891,6 +898,15 @@ static bool find_by_mark_iterator(struct sway_container *con,
return con->type == C_VIEW && view_has_mark(con->sway_view, mark);
}
+struct sway_view *view_find_mark(char *mark) {
+ struct sway_container *container = container_find(&root_container,
+ find_by_mark_iterator, mark);
+ if (!container) {
+ return NULL;
+ }
+ return container->sway_view;
+}
+
bool view_find_and_unmark(char *mark) {
struct sway_container *container = container_find(&root_container,
find_by_mark_iterator, mark);