Matthias Clasen
e57d6ec359
Merge branch 'list-constructors' into 'master'
...
List constructors
See merge request GNOME/gtk!2296
2020-07-26 23:56:21 +00:00
Matthias Clasen
72bb7fc701
selectionfiltermodel: Make constructor allow-none
...
We don't pay attention to item-type anymore, so
drop the item-type property and the _for_item_type()
constructor, and allow passing NULL to the regular
constructor.
We don't make this constructor transfer-full, since
the selection filter model is not a wrapping model
like the others. It is more like fork than a wrap.
2020-07-26 18:04:40 -04:00
Matthias Clasen
cdc263f796
multiselection: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Also make the constructor return GtkMultiSelection *.
Update all callers.
2020-07-26 18:04:40 -04:00
Matthias Clasen
ccb9dcc86b
singleselection: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:04:40 -04:00
Matthias Clasen
dd1c0c0b22
treelistmodel: Make constructor transfer full
...
Make gtk_tree_list_model_new() take the root model
as first argument, and make it transfer full, for
consistency with other wrapping list constructors.
Update all callers.
Still missing here: Make the model property writable,
and allow passing NULL in the constructor.
2020-07-26 18:04:40 -04:00
Matthias Clasen
a46cfd3ff4
sortlistmodel: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:04:40 -04:00
Matthias Clasen
706d464ae6
filterlistmodel: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:04:40 -04:00
Matthias Clasen
b6d9f3facb
slicelistmodel: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:04:40 -04:00
Matthias Clasen
32b8fe40bb
maplistmodel: Make constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:02:51 -04:00
Matthias Clasen
1e8be87026
flattenlistmodel: Make the constructor transfer full
...
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.
Update all callers.
2020-07-26 18:02:44 -04:00
Benjamin Otte
2f27d29247
Add GtkBoolFilter
...
Takes a boolean GtkExpression (like a boolean object property) to run a
filter with.
2020-07-26 20:43:08 +02:00
Matthias Clasen
f2bdb1fb87
Merge branch 'matthiasc/for-master' into 'master'
...
Matthiasc/for master
See merge request GNOME/gtk!2283
2020-07-25 00:05:28 +00:00
Matthias Clasen
bacaa5eb9a
Add another sortlistmodel test
...
This tests the crash fix in f7b73b2e01
.
2020-07-24 19:28:54 -04:00
Matthias Clasen
9a297516ba
testsuite: Add an incremental sort test
...
Add a test that makes changes to a model while it
is incrementally sorted.
2020-07-24 19:23:18 -04:00
Benjamin Otte
3078b180fe
Replace "gdouble" with "double"
2020-07-25 00:47:36 +02:00
Benjamin Otte
556997f9df
Replace "gfloat" with "float"
2020-07-25 00:47:36 +02:00
Benjamin Otte
d375dce9f5
Replace "gchar" with "char"
2020-07-25 00:47:36 +02:00
Benjamin Otte
d7266b25ba
Replace "gint" with "int"
2020-07-25 00:47:36 +02:00
Matthias Clasen
2a43ce1705
testsuite: Use better names for sortlistmodel tests
...
Name the tests for what they do.
2020-07-24 15:37:49 -04:00
Matthias Clasen
3324a6e6b3
testsuite: Reenable tests for incremental sort
...
This was unintentionally disabled.
2020-07-24 15:22:14 -04:00
Matthias Clasen
63a4345d2c
Merge branch 'wip/otte/sortlistmodel2' into 'master'
...
Massively refactor and improve sortlistmodel
See merge request GNOME/gtk!2273
2020-07-22 13:15:45 +00:00
Benjamin Otte
8c608e9c1c
sortlistmodel: Split the SortItem into 2 arrays
...
Instead of one item keeping the item + its position and sorting that
list, keep the items in 1 array and put the positions into a 2nd array.
This is generally slower while sorting, but allows multiple improvements:
1. We can replace items with keys
This allows avoiding multiple slow lookups when using complex
comparisons
2. We can keep multiple position arrays
This allows doing a sorting in the background without actually
emitting items-changed() until the array is completely sorted.
3. The main list tracks the items in the original model
So only a single memmove() is necessary there, while the old version
had to upgrade the position in every item.
Benchmarks:
sorting a model of simple strings
old new
256,000 items 256ms 268ms
512,000 items 569ms 638ms
sorting a model of file trees, directories first, by size
old new
64,000 items 350ms 364ms
128,000 items 667ms 691ms
removing half the model
old new
512,000 items 24ms 15ms
1,024,000 items 49ms 25ms
2020-07-22 14:30:49 +02:00
Benjamin Otte
93599c2c48
testsuite: Add exhaustive sortlistmodel test
...
This is basically a copy/paste from the filterlistmodel test, but
adapted for sorting.
2020-07-22 14:04:40 +02:00
Benjamin Otte
26696a741e
timsort: Add change tracking to gtk_tim_sort_step()
2020-07-22 14:04:40 +02:00
Benjamin Otte
97c5cb3514
Add a timsort() implementation
2020-07-22 14:04:40 +02:00
Christian Hergert
7884ab6161
build: fix linking support on macOS with Clang
...
This was preventing any sort of building on macOS, even though the quartz
backend is currently non-functional. Fixing this is a pre-requisite to
getting a new macOS backend compiling.
2020-07-21 14:45:12 -07:00
Benjamin Otte
b67ffe9650
sortlistmodel: Test that the model is stable
...
Stability is measured relative to the child model, not relative to the
previous sorter.
2020-07-20 22:28:01 +02:00
Benjamin Otte
2c519b006d
testsuite: Fix a leak
2020-07-20 22:28:01 +02:00
Benjamin Otte
495069c868
Merge branch 'wip/otte/for-master' into 'master'
...
Wip/otte/for master
See merge request GNOME/gtk!2251
2020-07-16 19:43:45 +00:00
Benjamin Otte
e518c1f2f3
stringfilter: Make the constructor take an expression
...
An expression is critically important for a string filter and people
should be made aware of it when constructing the filter.
2020-07-16 20:43:16 +02:00
Benjamin Otte
22eccbdbb6
testsuite: Don't be too exhaustive
...
The test was taking over 60s on CI, that's a but much.
2020-07-16 20:43:16 +02:00
Matthias Clasen
87b5eadb7c
treesorter tests: Add a comment
...
This looks like a leak, but isn't one.
Add a comment to that effect.
2020-07-16 12:14:28 -04:00
Matthias Clasen
ee96bc7185
multiselection tests: Plug a leak
...
g_list_model_get_item is transfer full.
2020-07-16 08:54:36 -04:00
Matthias Clasen
f94f325636
filterlistmodel tests: Plug a leak
...
g_list_model_get_item is transfer full.
2020-07-16 08:54:36 -04:00
Matthias Clasen
6c1217dd93
filter tests: Plug a leak
...
g_list_model_get_item is transfer full.
2020-07-16 08:54:36 -04:00
Emmanuele Bassi
0578422612
build: Restructure the tests to use dictionaries
...
Instead of an array of arrays, let's use an array of dictionaries; it's
easier to add optional keys without requiring to remember where to put
empty arrays.
2020-07-10 16:32:15 +01:00
Emmanuele Bassi
ad04da84c9
Add the filtermodel-exhaustive test to the slow suite
...
This increases the default timeout.
2020-07-10 16:16:15 +01:00
Emmanuele Bassi
333b013f7f
Increase the default timeout for slow tests
...
If a test is part of the 'slow' test suite, we should increment the
default timeout to compensate.
2020-07-10 16:13:37 +01:00
Benjamin Otte
4cd92f979c
Merge branch 'wip/otte/for-master' into 'master'
...
Wip/otte/for master
See merge request GNOME/gtk!2221
2020-07-09 21:34:02 +00:00
Benjamin Otte
4d90846182
testsuite: Be more exhaustive
...
Create larger source models in tests, so that we hit the incremental
batch size more often and have a higher chance to expose bugs there.
2020-07-09 22:29:36 +02:00
Benjamin Otte
986f721938
filterlistmodel: Don't filter out every 513th element
...
Incremental filtering would skip every 513th element due to an
off-by-one error.
Test included
2020-07-09 22:29:36 +02:00
Matthias Clasen
8c4df51a14
tests: Plug some more memory leaks
...
These showed up under asan.
2020-07-09 00:33:14 -04:00
Matthias Clasen
0dc946da63
testsuite: Assorted leak fixes
...
All found by asan.
2020-07-08 17:44:49 -04:00
Matthias Clasen
e6d8eedc00
testsuite: Fix a memory leak in the bitmask tests
...
This was showing up when running under asan.
2020-07-08 17:44:16 -04:00
Matthias Clasen
729ba44297
Merge branch 'wip/otte/filterlistmodel' into 'master'
...
Improve GtkFilterListModel
See merge request GNOME/gtk!2199
2020-07-06 15:42:44 +00:00
Benjamin Otte
bf3382a89e
testsuite: Add more filterlistmodel tests
...
These ones try to be exhaustive and randomly catch weird cases.
As such, the tests are more complicated and harder to grasp.
Sorry.
2020-07-06 03:42:43 +02:00
Benjamin Otte
3162e25671
bitset: Fix typo: gtk_bitset_slice() => gtk_bitset_splice()
2020-07-06 03:42:43 +02:00
Benjamin Otte
3d931b4fe2
bitset: Don't overflow when splicing
...
Testcase added.
2020-07-06 03:42:43 +02:00
Matthias Clasen
2d8fddc1e9
filefilter: Drop GtkFileFilterFlags
...
Replace gtk_file_filter_get_needed by gtk_file_filter_get_attributes,
which directly returns the attributes that are needed.
Update all callers.
2020-07-05 15:10:13 -04:00
Matthias Clasen
a8b0125da1
filefilter: Drop GtkFileFilterInfo
...
We can just make the filter operate on GFileInfo.
This is in preparation for making GtkFileFilter a
GtkFilter.
Update all users.
2020-07-05 13:55:42 -04:00