Bug 565525 - [macOS] Table: after dragging a selected line, Cmd+click
removes selection

Clear selectedRowIndex = -1 when drag ends. Applied the fix from Table
to Tree

Change-Id: Ia2db075a03e15ad18fa8fa5f754ea6b05cb84c10
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java
index c20d38b..920f001 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java
@@ -2775,30 +2775,34 @@
 		 * To keep the order of events correct, deselect the other selected items and send the
 		 * selection event before MouseUp is sent. Ignore the next selection event.
 		 */
-		if (!dragDetected && selectedRowIndex != -1) {
-			NSOutlineView widget = (NSOutlineView)view;
-			NSIndexSet selectedRows = widget.selectedRowIndexes ();
-			int count = (int)selectedRows.count();
-			long [] indexBuffer = new long [count];
-			selectedRows.getIndexes(indexBuffer, count, 0);
-			for (int i = 0; i < count; i++) {
-				if (indexBuffer[i] == selectedRowIndex) continue;
-				ignoreSelect = true;
-				widget.deselectRow (indexBuffer[i]);
-				ignoreSelect = false;
-			}
-
-			Event event = new Event ();
-			id itemID = widget.itemAtRow (selectedRowIndex);
-			if (itemID != null) {
-				Widget item = display.getWidget (itemID.id);
-				if (item != null && item instanceof TreeItem) {
-					event.item = display.getWidget (itemID.id);
-					sendSelectionEvent (SWT.Selection, event, false);
+		if (selectedRowIndex != -1) {
+			if (dragDetected) {
+				selectedRowIndex = -1;
+			} else {
+				NSOutlineView widget = (NSOutlineView)view;
+				NSIndexSet selectedRows = widget.selectedRowIndexes ();
+				int count = (int)selectedRows.count();
+				long [] indexBuffer = new long [count];
+				selectedRows.getIndexes(indexBuffer, count, 0);
+				for (int i = 0; i < count; i++) {
+					if (indexBuffer[i] == selectedRowIndex) continue;
+					ignoreSelect = true;
+					widget.deselectRow (indexBuffer[i]);
+					ignoreSelect = false;
 				}
+
+				Event event = new Event ();
+				id itemID = widget.itemAtRow (selectedRowIndex);
+				if (itemID != null) {
+					Widget item = display.getWidget (itemID.id);
+					if (item != null && item instanceof TreeItem) {
+						event.item = display.getWidget (itemID.id);
+						sendSelectionEvent (SWT.Selection, event, false);
+					}
+				}
+				selectedRowIndex = -1;
+				ignoreSelect = true;
 			}
-			selectedRowIndex = -1;
-			ignoreSelect = true;
 		}
 		dragDetected = false;
 	}