diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index a5d9db4a00421d6abfd4afd75dee4122af9273ef..e711a51fe8f6fc41f35cc64861cd9afb246c52ea 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2806,6 +2806,7 @@ BOOL LLSelectMgr::selectGetEditableLinksets()
 			object->flagCharacter() ||
 			object->flagVolumeDetect() ||
 			object->flagAnimSource() ||
+			(object->getRegion() != gAgent.getRegion()) ||
 			(!gAgent.isGodlike() && 
 			!gAgent.canManageEstate() &&
 			!object->permYouOwner() &&
@@ -2817,6 +2818,30 @@ BOOL LLSelectMgr::selectGetEditableLinksets()
 	return TRUE;
 }
 
+//-----------------------------------------------------------------------------
+// selectGetViewableCharacters() - return TRUE if all objects are characters
+//                        viewable within the pathfinding characters floater
+//-----------------------------------------------------------------------------
+BOOL LLSelectMgr::selectGetViewableCharacters()
+{
+	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->flagCharacter() ||
+			(object->getRegion() != gAgent.getRegion()))
+		{
+			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 feab6ebdf89e9663b10a794ba6e5326035e9136c..20d0a23267e24676864dd89558f7f75aa8bb754d 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -585,6 +585,7 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	BOOL selectGetNonCharacter();
 
 	BOOL selectGetEditableLinksets();
+	BOOL selectGetViewableCharacters();
 
 	// returns TRUE if selected objects can be transferred.
 	BOOL selectGetRootsTransfer();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 3eb05383287575857d01f0410da3d0213babae12..b4ddc6039ab0f25ff7c942828fece1577939c377 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -2809,7 +2809,7 @@ bool enable_object_select_in_pathfinding_linksets()
 
 bool enable_object_select_in_pathfinding_characters()
 {
-	return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() &&  LLSelectMgr::getInstance()->selectGetCharacter();
+	return LLPathfindingManager::getInstance()->isPathfindingEnabledForCurrentRegion() &&  LLSelectMgr::getInstance()->selectGetViewableCharacters();
 }
 
 class LLSelfRemoveAllAttachments : public view_listener_t