summaryrefslogtreecommitdiff
path: root/indra/newview/llselectmgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llselectmgr.cpp')
-rw-r--r--indra/newview/llselectmgr.cpp18
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: