Index: gtk2_ardour/editor_mouse.cc
===================================================================
--- gtk2_ardour/editor_mouse.cc	(revision 7976)
+++ gtk2_ardour/editor_mouse.cc	(working copy)
@@ -363,7 +363,7 @@
 
 	instant_save ();
         
-        if (!internal_editing()) {
+	if (!internal_editing()) {
                 if (mouse_mode != MouseRange && _join_object_range_state == JOIN_OBJECT_RANGE_NONE) {
                         
                         /* in all modes except range and joined object/range, hide the range selection,
@@ -373,6 +373,7 @@
                         for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) {
                                 (*i)->set_should_show_selection (true);
                         }
+                        
                         for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
                                 (*i)->hide_selection ();
                         }
@@ -484,7 +485,7 @@
 	if (event->type == GDK_BUTTON_PRESS || event->type == GDK_BUTTON_RELEASE) {
 
 		if ((event->button.state & Keyboard::RelevantModifierKeyMask) && event->button.button != 1) {
-
+  
 			/* almost no selection action on modified button-2 or button-3 events */
 
 			if (item_type != RegionItem && event->button.button != 2) {
@@ -500,33 +501,32 @@
 
 	switch (item_type) {
 	case RegionItem:
+
 		if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
 			set_selected_regionview_from_click (press, op, true);
 		} else if (event->type == GDK_BUTTON_PRESS) {
 			selection->clear_tracks ();
 			set_selected_track_as_side_effect (op, true);
 		}
-		if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) {
-			clicked_selection = select_range_around_region (selection->regions.front());
-		}
 		break;
 
  	case RegionViewNameHighlight:
  	case RegionViewName:
         case LeftFrameHandle:
         case RightFrameHandle:
-		if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
-			set_selected_regionview_from_click (press, op, true);
+
+		if (mouse_mode != MouseRange || internal_editing() || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {		
+			set_selected_regionview_from_click (press, op, true);	
 		} else if (event->type == GDK_BUTTON_PRESS) {
-			set_selected_track_as_side_effect (op);
+			set_selected_track_as_side_effect (op);	
 		}
 		break;
 
-
 	case FadeInHandleItem:
 	case FadeInItem:
 	case FadeOutHandleItem:
 	case FadeOutItem:
+
 		if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
 			set_selected_regionview_from_click (press, op, true);
 		} else if (event->type == GDK_BUTTON_PRESS) {
@@ -535,6 +535,7 @@
 		break;
 
 	case ControlPointItem:
+
 		set_selected_track_as_side_effect (op, true);
 		if (mouse_mode != MouseRange || _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
 			set_selected_control_point_from_click (op, false);
@@ -818,10 +819,6 @@
 					add_region_drag (item, event, clicked_regionview);
 				}
 				
-				if (_join_object_range_state == JOIN_OBJECT_RANGE_OBJECT && !selection->regions.empty()) {
-					_drags->add (new SelectionDrag (this, clicked_axisview->get_selection_rect (clicked_selection)->rect, SelectionDrag::SelectionMove));
-				}
-
 				_drags->start_grab (event);
 				break;
 
@@ -882,30 +879,6 @@
 						if (atv) {
 							_drags->set (new AutomationRangeDrag (this, atv->base_item(), selection->time), event, up_down_cursor);
 						}
-
-						/* if we're over a track and a region, and in the `object' part of a region,
-						   put a selection around the region and drag both
-						*/
-						RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tvp.first);
-						if (rtv && _join_object_range_state == JOIN_OBJECT_RANGE_OBJECT) {
-							boost::shared_ptr<Track> t = boost::dynamic_pointer_cast<Track> (rtv->route ());
-							if (t) {
-								boost::shared_ptr<Playlist> pl = t->playlist ();
-								if (pl) {
-									
-									boost::shared_ptr<Region> r = pl->top_region_at (event_frame (event));
-									if (r) {
-										RegionView* rv = rtv->view()->find_view (r);
-										clicked_selection = select_range_around_region (rv);
-										_drags->add (new SelectionDrag (this, item, SelectionDrag::SelectionMove));
-										list<RegionView*> rvs;
-										rvs.push_back (rv);
-										_drags->add (new RegionMoveDrag (this, item, rv, rvs, false, false));
-										_drags->start_grab (event);
-									}
-								}
-							}
-						}
 					}
 				}
 				break;
@@ -2609,7 +2582,7 @@
 	double speed = rtv->track()->speed();
 
         playlist->clear_changes ();
-	boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region()));
+	boost::shared_ptr<Region> new_region (RegionFactory::create (rv->region(), true));
         playlist->add_region (new_region, (framepos_t) (pos * speed));
 	_session->add_command (new StatefulDiffCommand (playlist));
 
