diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index 6076cb01fb3c1db9bd0356e1ef5fb1cd05d71990..51ab7649a48f07e0f5a70b583fc5ec27f9dddcc9 100644
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -336,6 +336,12 @@ void LLPanelPermissions::refresh()
 	std::string pfAttrName;
 
 	if ((LLSelectMgr::getInstance()->getSelection()->getFirstRootNode() 
+		&& LLSelectMgr::getInstance()->selectGetRootsNonPathfinding())
+		|| LLSelectMgr::getInstance()->selectGetNonPathfinding())
+	{
+		pfAttrName = "Pathfinding_Object_Attr_None";
+	}
+	else if ((LLSelectMgr::getInstance()->getSelection()->getFirstRootNode() 
 		&& LLSelectMgr::getInstance()->selectGetRootsPermanent())
 		|| LLSelectMgr::getInstance()->selectGetPermanent())
 	{
@@ -347,15 +353,6 @@ void LLPanelPermissions::refresh()
 	{
 		pfAttrName = "Pathfinding_Object_Attr_Character";
 	}
-	else if (((LLSelectMgr::getInstance()->getSelection()->getFirstRootNode() 
-		&& LLSelectMgr::getInstance()->selectGetRootsNonPermanent())
-		|| LLSelectMgr::getInstance()->selectGetNonPermanent()) &&
-		((LLSelectMgr::getInstance()->getSelection()->getFirstRootNode() 
-		&& LLSelectMgr::getInstance()->selectGetRootsNonCharacter())
-		|| LLSelectMgr::getInstance()->selectGetNonCharacter()))
-	{
-		pfAttrName = "Pathfinding_Object_Attr_None";
-	}
 	else
 	{
 		pfAttrName = "Pathfinding_Object_Attr_MultiSelect";
diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp
index 791342a55584b5cc4eeece268091a4f8141eda66..34b889d8b9c42e2c15e64aaf2b99849ef27ea223 100644
--- a/indra/newview/llselectmgr.cpp
+++ b/indra/newview/llselectmgr.cpp
@@ -2647,6 +2647,52 @@ BOOL LLSelectMgr::selectGetRootsCharacter()
 	return TRUE;
 }
 
+//-----------------------------------------------------------------------------
+// selectGetNonPathfinding() - return TRUE if all objects are not pathfinding
+//-----------------------------------------------------------------------------
+BOOL LLSelectMgr::selectGetNonPathfinding()
+{
+	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->flagObjectPermanent() || object->flagCharacter())
+		{
+			return FALSE;
+		}
+	}
+	return TRUE;
+}
+
+//-----------------------------------------------------------------------------
+// selectGetRootsNonPathfinding() - return TRUE if all root objects are not
+// pathfinding
+//-----------------------------------------------------------------------------
+BOOL LLSelectMgr::selectGetRootsNonPathfinding()
+{
+	for (LLObjectSelection::root_iterator iter = getSelection()->root_begin();
+		 iter != getSelection()->root_end(); iter++ )
+	{
+		LLSelectNode* node = *iter;
+		LLViewerObject* object = node->getObject();
+		if( !node->mValid )
+		{
+			return FALSE;
+		}
+		if( object->flagObjectPermanent() || object->flagCharacter())
+		{
+			return FALSE;
+		}
+	}
+
+	return TRUE;
+}
+
 //-----------------------------------------------------------------------------
 // selectGetNonPermanent() - return TRUE if all objects are not permanent
 //-----------------------------------------------------------------------------
diff --git a/indra/newview/llselectmgr.h b/indra/newview/llselectmgr.h
index 488f8f2efb48796733128679fed30e87930d5c4c..bf40ab458ffc6e5bfdec6a4b16fc4ef235a9d64c 100644
--- a/indra/newview/llselectmgr.h
+++ b/indra/newview/llselectmgr.h
@@ -572,6 +572,10 @@ class LLSelectMgr : public LLEditMenuHandler, public LLSingleton<LLSelectMgr>
 	BOOL selectGetRootsCharacter();
 	BOOL selectGetCharacter();
 
+	// returns TRUE if is all objects are not permanent
+	BOOL selectGetRootsNonPathfinding();
+	BOOL selectGetNonPathfinding();
+
 	// returns TRUE if is all objects are not permanent
 	BOOL selectGetRootsNonPermanent();
 	BOOL selectGetNonPermanent();