From 2ae77b29019433e8982e629bfacaf9d37a555636 Mon Sep 17 00:00:00 2001
From: Mnikolenko ProductEngine <mnikolenko@productengine.com>
Date: Fri, 15 Jan 2016 13:04:58 +0200
Subject: MAINT-1429 Show permissions correctly for single non-root object and
 hide it if we didn't get valid base permissions.

---
 indra/newview/llpanelpermissions.cpp | 45 +++++++++++++++++++++++++++++++-----
 1 file changed, 39 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelpermissions.cpp b/indra/newview/llpanelpermissions.cpp
index ce9231d6f2..84e563e842 100755
--- a/indra/newview/llpanelpermissions.cpp
+++ b/indra/newview/llpanelpermissions.cpp
@@ -571,24 +571,49 @@ void LLPanelPermissions::refresh()
 	U32 next_owner_mask_on 		= 0;
 	U32 next_owner_mask_off		= 0;
 
-	BOOL valid_base_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_BASE,
+	BOOL valid_base_perms = FALSE;
+	BOOL valid_group_perms= FALSE;
+	BOOL valid_everyone_perms= FALSE;
+	BOOL valid_next_perms= FALSE;
+
+	if(root_selected)
+	{
+	    valid_base_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_BASE,
 																			&base_mask_on,
 																			&base_mask_off);
-	//BOOL valid_owner_perms =//
-	LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER,
+	    //BOOL valid_owner_perms =//
+	    LLSelectMgr::getInstance()->selectGetPerm(PERM_OWNER,
 											  &owner_mask_on,
 											  &owner_mask_off);
-	BOOL valid_group_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_GROUP,
+	    valid_group_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_GROUP,
 																			&group_mask_on,
 																			&group_mask_off);
 	
-	BOOL valid_everyone_perms 	= LLSelectMgr::getInstance()->selectGetPerm(PERM_EVERYONE,
+	    valid_everyone_perms 	= LLSelectMgr::getInstance()->selectGetPerm(PERM_EVERYONE,
 																			&everyone_mask_on,
 																			&everyone_mask_off);
 	
-	BOOL valid_next_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_NEXT_OWNER,
+	    valid_next_perms 		= LLSelectMgr::getInstance()->selectGetPerm(PERM_NEXT_OWNER,
 																			&next_owner_mask_on,
 																			&next_owner_mask_off);
+	}
+	else
+	{
+	    if(object_count == 1)
+	    {
+	        LLSelectNode* node = LLSelectMgr::getInstance()->getSelection()->getFirstNode();
+	        if (node && node->mValid)
+	        {
+	            valid_base_perms = TRUE;
+
+	            base_mask_on = node->mPermissions->getMaskBase();
+	            owner_mask_on = node->mPermissions->getMaskOwner();
+	            group_mask_on = node->mPermissions->getMaskGroup();
+	            everyone_mask_on = node->mPermissions->getMaskEveryone();
+	            next_owner_mask_on = node->mPermissions->getMaskNextOwner();
+	        }
+	    }
+	}
 
 	
 	if (gSavedSettings.getBOOL("DebugPermissions") )
@@ -610,6 +635,14 @@ void LLPanelPermissions::refresh()
 			getChild<LLUICtrl>("N:")->setValue("N: " + mask_to_string(next_owner_mask_on));
 			getChildView("N:")->setVisible(							TRUE);
 		}
+		else
+		{
+		    getChildView("B:")->setVisible(FALSE);
+		    getChildView("O:")->setVisible(FALSE);
+		    getChildView("G:")->setVisible(FALSE);
+		    getChildView("E:")->setVisible(FALSE);
+		    getChildView("N:")->setVisible(FALSE);
+		}
 
 		U32 flag_mask = 0x0;
 		if (objectp->permMove()) 		flag_mask |= PERM_MOVE;
-- 
cgit v1.2.3