diff options
| -rw-r--r-- | indra/newview/llpreviewnotecard.cpp | 38 | ||||
| -rw-r--r-- | indra/newview/llpreviewnotecard.h | 8 | 
2 files changed, 44 insertions, 2 deletions
diff --git a/indra/newview/llpreviewnotecard.cpp b/indra/newview/llpreviewnotecard.cpp index 7ef0ef0e8b..75644dce11 100644 --- a/indra/newview/llpreviewnotecard.cpp +++ b/indra/newview/llpreviewnotecard.cpp @@ -232,6 +232,7 @@ void LLPreviewNotecard::loadAsset()  	if (!editor)  		return; +	bool fail = false;  	if(item)  	{ @@ -314,7 +315,31 @@ void LLPreviewNotecard::loadAsset()  			getChildView("Delete")->setEnabled(TRUE);  		}  	} -	else +    else if (mObjectUUID.notNull() && mItemUUID.notNull()) +    { +        LLViewerObject* objectp = gObjectList.findObject(mObjectUUID); +        if (objectp && (objectp->isInventoryPending() || objectp->isInventoryDirty())) +        { +            // It's a notecard in object's inventory and we failed to get it because inventory is not up to date. +            // Subscribe for callback and retry at inventoryChanged() +            registerVOInventoryListener(objectp, NULL); //removes previous listener + +            if (objectp->isInventoryDirty()) +            { +                objectp->requestInventory(); +            } +        } +        else +        { +            fail = true; +        } +    } +    else +    { +        fail = true; +    } + +	if (fail)  	{  		editor->setText(LLStringUtil::null);  		editor->makePristine(); @@ -599,6 +624,17 @@ void LLPreviewNotecard::syncExternal()  	}  } +/*virtual*/ +void LLPreviewNotecard::inventoryChanged(LLViewerObject* object, +    LLInventoryObject::object_list_t* inventory, +    S32 serial_num, +    void* user_data) +{ +    removeVOInventoryListener(); +    loadAsset(); +} + +  void LLPreviewNotecard::deleteNotecard()  {  	LLNotificationsUtil::add("DeleteNotecard", LLSD(), LLSD(), boost::bind(&LLPreviewNotecard::handleConfirmDeleteDialog,this, _1, _2)); diff --git a/indra/newview/llpreviewnotecard.h b/indra/newview/llpreviewnotecard.h index d9c14815c1..3a706b8645 100644 --- a/indra/newview/llpreviewnotecard.h +++ b/indra/newview/llpreviewnotecard.h @@ -31,6 +31,7 @@  #include "llassetstorage.h"  #include "llpreviewscript.h"  #include "lliconctrl.h" +#include "llvoinventorylistener.h"  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  // Class LLPreviewNotecard @@ -41,7 +42,7 @@  class LLViewerTextEditor;  class LLButton; -class LLPreviewNotecard : public LLPreview +class LLPreviewNotecard : public LLPreview, public LLVOInventoryListener  {  public:  	LLPreviewNotecard(const LLSD& key); @@ -75,6 +76,11 @@ public:  	void syncExternal(); +    void inventoryChanged(LLViewerObject* object, +        LLInventoryObject::object_list_t* inventory, +        S32 serial_num, +        void* user_data) override; +  protected:  	void updateTitleButtons() override;  | 
