Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLakshmi Shanmugam2020-07-29 12:45:45 +0000
committerLakshmi Shanmugam2020-07-29 12:47:50 +0000
commit460f80dd00800db1d3f0a3099d086eb684efcc80 (patch)
treec4cef84fca6b22cf40edfcc208f5483b0e45d019
parent3e1888ee4a55778010edbc76e5695764e2611a2c (diff)
downloadeclipse.platform.swt-460f80dd00800db1d3f0a3099d086eb684efcc80.tar.gz
eclipse.platform.swt-460f80dd00800db1d3f0a3099d086eb684efcc80.tar.xz
eclipse.platform.swt-460f80dd00800db1d3f0a3099d086eb684efcc80.zip
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
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Tree.java46
1 files changed, 25 insertions, 21 deletions
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 c20d38b4fb..920f0018dc 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 @@ boolean sendMouseEvent(NSEvent nsEvent, int type, boolean send) {
* 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;
- }
+ 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);
+ 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;
}

Back to the top