diff options
author | Mika Murtojarvi <mika@vaadin.com> | 2015-04-27 17:42:32 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-05-05 10:29:26 +0000 |
commit | a4544124c5f8fa70a70dfdf7dd4f511f53094069 (patch) | |
tree | f68104fca0ddb461ba055f99e5d94811ea726531 /server | |
parent | 744d04f796522a12f5b5f925e39433afbb2cb2e0 (diff) | |
download | vaadin-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.java | 20 |
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)"); |