diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-02-03 17:42:04 -0500 | 
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-02-03 17:42:04 -0500 | 
| commit | 1e47e5b42d352d5d838eeb96984dbf6497020e32 (patch) | |
| tree | 6c9d98c444eeaa242c946daad1a7ce0f9a9425cf | |
| parent | f5ade203cb0a714ac8a1f468765838a1d30b0eb6 (diff) | |
EXT-4022 : Texture previews don't work in object contents
This was broken long ago in viewer-2.0.0-2 when someone made the decision to stop passing in ObjectID to the texture preview floater.
| -rw-r--r-- | indra/newview/llpreview.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpreviewtexture.cpp | 58 | ||||
| -rw-r--r-- | indra/newview/llpreviewtexture.h | 3 | 
3 files changed, 46 insertions, 17 deletions
| diff --git a/indra/newview/llpreview.h b/indra/newview/llpreview.h index 3b9f7f9882..551e247d8c 100644 --- a/indra/newview/llpreview.h +++ b/indra/newview/llpreview.h @@ -74,7 +74,7 @@ public:  	/*virtual*/ BOOL postBuild(); -	void setObjectID(const LLUUID& object_id); +	virtual void setObjectID(const LLUUID& object_id);  	void setItem( LLInventoryItem* item );  	void setAssetId(const LLUUID& asset_id); diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp index 028807a6bd..dfc67d0126 100644 --- a/indra/newview/llpreviewtexture.cpp +++ b/indra/newview/llpreviewtexture.cpp @@ -74,22 +74,10 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)  	  mLastHeight(0),  	  mLastWidth(0),  	  mAspectRatio(0.f), -	  mPreviewToSave(FALSE) +	  mPreviewToSave(FALSE), +	  mImage(NULL)  { -	const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem()); -	if(item) -	{ -		mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID(); -		mImageID = item->getAssetUUID(); -		mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED); -	} -	else // not an item, assume it's an asset id -	{ -		mImageID = mItemUUID; -		mCopyToInv = TRUE; -		mIsCopyable = TRUE; -	} - +	updateImageID();  	if (key.has("save_as"))  	{  		mPreviewToSave = TRUE; @@ -97,7 +85,6 @@ LLPreviewTexture::LLPreviewTexture(const LLSD& key)  	//Called from floater reg: LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_texture.xml", FALSE);  } -  LLPreviewTexture::~LLPreviewTexture()  {  	if( mLoadingFullImage ) @@ -493,3 +480,42 @@ LLPreview::EAssetStatus LLPreviewTexture::getAssetStatus()  	}  	return mAssetStatus;  } + +void LLPreviewTexture::updateImageID() +{ +	const LLViewerInventoryItem *item = static_cast<const LLViewerInventoryItem*>(getItem()); +	if(item) +	{ +		mImageID = item->getAssetUUID(); +		mShowKeepDiscard = item->getPermissions().getCreator() != gAgent.getID(); +		mCopyToInv = FALSE; +		mIsCopyable = item->checkPermissionsSet(PERM_ITEM_UNRESTRICTED); +	} +	else // not an item, assume it's an asset id +	{ +		mImageID = mItemUUID; +		mShowKeepDiscard = FALSE; +		mCopyToInv = TRUE; +		mIsCopyable = TRUE; +	} + +} + +/* virtual */ +void LLPreviewTexture::setObjectID(const LLUUID& object_id) +{ +	mObjectUUID = object_id; + +	const LLUUID old_image_id = mImageID; + +	// Update what image we're pointing to, such as if we just specified the mObjectID +	// that this mItemID is part of. +	updateImageID(); + +	// If the imageID has changed, start over and reload the new image. +	if (mImageID != old_image_id) +	{ +		mAssetStatus = PREVIEW_ASSET_UNLOADED; +		loadAsset(); +	} +} diff --git a/indra/newview/llpreviewtexture.h b/indra/newview/llpreviewtexture.h index 980aecee6d..7cd2adad56 100644 --- a/indra/newview/llpreviewtexture.h +++ b/indra/newview/llpreviewtexture.h @@ -69,6 +69,8 @@ public:  	void 				openToSave();  	static void			onSaveAsBtn(void* data); + +	/*virtual*/ void setObjectID(const LLUUID& object_id);  protected:  	void				init();  	/* virtual */ BOOL	postBuild(); @@ -76,6 +78,7 @@ protected:  	static void			onAspectRatioCommit(LLUICtrl*,void* userdata);  private: +	void				updateImageID(); // set what image is being uploaded.  	void				updateDimensions();  	LLUUID				mImageID;  	LLPointer<LLViewerFetchedTexture>		mImage; | 
