db: Improve filtering Tables
I scheduled the filter query with first=True so it can run without a long delay during scanning. Additionally, I cancel any pending filter calls to discard stale arguments that otherwise would be processed. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
6607e5b0ad
commit
725619faf5
|
@ -227,7 +227,8 @@ class Table(Gtk.FilterListModel):
|
|||
def filter(self, glob: str | None, *, now: bool = False) -> None:
|
||||
"""Filter the displayed Rows."""
|
||||
if glob is not None:
|
||||
self.queue.push(self._filter_idle, glob, now=now)
|
||||
self.queue.cancel_task(self._filter_idle)
|
||||
self.queue.push(self._filter_idle, glob, now=now, first=True)
|
||||
else:
|
||||
self.get_filter().keys = None
|
||||
|
||||
|
|
|
@ -368,9 +368,13 @@ class TestTableFunctions(tests.util.TestCase):
|
|||
"""Test filtering Rows in the table."""
|
||||
for n in [1, 121, 212, 333]:
|
||||
self.table.create(number=n)
|
||||
self.table.queue.push(unittest.mock.Mock())
|
||||
|
||||
self.table.filter("*3*")
|
||||
self.assertIsNone(self.table.get_filter().keys)
|
||||
self.assertEqual(self.table.queue[0], (self.table._filter_idle, "*3*"))
|
||||
|
||||
self.table.filter("*2*")
|
||||
self.assertIsNone(self.table.get_filter().keys)
|
||||
self.assertEqual(self.table.queue[0], (self.table._filter_idle, "*2*"))
|
||||
|
||||
self.table.queue.complete()
|
||||
|
|
Loading…
Reference in New Issue