]> git.sur5r.net Git - i3/i3/blobdiff - src/output.c
Merge pull request #1697 from Airblader/feature-1695
[i3/i3] / src / output.c
index 684879240bad55366a261bdc231384d42ab0c059..ec5d5f4791643af05a96df7238a819f72a3dc571 100644 (file)
@@ -1,7 +1,14 @@
+#undef I3__FILE__
+#define I3__FILE__ "output.c"
 /*
  * vim:ts=4:sw=4:expandtab
+ *
+ * i3 - an improved dynamic tiling window manager
+ * © 2009 Michael Stapelberg and contributors (see also: LICENSE)
+ *
+ * output.c: Output (monitor) related functions.
+ *
  */
-
 #include "all.h"
 
 /*
@@ -12,9 +19,30 @@ Con *output_get_content(Con *output) {
     Con *child;
 
     TAILQ_FOREACH(child, &(output->nodes_head), nodes)
-        if (child->type == CT_CON)
-            return child;
+    if (child->type == CT_CON)
+        return child;
+
+    return NULL;
+}
+
+/*
+ * Returns an 'output' corresponding to one of left/right/down/up or a specific
+ * output name.
+ *
+ */
+Output *get_output_from_string(Output *current_output, const char *output_str) {
+    Output *output;
+
+    if (strcasecmp(output_str, "left") == 0)
+        output = get_output_next_wrap(D_LEFT, current_output);
+    else if (strcasecmp(output_str, "right") == 0)
+        output = get_output_next_wrap(D_RIGHT, current_output);
+    else if (strcasecmp(output_str, "up") == 0)
+        output = get_output_next_wrap(D_UP, current_output);
+    else if (strcasecmp(output_str, "down") == 0)
+        output = get_output_next_wrap(D_DOWN, current_output);
+    else
+        output = get_output_by_name(output_str);
 
-    ELOG("output_get_content() called on non-output %p\n", output);
-    assert(false);
+    return output;
 }