diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/newview/llpanelteleporthistory.cpp | 44 | ||||
| -rw-r--r-- | indra/newview/llpanelteleporthistory.h | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml | 6 | 
3 files changed, 51 insertions, 0 deletions
| diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 77c2fb7c8c..245f694ac6 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -452,6 +452,7 @@ BOOL LLTeleportHistoryPanel::postBuild()  	registrar.add("TeleportHistory.ExpandAllFolders",  boost::bind(&LLTeleportHistoryPanel::onExpandAllFolders,  this));  	registrar.add("TeleportHistory.CollapseAllFolders",  boost::bind(&LLTeleportHistoryPanel::onCollapseAllFolders,  this));  	registrar.add("TeleportHistory.ClearTeleportHistory",  boost::bind(&LLTeleportHistoryPanel::onClearTeleportHistory,  this)); +	mEnableCallbackRegistrar.add("TeleportHistory.GearMenu.Enable", boost::bind(&LLTeleportHistoryPanel::isActionEnabled, this, _2));  	LLMenuGL* gear_menu  = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>("menu_teleport_history_gear.xml",  gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());  	if(gear_menu) @@ -979,6 +980,49 @@ void LLTeleportHistoryPanel::onGearButtonClicked()  	LLMenuGL::showPopup(this, menu, menu_x, menu_y);  } +bool LLTeleportHistoryPanel::isActionEnabled(const LLSD& userdata) const +{ +	S32 tabs_cnt = mItemContainers.size(); + +	bool has_expanded_tabs = false; +	bool has_collapsed_tabs = false; + +	for (S32 n = 0; n < tabs_cnt; n++) +	{ +		LLAccordionCtrlTab* tab = mItemContainers.get(n); +		if (!tab->getVisible()) +			continue; + +		if (tab->getDisplayChildren()) +		{ +			has_expanded_tabs = true; +		} +		else +		{ +			has_collapsed_tabs = true; +		} + +		if (has_expanded_tabs && has_collapsed_tabs) +		{ +			break; +		} +	} + +	std::string command_name = userdata.asString(); + +	if (has_expanded_tabs && command_name == "collapse_all") +	{ +		return true; +	} + +	if (has_collapsed_tabs && command_name ==  "expand_all") +	{ +		return true; +	} + +	return false; +} +  void LLTeleportHistoryPanel::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed)  {  	LLSD param = acc_tab->getValue(); diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h index 0c0f891f32..4eeaec7705 100644 --- a/indra/newview/llpanelteleporthistory.h +++ b/indra/newview/llpanelteleporthistory.h @@ -97,6 +97,7 @@ private:  	void handleItemSelect(LLFlatListView* );  	LLFlatListView* getFlatListViewFromTab(LLAccordionCtrlTab *);  	void onGearButtonClicked(); +	bool isActionEnabled(const LLSD& userdata) const;  	void setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed);  	bool isAccordionCollapsedByUser(LLUICtrl* acc_tab); diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml index 6768d7fccb..134b331514 100644 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_gear.xml @@ -13,12 +13,18 @@       name="Expand all folders">          <menu_item_call.on_click           function="TeleportHistory.ExpandAllFolders" /> +        <on_enable +         function="TeleportHistory.GearMenu.Enable" +         parameter="expand_all" />      </menu_item_call>      <menu_item_call       label="Collapse all folders"       name="Collapse all folders">          <menu_item_call.on_click           function="TeleportHistory.CollapseAllFolders" /> +        <on_enable +         function="TeleportHistory.GearMenu.Enable" +         parameter="collapse_all" />      </menu_item_call>      <menu_item_separator layout="topleft" />      <menu_item_call | 
