aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com/vaadin/terminal/gwt/client/ui/VScrollTable.java19
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);
}