From 8a08e47ab337c72a78982d3a423b070d047a9522 Mon Sep 17 00:00:00 2001 From: Ian Harrigan Date: Thu, 9 May 2024 10:13:26 +0200 Subject: [PATCH] reapply sort on data source when items change --- haxe/ui/data/ArrayDataSource.hx | 3 +-- haxe/ui/data/DataSource.hx | 12 ++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/haxe/ui/data/ArrayDataSource.hx b/haxe/ui/data/ArrayDataSource.hx index 72cba1ecc..0d9d69ae2 100644 --- a/haxe/ui/data/ArrayDataSource.hx +++ b/haxe/ui/data/ArrayDataSource.hx @@ -36,12 +36,11 @@ class ArrayDataSource extends DataSource { handleChanged(); } - public override function sortCustom(fn:T->T->SortDirection->Int, direction:SortDirection = null) { + private override function handleSort(fn:T->T->SortDirection->Int, direction:SortDirection = null) { _array.sort(fn.bind(_, _, direction)); if (_filteredArray != null) { _filteredArray.sort(fn.bind(_, _, direction)); } - handleChanged(); } private override function handleGetSize():Int { diff --git a/haxe/ui/data/DataSource.hx b/haxe/ui/data/DataSource.hx index 5c735342f..52ca18561 100644 --- a/haxe/ui/data/DataSource.hx +++ b/haxe/ui/data/DataSource.hx @@ -148,13 +148,25 @@ class DataSource { private function handleChanged() { _changed = true; + if (_currentSortFn != null) { + handleSort(_currentSortFn, _currentSortDirection); + } if (_allowCallbacks == true) { _changed = false; onInternalChange(); } } + private function handleSort(fn:T->T->SortDirection->Int, direction:SortDirection = null) { + } + + private var _currentSortFn:T->T->SortDirection->Int = null; + private var _currentSortDirection:SortDirection = null; public function sortCustom(fn:T->T->SortDirection->Int, direction:SortDirection = null) { + _currentSortFn = fn; + _currentSortDirection = direction; + handleSort(fn, direction); + handleChanged(); } public function sort(field:String = null, direction:SortDirection = null) {