diff options
| author | Loren Shih <seraph@lindenlab.com> | 2010-01-22 10:48:24 -0500 | 
|---|---|---|
| committer | Loren Shih <seraph@lindenlab.com> | 2010-01-22 10:48:24 -0500 | 
| commit | c64638dc2114a91b8efb17c1e37481ce34df84d5 (patch) | |
| tree | 05128715587ff25cc69b8f25195d2ee89647270c /indra/newview | |
| parent | af2f61af502d483011a8f6722686a2c343bd0f7d (diff) | |
EXT-4492 Deleting gestures from the wearing tab causes the viewer to crash
Revert removal of "delete" option from last checkin.
Now enabling "delete" but checking if *this was deleted within removeItem().
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 46 | 
1 files changed, 23 insertions, 23 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1c88658920..df089cb0f9 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -575,34 +575,17 @@ void LLInvFVBridge::getClipboardEntries(bool show_asset_id,  		}  	} -	// Don't add a separator unless we have at least one entry beneath it, -	// to avoid double separators. -	BOOL separator_pasted = FALSE; +	items.push_back(std::string("Paste Separator"));  	if (obj && obj->getIsLinkType() && !get_is_item_worn(mUUID))  	{ -		if (!separator_pasted) -		{ -			items.push_back(std::string("Paste Separator")); -			separator_pasted = TRUE; -		}  		items.push_back(std::string("Remove Link"));  	} -	// Hide the delete button from the COF.  Detaching/removing/etc. an item in the COF -	// will naturally delete it.  This prevents double delete crash possibilities. -	if (!isCOFFolder()) +	items.push_back(std::string("Delete")); +	if (!isItemRemovable())  	{ -		if (!separator_pasted) -		{ -			items.push_back(std::string("Paste Separator")); -			separator_pasted = TRUE; -		} -		items.push_back(std::string("Delete")); -		if (!isItemRemovable()) -		{ -			disabled_items.push_back(std::string("Delete")); -		} +		disabled_items.push_back(std::string("Delete"));  	}  	// If multiple items are selected, disable properties (if it exists). @@ -3827,8 +3810,25 @@ void LLGestureBridge::openItem()  BOOL LLGestureBridge::removeItem()  { -	// Force close the preview window, if it exists -	LLGestureManager::instance().deactivateGesture(mUUID); +	// Grab class information locally since *this may be deleted +	// within this function.  Not a great pattern... +	const LLInventoryModel* model = getInventoryModel(); +	if(!model) +	{ +		return FALSE; +	} +	const LLUUID item_id = mUUID; +	 +	// This will also force close the preview window, if it exists. +	// This may actually delete *this, if mUUID is in the COF. +	LLGestureManager::instance().deactivateGesture(item_id); +	 +	// If deactivateGesture deleted *this, then return out immediately. +	if (!model->getObject(item_id)) +	{ +		return TRUE; +	} +  	return LLItemBridge::removeItem();  }  | 
