From 14fc6c7dd80e5a8030bf9fb4b9c100aa51ee4030 Mon Sep 17 00:00:00 2001 From: Albert Graef <aggraef@gmail.com> Date: Mon, 15 Aug 2022 05:27:49 +0200 Subject: [PATCH] Shift+Tab cycles through the completions in reverse. --- pd/nw/pd_canvas.js | 6 +++--- pd/nw/pdgui.js | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pd/nw/pd_canvas.js b/pd/nw/pd_canvas.js index ce268c464..77d60d849 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 ebeb39449..0bdf7d624 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; } -- GitLab