diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index a9513b759a88d7d1aa0f4ffaace04771d262ad39..5802d2adda6ade936b76ca91cc3506a3de988770 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 5028c39fb83e1a53863c5a48c83fb372cb4bb4e7..00e6ed131a17a7f33b38a9575200bdfb4eb46e85 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 0b0fcef52c77adb26f8fd86e58609a276bff8536..3b4960fdd57fa53ed1b1b59e2875057d5edeb1be 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 24735d69e957f53607eca9676305ce574854c7e9..65d339315b81fa5077adb7cf40444bbcc83fd3eb 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;