diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index e160a11c363..e9d5c42a902 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -1309,7 +1309,7 @@ QtMessageLogItem *QmlEngine::constructLogItemTree( QtMessageLogItem *child = constructLogItemTree(item, i.value(), i.key()); if (child) - item->insertChild(item->childCount(), child); + item->insertChildSorted(child); } } else if (result.type() == QVariant::List) { if (key.isEmpty()) @@ -1321,7 +1321,7 @@ QtMessageLogItem *QmlEngine::constructLogItemTree( QtMessageLogItem *child = constructLogItemTree(item, resultList.at(i), QString::number(i)); if (child) - item->insertChild(item->childCount(), child); + item->insertChildSorted(child); } } else if (result.canConvert(QVariant::String)) { item->text = result.toString(); diff --git a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp index db20ac22e7b..58121ddc072 100644 --- a/src/plugins/debugger/qml/qmlv8debuggerclient.cpp +++ b/src/plugins/debugger/qml/qmlv8debuggerclient.cpp @@ -995,7 +995,7 @@ QtMessageLogItem *QmlV8DebuggerClientPrivate::constructLogItemTree( QtMessageLogItem *child = constructLogItemTree( item, extractData(property, refsVal), refsVal); if (child) - item->insertChild(item->childCount(), child); + item->insertChildSorted(child); } return item; diff --git a/src/plugins/debugger/qtmessageloghandler.cpp b/src/plugins/debugger/qtmessageloghandler.cpp index 5639eca855f..5080d8efc95 100644 --- a/src/plugins/debugger/qtmessageloghandler.cpp +++ b/src/plugins/debugger/qtmessageloghandler.cpp @@ -94,6 +94,17 @@ bool QtMessageLogItem::insertChildren(int position, int count) return true; } +void QtMessageLogItem::insertChildSorted(QtMessageLogItem *item) +{ + int i = 0; + for (; i < m_childItems.count(); i++) { + if (item->text < m_childItems[i]->text) { + break; + } + } + m_childItems.insert(i, item); +} + bool QtMessageLogItem::insertChild(int position, QtMessageLogItem *item) { if (position < 0 || position > m_childItems.size()) diff --git a/src/plugins/debugger/qtmessageloghandler.h b/src/plugins/debugger/qtmessageloghandler.h index 82969eeebe7..b76d85d043b 100644 --- a/src/plugins/debugger/qtmessageloghandler.h +++ b/src/plugins/debugger/qtmessageloghandler.h @@ -126,6 +126,7 @@ public: QtMessageLogItem *child(int number); int childCount() const; bool insertChildren(int position, int count); + void insertChildSorted(QtMessageLogItem *item); bool insertChild(int position, QtMessageLogItem *item); QtMessageLogItem *parent(); bool removeChildren(int position, int count);