Use natural sort to sort children in annotations

This commit is contained in:
baldurk
2026-01-23 14:04:46 +00:00
parent 3454404a55
commit 070177c232
+15
View File
@@ -24,6 +24,7 @@
#include "AnnotationDisplay.h"
#include <QAction>
#include <QCollator>
#include <QHeaderView>
#include <QMenu>
#include <QVBoxLayout>
@@ -132,7 +133,21 @@ bool AnnotationDisplay::shouldBeDisplayed(const SDObject &obj)
void AnnotationDisplay::addStructuredChildren(RDTreeWidgetItem *parent, const SDObject &parentObj)
{
QCollator collator;
collator.setNumericMode(true);
collator.setCaseSensitivity(Qt::CaseInsensitive);
rdcarray<const SDObject *> children;
children.reserve(parentObj.NumChildren());
for(const SDObject *obj : parentObj)
children.push_back(obj);
if(parentObj.type.basetype != SDBasic::Array)
std::sort(children.begin(), children.end(), [&collator](const SDObject *a, const SDObject *b) {
return collator.compare(QString(a->name), QString(b->name)) < 0;
});
for(const SDObject *obj : children)
{
if(!shouldBeDisplayed(*obj))
continue;