Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 28 additions & 29 deletions client/ayon_core/tools/publisher/widgets/card_view_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -816,8 +816,10 @@ def refresh(self):

widget_idx += 1

instances = instances_by_group[group_name]
for instance in instances:
for instance in sorted(
instances_by_group[group_name],
key=lambda i: (i.get_folder_path() or "", i.product_name))

@iLLiCiTiT iLLiCiTiT Apr 22, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just realized this is InstanceItem not CreatedInstance.

Suggested change
key=lambda i: (i.get_folder_path() or "", i.product_name))
key=lambda i: (i.folder_path or "", i.product_name))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Still same question, why this was moved here? It makes more sense to sort them in _update_instance_widgets if possible.

):
group_by_instance_id[instance.id] = group_name
instance_ids_by_group_name[group_name].append(instance.id)

Expand Down Expand Up @@ -891,37 +893,34 @@ def _update_instance_widgets(
) - set(instances_by_id)
group_widget.take_widgets(to_remove_ids)

# Sort instances by product name
sorted_product_names = list(sorted(instances_by_product_name.keys()))

# Add new instances to widget
ordered_ids = []
widgets_by_id = {}
for product_names in sorted_product_names:
for instance in instances_by_product_name[product_names]:
context_info = context_info_by_id[instance.id]
is_parent_active = parent_active_by_id[instance.id]
if instance.id in self._widgets_by_id:
widget = self._widgets_by_id[instance.id]
widget.update_instance(
instance, context_info, is_parent_active
)
else:
group_icon = group_icons[instance.creator_identifier]
widget = InstanceCardWidget(
instance,
context_info,
is_parent_active,
group_icon,
group_widget,
)
widget.selected.connect(self._on_widget_selection)
widget.active_changed.connect(self._on_active_changed)
widget.double_clicked.connect(self.double_clicked)
self._widgets_by_id[instance.id] = widget

ordered_ids.append(instance.id)
widgets_by_id[instance.id] = widget
for instance in instances:
context_info = context_info_by_id[instance.id]
is_parent_active = parent_active_by_id[instance.id]
if instance.id in self._widgets_by_id:
widget = self._widgets_by_id[instance.id]
widget.update_instance(
instance, context_info, is_parent_active
)
else:
group_icon = group_icons[instance.creator_identifier]
widget = InstanceCardWidget(
instance,
context_info,
is_parent_active,
group_icon,
group_widget,
)
widget.selected.connect(self._on_widget_selection)
widget.active_changed.connect(self._on_active_changed)
widget.double_clicked.connect(self.double_clicked)
self._widgets_by_id[instance.id] = widget

ordered_ids.append(instance.id)
widgets_by_id[instance.id] = widget

group_widget.set_widgets(widgets_by_id, ordered_ids)

Expand Down