From 91b6ef20a1d8ddcafc87ca4eaf44f238f514987d Mon Sep 17 00:00:00 2001 From: vfilippov Date: Thu, 25 Nov 2010 17:13:08 +0000 Subject: [PATCH] Bug 70037 - keep item selection when moving columns up/down git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1104 6955db30-a419-402b-8a0d-67ecbb4d7f56 --- js/change-columns.js | 58 ++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 21 deletions(-) diff --git a/js/change-columns.js b/js/change-columns.js index 63dff7867..118310231 100644 --- a/js/change-columns.js +++ b/js/change-columns.js @@ -64,39 +64,55 @@ function move_deselect() { updateView(); } -function move_up() { +function move_up() +{ var sel_select = document.getElementById("selected_columns"); - var last = sel_select.options[0]; - var dummy = new Option("", "", false, false); - for (var i = 1; i= 0; i--) { + if (sel_select.options.length < 2) + return; + var newopt = [ sel_select.options[sel_select.options.length-1] ]; + var sel = [ sel_select.options[sel_select.options.length-1].selected ]; + for (var i = sel_select.options.length-2; i >= 0; i--) + { var opt = sel_select.options[i]; - if (opt.selected) { - sel_select.options[i] = dummy; - sel_select.options[i + 1] = opt; - sel_select.options[i] = last; + if (opt.selected) + { + newopt.unshift(newopt[0]); + newopt[1] = opt; + sel.unshift(sel[0]); + sel[1] = opt.selected; } - else{ - last = opt; + else + { + newopt.unshift(opt); + sel.unshift(opt.selected); } } + for (var i in newopt) + sel_select.options[i] = newopt[i]; + for (var i in sel) + sel_select.options[i].selected = sel[i]; updateView(); }