diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js index ce268c4642083e4e6665ccdfacd9e3394ed05353..77d60d8491433c3134aedce94edee234f39009ca 100644 --- a/pd/nw/pd_canvas.js +++ b/pd/nw/pd_canvas.js @@ -549,7 +549,7 @@ var canvas_events = (function() { }, text_mousedown: function(evt) { if (evt.target.parentNode === ac_dropdown()) { - last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results); + last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results, 0); last_yanked = ""; // ag: Don't do the usual object instantiation thing if // we've clicked on the autocompletion dropdown. This @@ -605,7 +605,7 @@ var canvas_events = (function() { if(ac_dropdown() === null || ac_dropdown().getAttribute("selected_item") === "-1") { grow_svg_for_element(textbox()); } else { // else, if there is a selected item on autocompletion tool, the selected item is written on the box - last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results); + last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results, 0); caret_end(); // No need to instantiate the object here, // presumably the user wants to go on editing. @@ -613,7 +613,7 @@ var canvas_events = (function() { last_yanked = ""; break; case 9: // tab - last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results); + last_completed = pdgui.select_result_autocomplete_dd(textbox(), ac_dropdown(), last_completed, last_results, evt.shiftKey?-1:1); last_yanked = ""; caret_end(); break; diff --git a/pd/nw/pdgui.js b/pd/nw/pdgui.js index ebeb39449e5fec6ae88f37347f20af91d208b2c7..0bdf7d624b608970c0624ccee527709dec643e6c 100644 --- a/pd/nw/pdgui.js +++ b/pd/nw/pdgui.js @@ -716,7 +716,7 @@ function update_autocomplete_dd_arrowup(ac_dropdown) { } } -function select_result_autocomplete_dd(textbox, ac_dropdown, last, res) { +function select_result_autocomplete_dd(textbox, ac_dropdown, last, res, dir) { if (ac_dropdown !== null) { let sel = ac_dropdown.getAttribute("selected_item"); if (sel > -1) { @@ -725,7 +725,7 @@ function select_result_autocomplete_dd(textbox, ac_dropdown, last, res) { return sel; } else { // it only passes here when the user presses 'tab' and there is no option selected var n = res.length; - var next = (last+1) % n; + var next = (dir==0 ? last : dir>0 ? last+1 : last<=0 ? n-1 : last-1) % n; textbox.innerText = res[next]; return next; }