diff options
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
-rw-r--r-- | indra/newview/llselectmgr.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 0fbcd93b0b..5fbe3f0c8e 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -4783,19 +4783,17 @@ void LLSelectMgr::updateSilhouettes() iter != roots.end(); iter++) { LLViewerObject* objectp = *iter; - LLSelectNode* rect_select_node = new LLSelectNode(objectp, TRUE); - rect_select_node->selectAllTEs(TRUE); + LLSelectNode* rect_select_root_node = new LLSelectNode(objectp, TRUE); + rect_select_root_node->selectAllTEs(TRUE); if (!canSelectObject(objectp)) { continue; } - mHighlightedObjects->addNode(rect_select_node); - if (!select_linked_set) { - rect_select_node->mIndividualSelection = TRUE; + rect_select_root_node->mIndividualSelection = TRUE; } else { @@ -4808,11 +4806,14 @@ void LLSelectMgr::updateSilhouettes() continue; } - rect_select_node = new LLSelectNode(objectp->mChildList[i], TRUE); + LLSelectNode* rect_select_node = new LLSelectNode(objectp->mChildList[i], TRUE); rect_select_node->selectAllTEs(TRUE); - mHighlightedObjects->addNode(rect_select_node); + mHighlightedObjects->addNodeAtEnd(rect_select_node); } } + + // Add the root last, to preserve order for link operations. + mHighlightedObjects->addNodeAtEnd(rect_select_root_node); } num_sils_genned = 0; |