From 3a50af82407fd3dbbd5e6b5abeddfb672e8dbd71 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Fri, 29 Dec 2023 14:34:41 +0100 Subject: [PATCH] Fix #116011: Sorting Attributes by Name in UILists does not work Whenever custom `filter_items` is used, everything regarding filtering and sorting has to be implemented "by hand" here, this was just not done for the sorting (which is now added). --- scripts/startup/bl_ui/properties_data_curves.py | 4 ++++ scripts/startup/bl_ui/properties_data_mesh.py | 8 ++++++++ scripts/startup/bl_ui/properties_data_pointcloud.py | 4 ++++ 3 files changed, 16 insertions(+) diff --git a/scripts/startup/bl_ui/properties_data_curves.py b/scripts/startup/bl_ui/properties_data_curves.py index b6d40ac532e..6745f2f018e 100644 --- a/scripts/startup/bl_ui/properties_data_curves.py +++ b/scripts/startup/bl_ui/properties_data_curves.py @@ -112,6 +112,10 @@ class CURVES_UL_attributes(UIList): for idx, item in enumerate(attributes): flags[idx] = 0 if item.is_internal else flags[idx] + # Reorder by name. + if self.use_filter_sort_alpha: + indices = bpy.types.UI_UL_list.sort_items_by_name(attributes, "name") + return flags, indices def draw_item(self, _context, layout, _data, attribute, _icon, _active_data, _active_propname, _index): diff --git a/scripts/startup/bl_ui/properties_data_mesh.py b/scripts/startup/bl_ui/properties_data_mesh.py index 61a552bd3dd..73cb93af67d 100644 --- a/scripts/startup/bl_ui/properties_data_mesh.py +++ b/scripts/startup/bl_ui/properties_data_mesh.py @@ -495,6 +495,10 @@ class MESH_UL_attributes(UIList): for idx, item in enumerate(attributes): flags[idx] = 0 if item.is_internal else flags[idx] + # Reorder by name. + if self.use_filter_sort_alpha: + indices = bpy.types.UI_UL_list.sort_items_by_name(attributes, "name") + return flags, indices def draw_item(self, _context, layout, _data, attribute, _icon, _active_data, _active_propname, _index): @@ -609,6 +613,10 @@ class ColorAttributesListBase(): ) flags[idx] = 0 if skip else flags[idx] + # Reorder by name. + if self.use_filter_sort_alpha: + indices = bpy.types.UI_UL_list.sort_items_by_name(attributes, "name") + return flags, indices diff --git a/scripts/startup/bl_ui/properties_data_pointcloud.py b/scripts/startup/bl_ui/properties_data_pointcloud.py index fe80d021c43..09f6af73cda 100644 --- a/scripts/startup/bl_ui/properties_data_pointcloud.py +++ b/scripts/startup/bl_ui/properties_data_pointcloud.py @@ -89,6 +89,10 @@ class POINTCLOUD_UL_attributes(UIList): for idx, item in enumerate(attributes): flags[idx] = 0 if item.is_internal else flags[idx] + # Reorder by name. + if self.use_filter_sort_alpha: + indices = bpy.types.UI_UL_list.sort_items_by_name(attributes, "name") + return flags, indices def draw_item(self, _context, layout, _data, attribute, _icon, _active_data, _active_propname, _index): -- 2.30.2