From c38fb467c099d04093e84f63b298d0657941ab39 2014-11-22 10:45:16 From: Jean-Philippe Lang Date: 2014-11-22 10:45:16 Subject: [PATCH] Merged r13610 (#18357). git-svn-id: http://svn.redmine.org/redmine/branches/2.6-stable@13636 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/public/javascripts/select_list_move.js b/public/javascripts/select_list_move.js index c3a5d0a..a568798 100644 --- a/public/javascripts/select_list_move.js +++ b/public/javascripts/select_list_move.js @@ -7,13 +7,16 @@ function addOption(theSel, theText, theValue) { } function swapOptions(theSel, index1, index2) { - var text, value; + var text, value, selected; text = theSel.options[index1].text; value = theSel.options[index1].value; + selected = theSel.options[index1].selected; theSel.options[index1].text = theSel.options[index2].text; theSel.options[index1].value = theSel.options[index2].value; + theSel.options[index1].selected = theSel.options[index2].selected; theSel.options[index2].text = text; theSel.options[index2].value = value; + theSel.options[index2].selected = selected; } function deleteOption(theSel, theIndex) { @@ -44,40 +47,54 @@ function moveOptions(theSelFrom, theSelTo) { } function moveOptionUp(theSel) { - var index = theSel.selectedIndex; - if (index > 0) { - swapOptions(theSel, index-1, index); - theSel.selectedIndex = index-1; + var indexTop = 0; + for(var s=0; s indexTop) { + swapOptions(theSel, s-1, s); + } + indexTop++; + } } } function moveOptionTop(theSel) { - var index = theSel.selectedIndex; - - if (index > 0) { - for (i=index; i>0; i--) { - swapOptions(theSel, i-1, i); + var indexTop = 0; + for(var s=0; s indexTop) { + for (var i=s; i>indexTop; i--) { + swapOptions(theSel, i-1, i); + } + } + indexTop++; } - theSel.selectedIndex = 0; } } function moveOptionDown(theSel) { - var index = theSel.selectedIndex; - if (index < theSel.length - 1) { - swapOptions(theSel, index, index+1); - theSel.selectedIndex = index+1; + var indexBottom = theSel.length - 1; + for(var s=indexBottom; s>=0; s--) { + if (theSel.options[s].selected) { + if (s < indexBottom) { + swapOptions(theSel, s+1, s); + } + indexBottom--; + } } } function moveOptionBottom(theSel) { - var index = theSel.selectedIndex; - var indexTop = theSel.length - 1; - if (index < theSel.length - 1) { - for (i=index; i=0; s--) { + if (theSel.options[s].selected) { + if (s < indexBottom) { + for (i=s; i