diff --git a/res/search.js b/res/search.js
index 4d57a80b77a4565b0d81b0c5ebc58b7279bfb8a6..0c96b81ca741e5cbf82584329aff94b2bd2bdcc0 100644
--- a/res/search.js
+++ b/res/search.js
@@ -309,7 +309,8 @@ var deselect_buffers = function (except) {
             unselect_contexts(key);
             render.buffer.update(key);
         }
-    })
+    });
+    state.open = [];
 };
 
 var unselect_contexts = function (bufferid) {
@@ -328,7 +329,7 @@ var make_toggle_buffer = function (id) {
             state.open.pop();
             state.buffers[id].selected = false;
         } else {
-            deselect_buffers();
+            deselect_buffers(id);
             state.open.push(make_toggle_buffer(id));
             state.buffers[id].selected = true;
         }
@@ -346,6 +347,7 @@ var make_toggle_context = function (buffer, id) {
             context.selected = false;
             state.open.pop();
         } else {
+            deselect_buffers(buffer);
             unselect_contexts(buffer);
             if (!state.buffers[buffer].selected) {
                 state.open.push(make_toggle_buffer(buffer));