X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fdatamodel%2FColumnSelection.java;h=e51afd041569e75f35083707253061e153e672b9;hb=0c355acb1b5ddab95961d703ca6bc383a4464def;hp=c35ff4628bdb4058b869c2b2da840643353812e0;hpb=8b08ad675b71e43e127d7be3b65c6d2f9d9094db;p=jalview.git diff --git a/src/jalview/datamodel/ColumnSelection.java b/src/jalview/datamodel/ColumnSelection.java index c35ff46..e51afd0 100644 --- a/src/jalview/datamodel/ColumnSelection.java +++ b/src/jalview/datamodel/ColumnSelection.java @@ -175,8 +175,9 @@ public class ColumnSelection * @param start beginning of edit * @param left shift in edit (+ve for removal, or -ve for inserts) */ - public void compensateForEdit(int start, int change) + public Vector compensateForEdit(int start, int change) { + Vector deletedHiddenColumns = null; for (int i = 0; i < size(); i++) { int temp = columnAt(i); @@ -189,20 +190,37 @@ public class ColumnSelection if(hiddenColumns!=null) { - for(int i=0; i start) + if ( region[0]>start && start+change>region[1] ) + { + deletedHiddenColumns.addElement( + hiddenColumns.elementAt(i)); + + hiddenColumns.removeElementAt(i); + i--; + hSize--; + continue; + } + + if(region[0]>start) { region[0] -= change; region[1] -= change; } + if(region[0]<0) region[0] = 0; - if(region[1] <0) - region[1] = 0; + } + + this.revealHiddenColumns(0); } + + return deletedHiddenColumns; } /** * propagate shift in alignment columns to column selection @@ -582,6 +600,8 @@ public class ColumnSelection { removeElement(max); max ++; } min++; max--; + if(min>max) + min = max; hideColumns(min, max); } @@ -644,18 +664,18 @@ public class ColumnSelection if (copy.selected!=null) { selected = new Vector(); for (int i=0,j=copy.selected.size(); i