diff options
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
-rw-r--r-- | indra/newview/llselectmgr.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 2e67112e3e..bfb46301c2 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -4170,11 +4170,21 @@ void LLSelectMgr::sendListToRegions(const LLString& message_name, switch(send_type) { case SEND_ONLY_ROOTS: - node = mSelectedObjects->getFirstRootNode(); - while(node) { - nodes_to_send.push(node); - node = mSelectedObjects->getNextRootNode(); + node = mSelectedObjects->getFirstRootNode(); + + while(node) + { + // look and see if this object is actually modifiable by the current agent, because if it's not, then there's little + // point in pushing it up to the server to be updated, since we couldn't change it anywa. + // That just results in errors on screen when this function gets called by other things, like pulling down a drop down menu + LLViewerObject* object = node->getObject(); + if( object && (object->permModify() || gAgent.allowOperation(PERM_MODIFY, *node->mPermissions) || gAgent.allowOperation(PERM_MOVE, *node->mPermissions))) + { + nodes_to_send.push(node); + } + node = mSelectedObjects->getNextRootNode(); + } } break; case SEND_INDIVIDUALS: |