diff options
| -rw-r--r-- | indra/newview/llpanelobjectinventory.cpp | 12 | ||||
| -rw-r--r-- | indra/newview/llpanelobjectinventory.h | 1 | ||||
| -rw-r--r-- | indra/newview/llselectmgr.cpp | 3 | 
3 files changed, 16 insertions, 0 deletions
| diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index c4211d5508..addb0fbe4d 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -1849,6 +1849,7 @@ void LLPanelObjectInventory::refresh()  			if(mTaskUUID != object->mID)  			{  				mTaskUUID = object->mID; +				mAttachmentUUID = object->getAttachmentItemID();  				make_request = TRUE;  				// This is a new object so pre-emptively clear the contents @@ -1858,6 +1859,16 @@ void LLPanelObjectInventory::refresh()  				// Register for updates from this object,  				registerVOInventoryListener(object,NULL);  			} +			else if (mAttachmentUUID != object->getAttachmentItemID()) +			{ +				mAttachmentUUID = object->getAttachmentItemID(); +				if (mAttachmentUUID.notNull()) +				{ +					// Server unsubsribes viewer (deselects object) from property +					// updates after "ObjectAttach" so we need to resubscribe +					LLSelectMgr::getInstance()->sendSelect(); +				} +			}  			// Based on the node information, we may need to dirty the  			// object inventory and get it again. @@ -1888,6 +1899,7 @@ void LLPanelObjectInventory::refresh()  void LLPanelObjectInventory::clearInventoryTask()  {  	mTaskUUID = LLUUID::null; +	mAttachmentUUID = LLUUID::null;  	removeVOInventoryListener();  	clearContents();  } diff --git a/indra/newview/llpanelobjectinventory.h b/indra/newview/llpanelobjectinventory.h index 3de49242ac..d700c8f4cf 100644 --- a/indra/newview/llpanelobjectinventory.h +++ b/indra/newview/llpanelobjectinventory.h @@ -105,6 +105,7 @@ private:  	LLFolderView* mFolders;  	LLUUID mTaskUUID; +	LLUUID mAttachmentUUID;  	BOOL mHaveInventory;  	BOOL mIsInventoryEmpty;  	BOOL mInventoryNeedsUpdate; diff --git a/indra/newview/llselectmgr.cpp b/indra/newview/llselectmgr.cpp index e4641d8721..ee7c22800a 100644 --- a/indra/newview/llselectmgr.cpp +++ b/indra/newview/llselectmgr.cpp @@ -4416,6 +4416,9 @@ void LLSelectMgr::sendAttach(U8 attachment_point, bool replace)  			SEND_ONLY_ROOTS );  		if (!build_mode)  		{ +			// After "ObjectAttach" server will unsubscribe us from properties updates +			// so either deselect objects or resend selection after attach packet reaches server +			// In case of build_mode LLPanelObjectInventory::refresh() will deal with selection  			deselectAll();  		}  	} | 
