diff options
| -rw-r--r-- | indra/llui/llflatlistview.cpp | 5 | ||||
| -rw-r--r-- | indra/llui/llflatlistview.h | 2 | ||||
| -rw-r--r-- | indra/llui/llview.cpp | 11 | ||||
| -rw-r--r-- | indra/llui/llview.h | 11 | ||||
| -rw-r--r-- | indra/newview/llpanelme.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llpanelme.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelpeople.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llpanelpeople.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.h | 2 | 
10 files changed, 33 insertions, 22 deletions
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index d4c3cfb7b6..831ac66d06 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -932,7 +932,7 @@ void LLFlatListView::onFocusLost()  }  //virtual  -void LLFlatListView::notify(const LLSD& info) +S32 LLFlatListView::notify(const LLSD& info)  {  	if(info.has("action"))  	{ @@ -941,13 +941,16 @@ void LLFlatListView::notify(const LLSD& info)  		{  			setFocus(true);  			selectFirstItem(); +			return 1;  		}  		else if(str_action == "select_last")  		{  			setFocus(true);  			selectLastItem(); +			return 1;  		}  	} +	return 0;  }  //EOF diff --git a/indra/llui/llflatlistview.h b/indra/llui/llflatlistview.h index 9e1e0f90fc..ba824ff2df 100644 --- a/indra/llui/llflatlistview.h +++ b/indra/llui/llflatlistview.h @@ -283,7 +283,7 @@ public:  	void selectFirstItem	();  	void selectLastItem		(); -	virtual void	notify(const LLSD& info) ; +	virtual S32	notify(const LLSD& info) ;  protected: diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 23e4131e6d..d8ebe15dc0 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -2848,18 +2848,21 @@ LLView::default_widget_map_t& LLView::getDefaultWidgetMap() const  	return *mDefaultWidgets;  } -void	LLView::notifyParent(const LLSD& info) +S32	LLView::notifyParent(const LLSD& info)  {  	LLView* parent = getParent();  	if(parent) -		parent->notifyParent(info); +		return parent->notifyParent(info); +	return 0;  } -void	LLView::notifyChildren(const LLSD& info) +bool	LLView::notifyChildren(const LLSD& info)  { +	bool ret = false;  	for ( child_list_iter_t child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it)  	{ -		(*child_it)->notifyChildren(info); +		ret |= (*child_it)->notifyChildren(info);  	} +	return ret;  }  // convenient accessor for draw context diff --git a/indra/llui/llview.h b/indra/llui/llview.h index c611e4c85f..f8460f5361 100644 --- a/indra/llui/llview.h +++ b/indra/llui/llview.h @@ -511,10 +511,15 @@ public:  	virtual void	handleReshape(const LLRect& rect, bool by_user);  	virtual void	dirtyRect(); -	virtual void	notifyParent(const LLSD& info); -	virtual void	notifyChildren(const LLSD& info); +	//send custom notification to LLView parent +	virtual S32	notifyParent(const LLSD& info); -	virtual void	notify(const LLSD& info) {}; +	//send custom notification to all view childrend +	// return true if _any_ children return true. otherwise false. +	virtual bool	notifyChildren(const LLSD& info); + +	//send custom notification to current view +	virtual S32	notify(const LLSD& info) { return 0;};  	static const LLViewDrawContext& getDrawContext(); diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index 046118cf75..4e21268a8a 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -71,7 +71,7 @@ void LLPanelMe::onOpen(const LLSD& key)  	LLPanelProfile::onOpen(key);  } -void LLPanelMe::notifyChildren(const LLSD& info) +bool LLPanelMe::notifyChildren(const LLSD& info)  {  	if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")  	{ @@ -104,10 +104,10 @@ void LLPanelMe::notifyChildren(const LLSD& info)  		if (on_default_view)  			LLSideTray::getInstance()->collapseSideBar(); -		return; // this notification is only supposed to be handled by task panels  +		return true; // this notification is only supposed to be handled by task panels   	} -	LLPanel::notifyChildren(info); +	return LLPanel::notifyChildren(info);  }  void LLPanelMe::buildEditPanel() diff --git a/indra/newview/llpanelme.h b/indra/newview/llpanelme.h index 17d367132e..1325192bbf 100644 --- a/indra/newview/llpanelme.h +++ b/indra/newview/llpanelme.h @@ -54,7 +54,7 @@ public:  	LLPanelMe();  	/*virtual*/ void onOpen(const LLSD& key); -	/*virtual*/ void notifyChildren(const LLSD& info); +	/*virtual*/ bool notifyChildren(const LLSD& info);  	/*virtual*/ BOOL postBuild(); diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index 1743df52fc..9c7e3952f5 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -1284,7 +1284,7 @@ void	LLPanelPeople::onOpen(const LLSD& key)  		reSelectedCurrentTab();  } -void LLPanelPeople::notifyChildren(const LLSD& info) +bool LLPanelPeople::notifyChildren(const LLSD& info)  {  	if (info.has("task-panel-action") && info["task-panel-action"].asString() == "handle-tri-state")  	{ @@ -1292,7 +1292,7 @@ void LLPanelPeople::notifyChildren(const LLSD& info)  		if (!container)  		{  			llwarns << "Cannot find People panel container" << llendl; -			return; +			return true;  		}  		if (container->getCurrentPanelIndex() > 0)  @@ -1303,10 +1303,10 @@ void LLPanelPeople::notifyChildren(const LLSD& info)  		else  			LLSideTray::getInstance()->collapseSideBar(); -		return; // this notification is only supposed to be handled by task panels +		return true; // this notification is only supposed to be handled by task panels  	} -	LLPanel::notifyChildren(info); +	return LLPanel::notifyChildren(info);  }  void LLPanelPeople::showAccordion(const std::string name, bool show) diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h index 5ac5bcc1d7..bd1b155947 100644 --- a/indra/newview/llpanelpeople.h +++ b/indra/newview/llpanelpeople.h @@ -51,7 +51,7 @@ public:  	/*virtual*/ BOOL 	postBuild();  	/*virtual*/ void	onOpen(const LLSD& key); -	/*virtual*/ void	notifyChildren(const LLSD& info); +	/*virtual*/ bool	notifyChildren(const LLSD& info);  	// internals  	class Updater; diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 1830d00f68..3274820174 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -220,15 +220,15 @@ void LLPanelProfile::openPanel(LLPanel* panel, const LLSD& params)  	panel->setRect(new_rect);  } -void LLPanelProfile::notifyParent(const LLSD& info) +S32 LLPanelProfile::notifyParent(const LLSD& info)  {  	std::string action = info["action"];  	// lets update Picks list after Pick was saved  	if("save_new_pick" == action)  	{  		onOpen(info); -		return; +		return 1;  	} -	LLPanel::notifyParent(info); +	return LLPanel::notifyParent(info);  } diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index 067beb248b..bcf4bdd0ec 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -55,7 +55,7 @@ public:  	virtual void openPanel(LLPanel* panel, const LLSD& params); -	void notifyParent(const LLSD& info); +	S32 notifyParent(const LLSD& info);  protected:  | 
