summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorMika Murtojarvi <mika@vaadin.com>2015-04-27 17:42:32 +0300
committerVaadin Code Review <review@vaadin.com>2015-05-05 10:29:26 +0000
commita4544124c5f8fa70a70dfdf7dd4f511f53094069 (patch)
treef68104fca0ddb461ba055f99e5d94811ea726531 /server
parent744d04f796522a12f5b5f925e39433afbb2cb2e0 (diff)
downloadvaadin-framework-a4544124c5f8fa70a70dfdf7dd4f511f53094069.tar.gz
vaadin-framework-a4544124c5f8fa70a70dfdf7dd4f511f53094069.zip
Fix the updating of sort indicators (#17440)
Change-Id: I0f8aa598b6e133a5cc128777cb6f1950dc6666c7
Diffstat (limited to 'server')
-rw-r--r--server/src/com/vaadin/ui/Grid.java20
1 files changed, 16 insertions, 4 deletions
diff --git a/server/src/com/vaadin/ui/Grid.java b/server/src/com/vaadin/ui/Grid.java
index f1f17405e8..77a3d28ddf 100644
--- a/server/src/com/vaadin/ui/Grid.java
+++ b/server/src/com/vaadin/ui/Grid.java
@@ -3694,8 +3694,21 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
Object propertyId = getPropertyIdByColumnId(columnIds[i]);
order.add(new SortOrder(propertyId, directions[i]));
}
-
setSortOrder(order, userOriginated);
+ if (!order.equals(getSortOrder())) {
+ /*
+ * Actual sort order is not what the client expects. Make
+ * sure the client gets a state change event by clearing the
+ * diffstate and marking as dirty
+ */
+ ConnectorTracker connectorTracker = getUI()
+ .getConnectorTracker();
+ JsonObject diffState = connectorTracker
+ .getDiffState(Grid.this);
+ diffState.remove("sortColumns");
+ diffState.remove("sortDirs");
+ markAsDirty();
+ }
}
@Override
@@ -5017,9 +5030,6 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
cs.sort(propertyIds, directions);
- fireEvent(new SortEvent(this, new ArrayList<SortOrder>(sortOrder),
- userOriginated));
-
if (columns.keySet().containsAll(Arrays.asList(propertyIds))) {
String[] columnKeys = new String[items];
for (int i = 0; i < items; ++i) {
@@ -5032,6 +5042,8 @@ public class Grid extends AbstractComponent implements SelectionNotifier,
getState().sortColumns = new String[] {};
getState(false).sortDirs = new SortDirection[] {};
}
+ fireEvent(new SortEvent(this, new ArrayList<SortOrder>(sortOrder),
+ userOriginated));
} else {
throw new IllegalStateException(
"Container is not sortable (does not implement Container.Sortable)");