]> git.lizzy.rs Git - bspwm.git/commitdiff
Merge branch 'master' into history
authorBastien Dejean <nihilhill@gmail.com>
Mon, 6 May 2013 09:36:12 +0000 (11:36 +0200)
committerBastien Dejean <nihilhill@gmail.com>
Mon, 6 May 2013 09:36:12 +0000 (11:36 +0200)
Conflicts:
messages.c
tree.c

1  2 
README.md
messages.c
tree.c
tree.h
types.c
types.h

diff --cc README.md
Simple merge
diff --cc messages.c
index e0962ea00a547a130ec08b4dcb38fc9f2dc36a09,1d63d781c2afbc91504633efcbda6fec10e57d36..11f4a1ca9f6a2c616a44d3ec8889eedb21ff933e
@@@ -395,9 -388,18 +398,18 @@@ void process_message(char *msg, char *r
                  remove_rule_by_uid(uid);
          return;
      } else if (strcmp(cmd, "swap") == 0) {
-         swap_nodes(mon->desk->focus, history_get(mon->desk->history, 1));
+         char *arg;
+         swap_arg_t a;
+         if ((arg = strtok(NULL, TOK_SEP)) != NULL) {
+             if (parse_swap_argument(arg, &a)) {
+                 node_t *n = find_by_area(mon->desk, a);
+                 swap_nodes(mon->desk->focus, n);
+             }
+         } else {
 -            swap_nodes(mon->desk->focus, mon->desk->last_focus);
++            swap_nodes(mon->desk->focus, history_get(mon->desk->history, 1));
+         }
      } else if (strcmp(cmd, "alternate") == 0) {
 -        focus_node(mon, mon->desk, mon->desk->last_focus, true);
 +        focus_node(mon, mon->desk, history_get(mon->desk->history, 1), true);
          return;
      } else if (strcmp(cmd, "alternate_desktop") == 0) {
          select_desktop(mon->last_desk);
diff --cc tree.c
index 44772e378af9bcff0a88c86c5880584a0dc1d7b0,914c22d52f8e2b59acd6f7185145d764392fdd90..e1c74ccb10dcf9a058dd359cdecc5597a1db575a
--- 1/tree.c
--- 2/tree.c
+++ b/tree.c
@@@ -186,15 -217,22 +217,31 @@@ void flip_tree(node_t *n, flip_t flp
      flip_tree(n->second_child, flp);
  }
  
 +void list_history(desktop_t *d, char *rsp)
 +{
 +    char line[MAXLEN];
 +    for (node_list_t *a = d->history->head; a != NULL; a = a->next) {
 +        snprintf(line, sizeof(line), "%s %X\n", a->node->client->class_name, a->node->client->window);
 +        strncat(rsp, line, REMLEN(rsp));
 +    }
 +}
 +
+ int balance_tree(node_t *n)
+ {
+     if (n == NULL || n->vacant) {
+         return 0;
+     } else if (is_leaf(n)) {
+         return 1;
+     } else {
+         int b1 = balance_tree(n->first_child);
+         int b2 = balance_tree(n->second_child);
+         int b = b1 + b2;
+         if (b1 > 0 && b2 > 0)
+             n->split_ratio = (double) b1 / b;
+         return b;
+     }
+ }
  void arrange(monitor_t *m, desktop_t *d)
  {
      PRINTF("arrange %s%s%s\n", (num_monitors > 1 ? m->name : ""), (num_monitors > 1 ? " " : ""), d->name);
@@@ -404,16 -450,9 +459,9 @@@ void focus_node(monitor_t *m, desktop_
              disable_motion_recorder();
      }
  
-     if (!is_tiled(n->client)) {
-         if (!adaptative_raise || !might_cover(d, n))
-             window_raise(n->client->window);
-     } else {
-         window_pseudo_raise(d, n->client->window);
-     }
      if (d->focus != n) {
 -        d->last_focus = d->focus;
          d->focus = n;
 +        history_add(d->history, n);
      }
  
      ewmh_update_active_window();
@@@ -479,8 -517,7 +525,8 @@@ void unlink_node(desktop_t *d, node_t *
  
          update_vacant_state(b->parent);
      }
 +    history_remove(d->history, n);
+     put_status();
  }
  
  void remove_node(desktop_t *d, node_t *n)
diff --cc tree.h
Simple merge
diff --cc types.c
Simple merge
diff --cc types.h
Simple merge