diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llavataractions.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llchathistory.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llmoveview.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llmoveview.h | 2 | 
4 files changed, 31 insertions, 4 deletions
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 752a2e7504..1e59e5b805 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -550,9 +550,10 @@ namespace action_give_inventory  		}  		LLInventoryPanel* active_panel = LLInventoryPanel::getActiveInventoryPanel(FALSE); -		if (NULL == active_panel) +		if (!active_panel)  		{ -			return; +			active_panel = get_outfit_editor_inventory_panel(); +			if (!active_panel) return;  		}  		const uuid_set_t inventory_selected_uuids = active_panel->getRootFolder()->getSelectionList(); diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index c0fa910f86..7c33923f04 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -111,6 +111,12 @@ public:  		return pInstance;  	} +	~LLChatHistoryHeader() +	{ +		// Detach the info button so that it doesn't get destroyed (EXT-8463). +		hideInfoCtrl(); +	} +  	BOOL handleMouseUp(S32 x, S32 y, MASK mask)  	{  		return LLPanel::handleMouseUp(x,y,mask); @@ -382,8 +388,18 @@ protected:  		if (!sInfoCtrl)  		{ +			// *TODO: Delete the button at exit.  			sInfoCtrl = LLUICtrlFactory::createFromFile<LLUICtrl>("inspector_info_ctrl.xml", NULL, LLPanel::child_registry_t::instance()); -			sInfoCtrl->setCommitCallback(boost::bind(&LLChatHistoryHeader::onClickInfoCtrl, sInfoCtrl)); +			if (sInfoCtrl) +			{ +				sInfoCtrl->setCommitCallback(boost::bind(&LLChatHistoryHeader::onClickInfoCtrl, sInfoCtrl)); +			} +		} + +		if (!sInfoCtrl) +		{ +			llassert(sInfoCtrl != NULL); +			return;  		}  		LLTextBase* name = getChild<LLTextBase>("user_name"); diff --git a/indra/newview/llmoveview.cpp b/indra/newview/llmoveview.cpp index 6ae4a5e5e4..fc41137686 100644 --- a/indra/newview/llmoveview.cpp +++ b/indra/newview/llmoveview.cpp @@ -83,6 +83,16 @@ LLFloaterMove::LLFloaterMove(const LLSD& key)  {  } +LLFloaterMove::~LLFloaterMove() +{ +	// Ensure LLPanelStandStopFlying panel is not among floater's children. See EXT-8458. +	setVisible(FALSE); + +	// Otherwise it can be destroyed and static pointer in LLPanelStandStopFlying::getInstance() will become invalid. +	// Such situation was possible when LLFloaterReg returns "dead" instance of floater. +	// Should not happen after LLFloater::destroy was modified to remove "dead" instances from LLFloaterReg. +} +  // virtual  BOOL LLFloaterMove::postBuild()  { diff --git a/indra/newview/llmoveview.h b/indra/newview/llmoveview.h index d463861188..43b0342744 100644 --- a/indra/newview/llmoveview.h +++ b/indra/newview/llmoveview.h @@ -51,7 +51,7 @@ class LLFloaterMove  private:  	LLFloaterMove(const LLSD& key); -	~LLFloaterMove() {} +	~LLFloaterMove();  public:  	/*virtual*/	BOOL	postBuild();  | 
