EXP-1348 FIX -- Speak button activated when dragging and dropping between toolbars and moving back to Tool box
* Dragging and dropping the speak button will aggressively turn off the microphone now, regardless of the initial state of the button. Reviewed by Richard.meow-7.2.2
parent
4002820bad
commit
d6be2b4904
|
|
@ -302,7 +302,50 @@ bool LLToolBar::enableCommand(const LLCommandId& commandId, bool enabled)
|
|||
command_id_map::iterator it = mButtonMap.find(commandId.uuid());
|
||||
if (it != mButtonMap.end())
|
||||
{
|
||||
it->second->setEnabled(enabled);
|
||||
command_button = it->second;
|
||||
command_button->setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
|
||||
return (command_button != NULL);
|
||||
}
|
||||
|
||||
bool LLToolBar::stopCommandInProgress(const LLCommandId& commandId)
|
||||
{
|
||||
//
|
||||
// Note from Leslie:
|
||||
//
|
||||
// This implementation was largely put in place to handle EXP-1348 which is related to
|
||||
// dragging and dropping the "speak" button. The "speak" button can be in one of two
|
||||
// modes, i.e., either a toggle action or a push-to-talk action. Because of this it
|
||||
// responds to mouse down and mouse up in different ways, based on which behavior the
|
||||
// button is currently set to obey. This was the simplest way of getting the button
|
||||
// to turn off the microphone for both behaviors without risking duplicate state.
|
||||
//
|
||||
|
||||
LLToolBarButton * command_button = NULL;
|
||||
|
||||
if (commandId != LLCommandId::null)
|
||||
{
|
||||
LLCommand* command = LLCommandManager::instance().getCommand(commandId);
|
||||
llassert(command);
|
||||
|
||||
// If this command has an explicit function for execution stop
|
||||
if (command->executeStopFunctionName().length() > 0)
|
||||
{
|
||||
command_id_map::iterator it = mButtonMap.find(commandId.uuid());
|
||||
if (it != mButtonMap.end())
|
||||
{
|
||||
command_button = it->second;
|
||||
llassert(command_button->mIsRunningSignal);
|
||||
|
||||
// Check to see if it is running
|
||||
if ((*command_button->mIsRunningSignal)(command_button, command->isRunningParameters()))
|
||||
{
|
||||
// Trigger an additional button commit, which calls mouse down, mouse up and commit
|
||||
command_button->onCommit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@ public:
|
|||
int removeCommand(const LLCommandId& commandId); // Returns the rank the removed command was at, RANK_NONE if not found
|
||||
bool hasCommand(const LLCommandId& commandId) const;
|
||||
bool enableCommand(const LLCommandId& commandId, bool enabled);
|
||||
bool stopCommandInProgress(const LLCommandId& commandId);
|
||||
|
||||
void setStartDragCallback(tool_startdrag_callback_t cb) { mStartDragItemCallback = cb; }
|
||||
void setHandleDragCallback(tool_handledrag_callback_t cb) { mHandleDragItemCallback = cb; }
|
||||
|
|
|
|||
|
|
@ -355,6 +355,12 @@ BOOL LLToolBarView::handleDragTool( S32 x, S32 y, const LLUUID& uuid, LLAssetTyp
|
|||
LLToolDragAndDrop::ESource src = LLToolDragAndDrop::SOURCE_VIEWER;
|
||||
LLUUID srcID;
|
||||
LLToolDragAndDrop::getInstance()->beginMultiDrag(types, cargo_ids, src, srcID);
|
||||
|
||||
// Second, stop the command if it is in progress and requires stopping!
|
||||
LLCommandId command_id = LLCommandId(uuid);
|
||||
gToolBarView->mToolbarLeft->stopCommandInProgress(command_id);
|
||||
gToolBarView->mToolbarRight->stopCommandInProgress(command_id);
|
||||
gToolBarView->mToolbarBottom->stopCommandInProgress(command_id);
|
||||
|
||||
// Second, check if the command is present in one of the 3 toolbars
|
||||
// If it is, store the command, the toolbar and the rank in the toolbar and
|
||||
|
|
|
|||
Loading…
Reference in New Issue