From 01218b6767cddc604d48f7705c44f94291d9ab88 Mon Sep 17 00:00:00 2001
From: tcarver <tjc>
Date: Tue, 19 Jun 2012 15:46:54 +0100
Subject: [PATCH] when using SHIFT to drag the ends of feature keep the
 selection

---
 .../artemis/components/FeatureDisplay.java       | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/uk/ac/sanger/artemis/components/FeatureDisplay.java b/uk/ac/sanger/artemis/components/FeatureDisplay.java
index 096fe7a8e..8c279573a 100644
--- a/uk/ac/sanger/artemis/components/FeatureDisplay.java
+++ b/uk/ac/sanger/artemis/components/FeatureDisplay.java
@@ -4333,12 +4333,16 @@ public class FeatureDisplay extends EntryGroupPanel
           if(this_segment.getStart().getStrand() ==  new_click_range.getStrand() &&
              this_segment.canDirectEdit())
           {
-            if(event.isShiftDown())
+            if(event.isShiftDown() && getSelection().getSelectedSegments().size() == 0)
             {
+              int baseGrab = 15;
+              if(getScaleFactor() > 2)
+                baseGrab = 30;
+
               if( (new_click_range.getStart().getPosition() >= this_segment.getStart().getPosition() &&
-                   new_click_range.getStart().getPosition() <= this_segment.getStart().getPosition()+60) ||
+                   new_click_range.getStart().getPosition() <= this_segment.getStart().getPosition()+baseGrab) ||
                   (new_click_range.getEnd().getPosition() <= this_segment.getEnd().getPosition() &&
-                   new_click_range.getEnd().getPosition() >= this_segment.getEnd().getPosition()-60) )
+                   new_click_range.getEnd().getPosition() >= this_segment.getEnd().getPosition()-baseGrab) )
               {
                 int distFromBeg = new_click_range.getStart().getPosition()-this_segment.getStart().getPosition();
                 int distFromEnd = this_segment.getEnd().getPosition()-new_click_range.getEnd().getPosition();
@@ -4355,6 +4359,7 @@ public class FeatureDisplay extends EntryGroupPanel
                   other_end_of_segment_marker = this_segment.getStart();
                 }
 
+                getSelection().add(this_segment);
                 getEntryGroup().getActionController().startAction();
                 break;
               }
@@ -4450,8 +4455,9 @@ public class FeatureDisplay extends EntryGroupPanel
    **/
   private void handleCanvasMouseDrag(final MouseEvent event)
   {
-    if(event.isShiftDown() &&
-       getSelection().getAllFeatures().size() > 0) 
+    if( event.isShiftDown() &&
+       (getSelection().getAllFeatures().size() > 1 ||
+        getSelection().getSelectedSegments().size() > 1)) 
       return;
 
     if(click_segment_marker != null) 
-- 
GitLab