diff -r 0a41a8750048 -r c6bd91803270 doc/contributions.txt --- a/doc/contributions.txt Mon Feb 06 10:01:09 2012 -0500 +++ b/doc/contributions.txt Sun Feb 19 16:20:47 2012 -0500 @@ -610,6 +610,7 @@ STORM-1788 STORM-1799 STORM-1796 + STORM-1808 Kadah Coba STORM-1060 Jondan Lundquist diff -r 0a41a8750048 -r c6bd91803270 indra/newview/app_settings/commands.xml --- a/indra/newview/app_settings/commands.xml Mon Feb 06 10:01:09 2012 -0500 +++ b/indra/newview/app_settings/commands.xml Sun Feb 19 16:20:47 2012 -0500 @@ -37,6 +37,8 @@ tooltip_ref="Command_Build_Tooltip" execute_function="Build.Toggle" execute_parameters="build" + is_enabled_function="Build.Enabled" + is_enabled_parameters="build" is_running_function="Floater.IsOpen" is_running_parameters="build" /> diff -r 0a41a8750048 -r c6bd91803270 indra/newview/llagent.cpp --- a/indra/newview/llagent.cpp Mon Feb 06 10:01:09 2012 -0500 +++ b/indra/newview/llagent.cpp Sun Feb 19 16:20:47 2012 -0500 @@ -169,11 +169,7 @@ const std::string& param = sdname.asString(); - if (param == "build") - { - retval = gAgent.canEditParcel(); - } - else if (param == "speak") + if (param == "speak") { if ( gAgent.isVoiceConnected() && LLViewerParcelMgr::getInstance()->allowAgentVoice() && diff -r 0a41a8750048 -r c6bd91803270 indra/newview/lltoolmgr.h --- a/indra/newview/lltoolmgr.h Mon Feb 06 10:01:09 2012 -0500 +++ b/indra/newview/lltoolmgr.h Sun Feb 19 16:20:47 2012 -0500 @@ -54,7 +54,7 @@ bool inEdit(); bool canEdit(); - void toggleBuildMode(); + void toggleBuildMode(const LLSD& sdname); /* Determines if we are in Build mode or not. */ bool inBuildMode(); diff -r 0a41a8750048 -r c6bd91803270 indra/newview/lltoolmgr.cpp --- a/indra/newview/lltoolmgr.cpp Mon Feb 06 10:01:09 2012 -0500 +++ b/indra/newview/lltoolmgr.cpp Sun Feb 19 16:20:47 2012 -0500 @@ -81,7 +81,7 @@ // Not a panel, register these callbacks globally. LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Active", boost::bind(&LLToolMgr::inEdit, this)); LLUICtrl::EnableCallbackRegistry::currentRegistrar().add("Build.Enabled", boost::bind(&LLToolMgr::canEdit, this)); - LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Build.Toggle", boost::bind(&LLToolMgr::toggleBuildMode, this)); + LLUICtrl::CommitCallbackRegistry::currentRegistrar().add("Build.Toggle", boost::bind(&LLToolMgr::toggleBuildMode, this, _2)); gToolNull = new LLTool(LLStringUtil::null); // Does nothing setCurrentTool(gToolNull); @@ -245,8 +245,15 @@ return LLViewerParcelMgr::getInstance()->allowAgentBuild(); } -void LLToolMgr::toggleBuildMode() +void LLToolMgr::toggleBuildMode(const LLSD& sdname) { + const std::string& param = sdname.asString(); + + if (param == "build" && !canEdit()) + { + return; + } + LLFloaterReg::toggleInstanceOrBringToFront("build"); bool build_visible = LLFloaterReg::instanceVisible("build");