diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java index acc5731339..d917f68a91 100644 --- a/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java +++ b/src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java @@ -3825,12 +3825,23 @@ public class VScrollTable extends FlowPanel implements Table, ScrollHandler, // click } else { - if (multiselectmode == MULTISELECT_MODE_DEFAULT) { - deselectAll(); - } + boolean currentlyJustThisRowSelected = selectedRowKeys + .size() == 1 + && selectedRowKeys + .contains(getKey()); + + if (!currentlyJustThisRowSelected) { + if (multiselectmode == MULTISELECT_MODE_DEFAULT) { + deselectAll(); + } + toggleSelection(); + } /* + * else NOP to avoid excessive server + * visits (selection is removed with + * CTRL/META click) + */ selectionRangeStart = this; - toggleSelection(); setRowFocus(this); } |