diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index 71ea5d80a9e1bed01b9e9e90f3c8773397b15d1b..b9449e806fdaa9e04efe72be9ed294ea7283b12d 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -2786,6 +2786,36 @@ BOOL LLSelectMgr::selectGetRootsNonCharacter() } +//----------------------------------------------------------------------------- +// selectGetEditableLinksets() - return TRUE if all objects are editable +// pathfinding linksets +//----------------------------------------------------------------------------- +BOOL LLSelectMgr::selectGetEditableLinksets() +{ + for (LLObjectSelection::iterator iter = getSelection()->begin(); + iter != getSelection()->end(); iter++ ) + { + LLSelectNode* node = *iter; + LLViewerObject* object = node->getObject(); + if( !object || !node->mValid ) + { + return FALSE; + } + if (object->flagUsePhysics() || + object->flagTemporaryOnRez() || + object->flagCharacter() || + object->flagAnimSource() || + (!gAgent.isGodlike() && + !gAgent.canManageEstate() && + !object->permYouOwner() && + !object->permMove())) + { + return FALSE; + } + } + return TRUE; +} + //----------------------------------------------------------------------------- // selectGetRootsTransfer() - return TRUE if current agent can transfer all // selected root objects. diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h index bf40ab458ffc6e5bfdec6a4b16fc4ef235a9d64c..feab6ebdf89e9663b10a794ba6e5326035e9136c 100644 --- a/indra/newview/llselectmgr.h +++ b/indra/newview/llselectmgr.h @@ -584,6 +584,8 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr> BOOL selectGetRootsNonCharacter(); BOOL selectGetNonCharacter(); + BOOL selectGetEditableLinksets(); + // returns TRUE if selected objects can be transferred. BOOL selectGetRootsTransfer(); diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 06ffd2df924bc110a2f4b6a3e8840f43abc47ca8..3eb05383287575857d01f0410da3d0213babae12 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -2804,7 +2804,7 @@ bool enable_object_build() bool enable_object_select_in_pathfinding_linksets() { - return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() && LLSelectMgr::getInstance()->selectGetNonCharacter(); + return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() && LLSelectMgr::getInstance()->selectGetEditableLinksets(); } bool enable_object_select_in_pathfinding_characters()