diff options
| -rw-r--r-- | indra/llui/lllayoutstack.cpp | 19 | ||||
| -rw-r--r-- | indra/llui/lllayoutstack.h | 1 | ||||
| -rw-r--r-- | indra/llui/llmenugl.cpp | 7 | ||||
| -rw-r--r-- | indra/llui/llmenugl.h | 1 | ||||
| -rw-r--r-- | indra/newview/llinspecttoast.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/lltooldraganddrop.cpp | 4 | 
7 files changed, 38 insertions, 6 deletions
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp index 8a011b4890..08ce31ffc5 100644 --- a/indra/llui/lllayoutstack.cpp +++ b/indra/llui/lllayoutstack.cpp @@ -284,6 +284,17 @@ void LLLayoutStack::draw()  	}  } +void LLLayoutStack::deleteAllChildren() +{ +    mPanels.clear(); +    LLView::deleteAllChildren(); + +    // Not really needed since nothing is left to +    // display, but for the sake of consistency +    updateFractionalSizes(); +    mNeedsLayout = true; +} +  void LLLayoutStack::removeChild(LLView* view)  {  	LLLayoutPanel* embedded_panelp = findEmbeddedPanel(dynamic_cast<LLPanel*>(view)); @@ -291,12 +302,14 @@ void LLLayoutStack::removeChild(LLView* view)  	if (embedded_panelp)  	{  		mPanels.erase(std::find(mPanels.begin(), mPanels.end(), embedded_panelp)); -		delete embedded_panelp; +        LLView::removeChild(view);  		updateFractionalSizes();  		mNeedsLayout = true;  	} - -	LLView::removeChild(view); +    else +    { +        LLView::removeChild(view); +    }  }  BOOL LLLayoutStack::postBuild() diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h index 9a53a7f787..02685281ef 100644 --- a/indra/llui/lllayoutstack.h +++ b/indra/llui/lllayoutstack.h @@ -69,6 +69,7 @@ public:  	virtual ~LLLayoutStack();  	/*virtual*/ void draw(); +    /*virtual*/ void deleteAllChildren();  	/*virtual*/ void removeChild(LLView*);  	/*virtual*/ BOOL postBuild();  	/*virtual*/ bool addChild(LLView* child, S32 tab_group = 0); diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 35f2930800..1666ff8c98 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1891,6 +1891,13 @@ bool LLMenuGL::addContextChild(LLView* view, S32 tab_group)  	return false;  } + +void LLMenuGL::deleteAllChildren() +{ +    mItems.clear(); +    LLUICtrl::deleteAllChildren(); +} +  void LLMenuGL::removeChild( LLView* ctrl)  {  	// previously a dynamic_cast with if statement to check validity diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 47a46510b3..87e3f18ebc 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -449,6 +449,7 @@ public:  	/*virtual*/ void drawBackground(LLMenuItemGL* itemp, F32 alpha);  	/*virtual*/ void setVisible(BOOL visible);  	/*virtual*/ bool addChild(LLView* view, S32 tab_group = 0); +    /*virtual*/ void deleteAllChildren();  	/*virtual*/ void removeChild( LLView* ctrl);  	/*virtual*/ BOOL postBuild(); diff --git a/indra/newview/llinspecttoast.cpp b/indra/newview/llinspecttoast.cpp index 68801b0895..6f93a78ca6 100644 --- a/indra/newview/llinspecttoast.cpp +++ b/indra/newview/llinspecttoast.cpp @@ -47,6 +47,7 @@ public:  	/*virtual*/ void onOpen(const LLSD& notification_id);  	/*virtual*/ BOOL handleToolTip(S32 x, S32 y, MASK mask); +    /*virtual*/ void deleteAllChildren();  	/*virtual*/ void removeChild(LLView* child);  private:  	void onToastDestroy(LLToast * toast); @@ -122,6 +123,12 @@ BOOL LLInspectToast::handleToolTip(S32 x, S32 y, MASK mask)  	return LLFloater::handleToolTip(x, y, mask);  } +void LLInspectToast::deleteAllChildren() +{ +    mPanel = NULL; +    LLInspect::deleteAllChildren(); +} +  // virtual  void LLInspectToast::removeChild(LLView* child)  { diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index c65901a754..bc0d523bd2 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -906,7 +906,10 @@ const LLUUID LLInventoryModel::findCategoryUUIDForTypeInRoot(  		}  	} -	if(rv.isNull() && root_id.notNull() && preferred_type != LLFolderType::FT_MARKETPLACE_LISTINGS) +	if(rv.isNull()  +       && root_id.notNull() +       && preferred_type != LLFolderType::FT_MARKETPLACE_LISTINGS +       && preferred_type != LLFolderType::FT_OUTBOX)  	{          // if it does not exists, it should either be added          // to createCommonSystemCategories or server should diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp index d10b999220..78e068f808 100644 --- a/indra/newview/lltooldraganddrop.cpp +++ b/indra/newview/lltooldraganddrop.cpp @@ -1733,7 +1733,7 @@ EAcceptance LLToolDragAndDrop::dad3dRezAttachmentFromInv(  	}  	const LLUUID &outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX); -	if(gInventory.isObjectDescendentOf(item->getUUID(), outbox_id)) +	if(outbox_id.notNull() && gInventory.isObjectDescendentOf(item->getUUID(), outbox_id))  	{  		// Legacy  		return ACCEPT_NO; @@ -2160,7 +2160,7 @@ EAcceptance LLToolDragAndDrop::dad3dWearCategory(  		}  		const LLUUID &outbox_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_OUTBOX); -		if(gInventory.isObjectDescendentOf(category->getUUID(), outbox_id)) +		if(outbox_id.notNull() && gInventory.isObjectDescendentOf(category->getUUID(), outbox_id))  		{  			// Legacy  			return ACCEPT_NO;  | 
