diff options
| -rw-r--r-- | indra/llui/llbutton.cpp | 18 | ||||
| -rw-r--r-- | indra/llui/llbutton.h | 5 | ||||
| -rw-r--r-- | indra/llui/llcommandmanager.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/llcommandmanager.h | 9 | ||||
| -rw-r--r-- | indra/llui/lltoolbar.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/app_settings/commands.xml | 2 | 
6 files changed, 56 insertions, 4 deletions
diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index ba3748a573..2e9c7a5d3d 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -296,6 +296,24 @@ void LLButton::onCommit()  	LLUICtrl::onCommit();  } +boost::signals2::connection LLButton::setClickedCallback(const CommitCallbackParam& cb) +{ +	return setClickedCallback(initCommitCallback(cb)); +} +boost::signals2::connection LLButton::setMouseDownCallback(const CommitCallbackParam& cb) +{ +	return setMouseDownCallback(initCommitCallback(cb)); +} +boost::signals2::connection LLButton::setMouseUpCallback(const CommitCallbackParam& cb) +{ +	return setMouseUpCallback(initCommitCallback(cb)); +} +boost::signals2::connection LLButton::setHeldDownCallback(const CommitCallbackParam& cb) +{ +	return setHeldDownCallback(initCommitCallback(cb)); +} + +  boost::signals2::connection LLButton::setClickedCallback( const commit_signal_t::slot_type& cb )  {  	if (!mCommitSignal) mCommitSignal = new commit_signal_t(); diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index a0a7b4e372..ba0345f610 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -170,6 +170,11 @@ public:  	void			setUseEllipses( BOOL use_ellipses )					{ mUseEllipses = use_ellipses; } +	boost::signals2::connection setClickedCallback(const CommitCallbackParam& cb); +	boost::signals2::connection setMouseDownCallback(const CommitCallbackParam& cb); +	boost::signals2::connection setMouseUpCallback(const CommitCallbackParam& cb); +	boost::signals2::connection setHeldDownCallback(const CommitCallbackParam& cb); +  	boost::signals2::connection setClickedCallback( const commit_signal_t::slot_type& cb ); // mouse down and up within button  	boost::signals2::connection setMouseDownCallback( const commit_signal_t::slot_type& cb );  	boost::signals2::connection setMouseUpCallback( const commit_signal_t::slot_type& cb ); // mouse up, EVEN IF NOT IN BUTTON diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp index d8e035a320..128ba609cb 100644 --- a/indra/llui/llcommandmanager.cpp +++ b/indra/llui/llcommandmanager.cpp @@ -55,6 +55,8 @@ LLCommand::Params::Params()  	, tooltip_ref("tooltip_ref")  	, execute_function("execute_function")  	, execute_parameters("execute_parameters") +	, execute_stop_function("execute_stop_function") +	, execute_stop_parameters("execute_stop_parameters")  	, is_enabled_function("is_enabled_function")  	, is_enabled_parameters("is_enabled_parameters")  	, is_running_function("is_running_function") @@ -72,6 +74,8 @@ LLCommand::LLCommand(const LLCommand::Params& p)  	, mTooltipRef(p.tooltip_ref)  	, mExecuteFunction(p.execute_function)  	, mExecuteParameters(p.execute_parameters) +	, mExecuteStopFunction(p.execute_stop_function) +	, mExecuteStopParameters(p.execute_stop_parameters)  	, mIsEnabledFunction(p.is_enabled_function)  	, mIsEnabledParameters(p.is_enabled_parameters)  	, mIsRunningFunction(p.is_running_function) diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h index 46e0fe6e69..9b93ab735a 100644 --- a/indra/llui/llcommandmanager.h +++ b/indra/llui/llcommandmanager.h @@ -116,6 +116,9 @@ public:  		Mandatory<std::string>	execute_function;  		Optional<LLSD>			execute_parameters; +		Optional<std::string>	execute_stop_function; +		Optional<LLSD>			execute_stop_parameters; +		  		Optional<std::string>	is_enabled_function;  		Optional<LLSD>			is_enabled_parameters; @@ -139,6 +142,9 @@ public:  	const std::string& executeFunctionName() const { return mExecuteFunction; }  	const LLSD& executeParameters() const { return mExecuteParameters; } +	const std::string& executeStopFunctionName() const { return mExecuteStopFunction; } +	const LLSD& executeStopParameters() const { return mExecuteStopParameters; } +	  	const std::string& isEnabledFunctionName() const { return mIsEnabledFunction; }  	const LLSD& isEnabledParameters() const { return mIsEnabledParameters; } @@ -159,6 +165,9 @@ private:  	std::string mExecuteFunction;  	LLSD        mExecuteParameters; +	std::string mExecuteStopFunction; +	LLSD        mExecuteStopParameters; +	  	std::string mIsEnabledFunction;  	LLSD        mIsEnabledParameters; diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 89184f781f..e74aab6e21 100644 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -659,11 +659,25 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)  	if (!mReadOnly)  	{ -		LLUICtrl::CommitCallbackParam cbParam; -		cbParam.function_name = commandp->executeFunctionName(); -		cbParam.parameter = commandp->executeParameters(); +		LLUICtrl::CommitCallbackParam executeParam; +		executeParam.function_name = commandp->executeFunctionName(); +		executeParam.parameter = commandp->executeParameters(); -		button->setCommitCallback(cbParam); +		// If we have a "stop" function then we map the command to mouse down / mouse up otherwise commit +		const std::string& executeStopFunction = commandp->executeStopFunctionName(); +		if (executeStopFunction.length() > 0) +		{ +			LLUICtrl::CommitCallbackParam executeStopParam; +			executeStopParam.function_name = executeStopFunction; +			executeStopParam.parameter = commandp->executeStopParameters(); +			 +			button->setMouseDownCallback(executeParam); +			button->setMouseUpCallback(executeStopParam); +		} +		else +		{ +			button->setCommitCallback(executeParam); +		}  		const std::string& isEnabledFunction = commandp->isEnabledFunctionName();  		if (isEnabledFunction.length() > 0) diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index d758647d3a..296d992b34 100644 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -217,6 +217,8 @@             tooltip_ref="Command_Speak_Tooltip"             execute_function="Agent.ToggleMicrophone"             execute_parameters="speak" +           execute_stop_function="" +           execute_stop_parameters="speak"             is_enabled_function="Agent.IsActionAllowed"             is_enabled_parameters="speak"             is_running_function="Agent.IsMicrophoneOn"  | 
