From bb1776de6865715b2dd96185140d35e46d63c837 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Mon, 26 Sep 2011 16:06:57 -0700
Subject: [PATCH] EXP-1207 : Introduced an hasCommand() method for toolbars and
 toolbar view

---
 indra/llui/lltoolbar.cpp     | 14 ++++++++++++++
 indra/llui/lltoolbar.h       |  1 +
 indra/llui/lltoolbarview.cpp | 18 ++++++++++++++++++
 indra/llui/lltoolbarview.h   |  2 ++
 4 files changed, 35 insertions(+)

diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp
index a9513b759a8..5802d2adda6 100644
--- a/indra/llui/lltoolbar.cpp
+++ b/indra/llui/lltoolbar.cpp
@@ -240,6 +240,20 @@ bool LLToolBar::addCommand(LLCommand * command)
 	return true;
 }
 
+bool LLToolBar::hasCommand(const std::string& command_name)
+{
+	bool has_command = false;
+	for (std::list<LLToolBarButton*>::iterator cmd = mButtons.begin(); cmd != mButtons.end(); cmd++)
+	{
+		if ((*cmd)->getName() == command_name)
+		{
+			has_command = true;
+			break;
+		}
+	}
+	return has_command;
+}
+
 BOOL LLToolBar::handleRightMouseDown(S32 x, S32 y, MASK mask)
 {
 	BOOL handle_it_here = !mReadOnly;
diff --git a/indra/llui/lltoolbar.h b/indra/llui/lltoolbar.h
index 5028c39fb83..00e6ed131a1 100644
--- a/indra/llui/lltoolbar.h
+++ b/indra/llui/lltoolbar.h
@@ -122,6 +122,7 @@ class LLToolBar
 	void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
 	bool addCommand(LLCommand * command);
+	bool hasCommand(const std::string& command_name);
 
 protected:
 	friend class LLUICtrlFactory;
diff --git a/indra/llui/lltoolbarview.cpp b/indra/llui/lltoolbarview.cpp
index 0b0fcef52c7..3b4960fdd57 100644
--- a/indra/llui/lltoolbarview.cpp
+++ b/indra/llui/lltoolbarview.cpp
@@ -62,6 +62,24 @@ BOOL LLToolBarView::postBuild()
 	return TRUE;
 }
 
+bool LLToolBarView::hasCommand(const std::string& command_name)
+{
+	bool has_command = false;
+	if (mToolbarLeft && !has_command)
+	{
+		has_command = mToolbarLeft->hasCommand(command_name);
+	}
+	if (mToolbarRight && !has_command)
+	{
+		has_command = mToolbarRight->hasCommand(command_name);
+	}
+	if (mToolbarBottom && !has_command)
+	{
+		has_command = mToolbarBottom->hasCommand(command_name);
+	}
+	return has_command;
+}
+
 void LLToolBarView::draw()
 {
 	static bool debug_print = true;
diff --git a/indra/llui/lltoolbarview.h b/indra/llui/lltoolbarview.h
index 24735d69e95..65d339315b8 100644
--- a/indra/llui/lltoolbarview.h
+++ b/indra/llui/lltoolbarview.h
@@ -45,6 +45,8 @@ class LLToolBarView : public LLUICtrl
 
 	virtual void draw();
 
+	bool hasCommand(const std::string& command_name);
+	
 	// valid children for LLToolBarView are stored in this registry
 	typedef LLDefaultChildRegistry child_registry_t;
 
-- 
GitLab