]> git.sur5r.net Git - i3/i3/blobdiff - src/output.c
Merge pull request #1580 from Airblader/feature-nop
[i3/i3] / src / output.c
index fe8d49837adc0dc3c517850dc0dc705ade1f7694..822a0f8891004b5c8c8b14cc4c8f68deace51f3b 100644 (file)
@@ -4,7 +4,7 @@
  * vim:ts=4:sw=4:expandtab
  *
  * i3 - an improved dynamic tiling window manager
- * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE)
+ * © 2009-2013 Michael Stapelberg and contributors (see also: LICENSE)
  *
  * output.c: Output (monitor) related functions.
  *
@@ -19,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;
 
-    ELOG("output_get_content() called on non-output %p\n", output);
-    assert(false);
+    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);
+
+    return output;
 }