From ad7734ca75e5c807b83e8cd021866b90f094dca5 Mon Sep 17 00:00:00 2001
From: Mark Knoop <mark@markknoop.com>
Date: Fri, 17 Apr 2020 16:28:25 +0100
Subject: [PATCH] Only prioritize entered_regionview if it doesn't overlap
 selection

---
 gtk2_ardour/editor_ops.cc | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 0348940907..14f54f16c0 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -6586,7 +6586,15 @@ Editor::split_region ()
 		//  * nothing happens OR
 		//  * some other region (maybe off-screen) is split.
 		//NOTE:  if the entered_regionview is /part of the selection/ then we should operate on the selection as usual
-		if (_edit_point == EditAtMouse && entered_regionview && !entered_regionview->selected()) {
+
+		// entered_regionview should only be prioritized if it does not overlap a selected region at the edit position
+		const samplepos_t erpos = entered_regionview->region()->position();
+		const samplepos_t erend = erpos + entered_regionview->region()->length();
+		const samplepos_t pos = get_preferred_edit_position();
+
+		if (_edit_point == EditAtMouse && entered_regionview && !entered_regionview->selected() &&
+				((erend < selection->regions.start() || erpos > selection->regions.end_sample()) ||
+				 (pos < selection->regions.start() || pos > selection->regions.end_sample()))) {
 			rs.add (entered_regionview);
 		} else {
 			rs = selection->regions;   //might be empty
@@ -6604,7 +6612,6 @@ Editor::split_region ()
 			}
 		}
 
-		const samplepos_t pos = get_preferred_edit_position();
 		const int32_t division = get_grid_music_divisions (0);
 		MusicSample where (pos, division);
 
-- 
2.25.2

