diff --git a/res/search.js b/res/search.js index 2416f7448b59d2f610335ddea5104919f0382e79..bb37d60935e5bef322e9cf8bbb89966b141978d8 100644 --- a/res/search.js +++ b/res/search.js @@ -1,5 +1,6 @@ var state = {"query": "", "selected_history_entry": -1}; var buffers = {}; +var open = []; var max_history_size = 8; @@ -51,6 +52,14 @@ $("#q").keypress(function (e) { } }); +$("body").click(function (e) { + open[open.length-1](e); +}); + +$("nav").click(function (e) { + e.stopPropagation(); +}); + $("#q").focus(function (){ $("#autocomplete").addClass("active"); $("#results").addClass("hidden"); @@ -320,6 +329,7 @@ var search = function () { $("#q").blur(); show_loader(); buffers = {}; + open = []; results.click(wrap_click_handler(deselect_buffers)); state = { "query": $("#q").val(), @@ -364,9 +374,11 @@ var make_toggle_buffer = function (id) { return function (e) { if (buffers[id].selected) { deselect_buffers(); + open.pop(); buffers[id].selected = false; } else { deselect_buffers(); + open.push(make_toggle_buffer(id)); buffers[id].selected = true; } update_buffer(id); @@ -391,10 +403,14 @@ var make_toggle_context = function (buffer, id) { if (context.selected) { unselect_contexts(buffer); context.selected = false; + open.pop(); } else { unselect_contexts(buffer); + if (!buffers[buffer].selected) + open.push(make_toggle_buffer(buffer)); buffers[buffer].selected = true; context.selected = true; + open.push(make_toggle_context(buffer, id)); if (context.before.length === 0) earlier(buffer, id, 5); if (context.after.length === 0) later(buffer, id, 5); }