From fb906549646f59aedcee63e640b56337f9fed5b0 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Tue, 9 Jan 2024 09:26:06 +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). Pull Request: https://projects.blender.org/blender/blender/pulls/116629 --- 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):