--- a/svghmi/gen_index_xhtml.xslt Tue Apr 14 22:08:52 2020 +0200
+++ b/svghmi/gen_index_xhtml.xslt Tue Apr 14 23:04:54 2020 +0200
@@ -905,11 +905,21 @@
<xsl:text> set_selection: function(value) {
- <xsl:text> this.text_elt.firstElementChild.textContent =
- <xsl:text> (value >= 0 && value < this.content.length) ?
- <xsl:text> this.content[value] : "?"+String(value)+"?";
+ <xsl:text> let display_str; + <xsl:text> if(value >= 0 && value < this.content.length){ + <xsl:text> display_str = this.content[value]; + <xsl:text> this.last_selection = value; + <xsl:text> display_str = "?"+String(value)+"?"; + <xsl:text> this.text_elt.firstElementChild.textContent = display_str; @@ -1131,6 +1141,18 @@
+ <xsl:text> // align to selection + <xsl:text> let offset = this.last_selection - this.lift; + <xsl:text> if(offset > 0) + <xsl:text> this.menu_offset = Math.min(offset + 1, length - slots + 1); + <xsl:text> this.menu_offset = 0; <xsl:text> this.set_partial_text();
--- 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 @@
set_selection: function(value) {
- this.text_elt.firstElementChild.textContent =
- (value >= 0 && value < this.content.length) ?
- this.content[value] : "?"+String(value)+"?";
+ if(value >= 0 && value < this.content.length){ + display_str = this.content[value]; + this.last_selection = value; + display_str = "?"+String(value)+"?"; + this.text_elt.firstElementChild.textContent = display_str; grow_text: function(up_to) {
@@ -150,6 +155,12 @@
this.set_complete_text();
+ let offset = this.last_selection - this.lift; + this.menu_offset = Math.min(offset + 1, length - slots + 1); this.adjust_box_to_text();