[Bf-blender-cvs] [263e2537c5a] soc-2020-outliner: Outliner: Add sort by object type
Nathan Craddock
noreply at git.blender.org
Tue Jul 7 01:46:06 CEST 2020
Commit: 263e2537c5a9c84d35f3d0a8bc5efc75974b6c54
Author: Nathan Craddock
Date: Mon Jul 6 17:41:22 2020 -0600
Branches: soc-2020-outliner
https://developer.blender.org/rB263e2537c5a9c84d35f3d0a8bc5efc75974b6c54
Outliner: Add sort by object type
When sorting by type, collections are sorted alphabetically. Objects are
sorted by their types.
===================================================================
M source/blender/editors/space_outliner/outliner_tree.c
===================================================================
diff --git a/source/blender/editors/space_outliner/outliner_tree.c b/source/blender/editors/space_outliner/outliner_tree.c
index 5f73c175b44..40765f86865 100644
--- a/source/blender/editors/space_outliner/outliner_tree.c
+++ b/source/blender/editors/space_outliner/outliner_tree.c
@@ -1723,6 +1723,23 @@ static int treesort_alpha(const void *v1, const void *v2)
return 0;
}
+static int treesort_type(const void *v1, const void *v2)
+{
+ const tTreeSort *x1 = v1;
+ const tTreeSort *x2 = v2;
+
+ if (((Object *)x1->id)->type > ((Object *)x2->id)->type) {
+ return 1;
+ }
+ else if (((Object *)x2->id)->type > ((Object *)x1->id)->type) {
+ return -1;
+ }
+ else {
+ /* Compare by name */
+ return treesort_alpha(v1, v2);
+ }
+}
+
/* this is nice option for later? doesn't look too useful... */
#if 0
static int treesort_obtype_alpha(const void *v1, const void *v2)
@@ -1935,15 +1952,32 @@ static void outliner_tree_sort(SpaceOutliner *soops, ListBase *tree)
/* Sort collections. */
if (num_collections > 0) {
- qsort(tree_sort + skip, num_collections - skip, sizeof(tTreeSort), treesort_alpha);
+ switch (soops->sort_method) {
+ case SO_SORT_ALPHA:
+ qsort(tree_sort + skip, num_collections - skip, sizeof(tTreeSort), treesort_alpha);
+ break;
+ case SO_SORT_TYPE:
+ qsort(tree_sort + skip, num_collections - skip, sizeof(tTreeSort), treesort_alpha);
+ break;
+ }
}
/* Sort objects. */
if (num_elems - num_collections - skip > 0) {
- qsort(tree_sort + skip + num_collections,
- num_elems - num_collections - skip,
- sizeof(tTreeSort),
- treesort_alpha);
+ switch (soops->sort_method) {
+ case SO_SORT_ALPHA:
+ qsort(tree_sort + skip + num_collections,
+ num_elems - num_collections - skip,
+ sizeof(tTreeSort),
+ treesort_alpha);
+ break;
+ case SO_SORT_TYPE:
+ qsort(tree_sort + skip + num_collections,
+ num_elems - num_collections - skip,
+ sizeof(tTreeSort),
+ treesort_type);
+ break;
+ }
}
// /* just sort alphabetically */
More information about the Bf-blender-cvs
mailing list