diff options
| author | Lakshmi Shanmugam | 2019-12-27 11:13:33 +0000 |
|---|---|---|
| committer | Lakshmi Shanmugam | 2020-02-04 06:40:04 +0000 |
| commit | 6405c599446cbf8c81b470d7b9642bfc3da223a6 (patch) | |
| tree | 5924edada31a1e62c78e924aad21ad1fa6f0b6ec | |
| parent | ba318412e59dd7724f4b68dc3fb4e31881472b16 (diff) | |
| download | eclipse.platform.swt-6405c599446cbf8c81b470d7b9642bfc3da223a6.tar.gz eclipse.platform.swt-6405c599446cbf8c81b470d7b9642bfc3da223a6.tar.xz eclipse.platform.swt-6405c599446cbf8c81b470d7b9642bfc3da223a6.zip | |
Bug 352193 - SWT.CHECK and SWT.MULTI Table space checks only first
selected item
(Mac fix) - Toggle checked state of the selected items when multiple items are
selected and space is pressed.
Change-Id: I82ec19e969b32a26a9f41980450124a301fba0e6
| -rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java index 0c7521e819..1bc6d529f2 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/cocoa/org/eclipse/swt/widgets/Table.java @@ -84,6 +84,7 @@ public class Table extends Composite { /* Used to control drop feedback when FEEDBACK_SCROLL is set/not set */ boolean shouldScroll = true; + boolean keyDown; static int NEXT_ID; @@ -2021,7 +2022,9 @@ boolean isTransparent() { @Override void keyDown(long id, long sel, long theEvent) { ignoreSelect = preventSelect = false; + keyDown = true; super.keyDown(id, sel, theEvent); + keyDown = false; } @Override @@ -3488,18 +3491,35 @@ boolean tableView_shouldTrackCell_forTableColumn_row(long id, long sel, long tab @Override void tableView_setObjectValue_forTableColumn_row (long id, long sel, long aTableView, long anObject, long aTableColumn, long rowIndex) { - if (checkColumn != null && aTableColumn == checkColumn.id) { - TableItem item = items [(int)rowIndex]; - item.checked = !item.checked; - Event event = new Event (); - event.detail = SWT.CHECK; - event.item = item; - event.index = (int)rowIndex; - sendSelectionEvent (SWT.Selection, event, false); - item.redraw (-1); + if (checkColumn != null && aTableColumn == checkColumn.id) { + if (keyDown && (style & SWT.MULTI) != 0) { + NSTableView widget = (NSTableView)view; + NSIndexSet selection = widget.selectedRowIndexes (); + int count = (int)selection.count (); + long [] indices = new long [count]; + selection.getIndexes (indices, count, 0); + for (int i = 0; i < indices.length; i++) { + int index = (int)indices [i]; + TableItem item = items [index]; + toggleCheckedItem (item, index); + } + } else { + TableItem item = items [(int)rowIndex]; + toggleCheckedItem (item, rowIndex); + } } } +private void toggleCheckedItem (TableItem item, long rowIndex) { + item.checked = !item.checked; + Event event = new Event (); + event.detail = SWT.CHECK; + event.item = item; + event.index = (int)rowIndex; + sendSelectionEvent (SWT.Selection, event, false); + item.redraw (-1); +} + @Override void tableView_willDisplayCell_forTableColumn_row (long id, long sel, long aTableView, long cell, long tableColumn, long rowIndex) { if (checkColumn != null && tableColumn == checkColumn.id) return; |
