]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Use con_orientation(). Fixes switching between different outputs
authorMichael Stapelberg <michael@stapelberg.de>
Sun, 18 Sep 2011 13:38:39 +0000 (14:38 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Sun, 18 Sep 2011 13:38:39 +0000 (14:38 +0100)
Fixes: #518
For stacking containers, direct access using con->orientation is wrong, we need
to use con_orientation().

src/con.c

index d5346c41ba40467060302384b93d043afcd0865b..9197067293a28d23d80745d4879cc51710852927 100644 (file)
--- a/src/con.c
+++ b/src/con.c
@@ -835,15 +835,16 @@ Con *con_descend_tiling_focused(Con *con) {
  */
 Con *con_descend_direction(Con *con, direction_t direction) {
     Con *most = NULL;
-    DLOG("con_descend_direction(%p, %d)\n", con, direction);
+    int orientation = con_orientation(con);
+    DLOG("con_descend_direction(%p, orientation %d, direction %d)\n", con, orientation, direction);
     if (direction == D_LEFT || direction == D_RIGHT) {
-        if (con->orientation == HORIZ) {
+        if (orientation == HORIZ) {
             /* If the direction is horizontal, we can use either the first
              * (D_RIGHT) or the last con (D_LEFT) */
             if (direction == D_RIGHT)
                 most = TAILQ_FIRST(&(con->nodes_head));
             else most = TAILQ_LAST(&(con->nodes_head), nodes_head);
-        } else if (con->orientation == VERT) {
+        } else if (orientation == VERT) {
             /* Wrong orientation. We use the last focused con. Within that con,
              * we recurse to chose the left/right con or at least the last
              * focused one. */
@@ -856,13 +857,13 @@ Con *con_descend_direction(Con *con, direction_t direction) {
     }
 
     if (direction == D_UP || direction == D_DOWN) {
-        if (con->orientation == VERT) {
+        if (orientation == VERT) {
             /* If the direction is vertical, we can use either the first
              * (D_DOWN) or the last con (D_UP) */
             if (direction == D_UP)
                 most = TAILQ_LAST(&(con->nodes_head), nodes_head);
             else most = TAILQ_FIRST(&(con->nodes_head));
-        } else if (con->orientation == HORIZ) {
+        } else if (orientation == HORIZ) {
             /* Wrong orientation. We use the last focused con. Within that con,
              * we recurse to chose the top/bottom con or at least the last
              * focused one. */