diff options
author | Lakshmi Shanmugam | 2020-07-29 12:45:45 +0000 |
---|---|---|
committer | Lakshmi Shanmugam | 2020-07-29 12:47:50 +0000 |
commit | 460f80dd00800db1d3f0a3099d086eb684efcc80 (patch) | |
tree | c4cef84fca6b22cf40edfcc208f5483b0e45d019 | |
parent | 3e1888ee4a55778010edbc76e5695764e2611a2c (diff) | |
download | eclipse.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.java | 46 |
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; } |