diff -r ed3f712a8eef -r ee483e8346f5 svghmi/widget_dropdown.ysl2 --- a/svghmi/widget_dropdown.ysl2 Tue Apr 14 22:08:52 2020 +0200 +++ b/svghmi/widget_dropdown.ysl2 Tue Apr 14 23:04:54 2020 +0200 @@ -41,9 +41,14 @@ this.move(true); }, set_selection: function(value) { - this.text_elt.firstElementChild.textContent = - (value >= 0 && value < this.content.length) ? - this.content[value] : "?"+String(value)+"?"; + let display_str; + if(value >= 0 && value < this.content.length){ + display_str = this.content[value]; + this.last_selection = value; + } else { + display_str = "?"+String(value)+"?"; + } + this.text_elt.firstElementChild.textContent = display_str; }, grow_text: function(up_to) { let count = 1; @@ -150,6 +155,12 @@ if(slots == length) { this.set_complete_text(); } else { + // align to selection + let offset = this.last_selection - this.lift; + if(offset > 0) + this.menu_offset = Math.min(offset + 1, length - slots + 1); + else + this.menu_offset = 0; this.set_partial_text(); } this.adjust_box_to_text();