diff options
| author | Richard Linden <none@none> | 2014-05-28 16:16:09 -0700 | 
|---|---|---|
| committer | Richard Linden <none@none> | 2014-05-28 16:16:09 -0700 | 
| commit | f06b305d9fe72b6972a2ab0d6047b792fa2706cd (patch) | |
| tree | 2d1fd9c1d45065098e78c69b98d4354ae5f7cc8b | |
| parent | 8a45e1915dfa2bb1fed85b8340b0e21584e3dc8a (diff) | |
ACME-1471 WIP [VWR] Merge multiple Exp Perm dialogs into one
merged multiple experience toasts into a single one
reviewed by Cho
| -rwxr-xr-x | indra/newview/llnotificationhandler.h | 1 | ||||
| -rwxr-xr-x | indra/newview/llnotificationscripthandler.cpp | 26 | ||||
| -rwxr-xr-x | indra/newview/llscreenchannel.cpp | 14 | 
3 files changed, 28 insertions, 13 deletions
diff --git a/indra/newview/llnotificationhandler.h b/indra/newview/llnotificationhandler.h index bff4efa9ea..e3270547c1 100755 --- a/indra/newview/llnotificationhandler.h +++ b/indra/newview/llnotificationhandler.h @@ -169,6 +169,7 @@ public:  	virtual ~LLScriptHandler();  	virtual void onDelete(LLNotificationPtr p); +	virtual void onChange(LLNotificationPtr p);  	virtual bool processNotification(const LLNotificationPtr& p);  protected: diff --git a/indra/newview/llnotificationscripthandler.cpp b/indra/newview/llnotificationscripthandler.cpp index a3b15931c6..65b1d5f95f 100755 --- a/indra/newview/llnotificationscripthandler.cpp +++ b/indra/newview/llnotificationscripthandler.cpp @@ -116,18 +116,28 @@ bool LLScriptHandler::processNotification(const LLNotificationPtr& notification)  	return false;  } +void LLScriptHandler::onChange( LLNotificationPtr notification ) +{ +	LLScreenChannel* channel = dynamic_cast<LLScreenChannel*>(mChannel.get()); +	if (channel) +	{ +		LLToastPanel* notify_box = LLToastPanel::buidPanelFromNotification(notification); +		channel->modifyToastByNotificationID(notification->getID(), notify_box); +		 +	} +}  void LLScriptHandler::onDelete( LLNotificationPtr notification ) -	{ +{  	if(notification->hasFormElements() && !notification->canShowToast()) -		{ -			LLScriptFloaterManager::getInstance()->onRemoveNotification(notification->getID()); -		} -		else -		{ -			mChannel.get()->removeToastByNotificationID(notification->getID()); -		} +	{ +		LLScriptFloaterManager::getInstance()->onRemoveNotification(notification->getID()); +	} +	else +	{ +		mChannel.get()->removeToastByNotificationID(notification->getID());  	} +}  //-------------------------------------------------------------------------- diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index 6a840f3f40..0318199050 100755 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -533,19 +533,23 @@ void LLScreenChannel::modifyToastByNotificationID(LLUUID id, LLPanel* panel)  {  	std::vector<ToastElem>::iterator it = find(mToastList.begin(), mToastList.end(), id); +	LLPanel* panel_to_delete = panel; +  	if( it != mToastList.end() && panel)  	{  		LLToast* toast = it->getToast();  		if (toast)  		{ -		LLPanel* old_panel = toast->getPanel(); -		toast->removeChild(old_panel); -		delete old_panel; -		toast->insertPanel(panel); -		toast->startTimer(); +			LLPanel* old_panel = toast->getPanel(); +			toast->removeChild(old_panel); +			panel_to_delete = old_panel; +			toast->insertPanel(panel); +			toast->startTimer();  		}  		redrawToasts();  	} + +	delete panel_to_delete;  }  //--------------------------------------------------------------------------  | 
