[RLVa] Updates thanks to Kitty
1ea7389, 49be412, ed4c8e6 & 7ce9521 - changed : "Give to #RLV" agent-to-agent and script-to-agent offers can contain subfolders -> limited to 3 levels (e.g. #RLV/~FolderA/FolderB/FolderC) -> #RLV folder is auto-created if it doesn't currently exist 8780d84 - Incremented version number to RLVa-1.4.10 f078067 - internal : boolean (custom) debug settings should have a boolean type 72a8ad8 & 401ca14 - internal : added supporting code for "Detach Folder" RLVa lock checks 05718b5 - fixed : RenderResolutionDivisor is non-functional -> RenderResolutionDivisor isn't actually taken into account when checking the new screen resolution against the current screen buffer size 4fa138b - fixed : viewer clips mouse to its rectangle when switching into mouselook while it's not the active application -> Repro: * rez a prim with a script to llForceMouseLook(TRUE) and force-sit when clicked (with a slight delay) * click the prim and give focus to another application => the viewer will center the mouse cursor on itself and restrict movement to within its own rectangle (requires alt-tab to escape) + Singu Note: Thanks to Kitty for this, it is possible that this would happen in our last release 14132c9 - fixed : region name and global coordinates are shown on the About floater when @showloc restricted + Singu Note: RLV version is now shown in help->about 9a2af62 - changed : llRegionSayTo messages are no longer subject to @recvchat(from) or @recvemote(from) 2dc4b89 - fixed : @getstatus and @getstatusall should specify an (optional) separator -> added support for both @getstatus:tp;|=123 and @getstatus:;|=123 fbb3fb1 - Incremented API version number to 2.8.0 92c39b9 - internal : quick and dirty hack fix for RlvUtil::filterNames() but there's no time to do a proper backport from RLVa-1.5 2580f1c - internal : remove hack for legacy viewers without multi-attachment support
This commit is contained in:
@@ -67,6 +67,34 @@ static bool rlvParseNotifyOption(const std::string& strOption, S32& nChannel, st
|
||||
return (itTok == tokens.end());
|
||||
}
|
||||
|
||||
// Checked: 2014-02-26 (RLVa-1.4.10)
|
||||
static bool rlvParseGetStatusOption(const std::string& strOption, std::string& strFilter, std::string& strSeparator)
|
||||
{
|
||||
// @getstatus:[<option>][;<separator>]
|
||||
// * Parameters: first and second parameters are both optional
|
||||
// * Examples : @getstatus=123 ; @getstatus:tp=123 ; @getstatus:tp;|=123 ; @getstatus:;|=123
|
||||
|
||||
boost_tokenizer tokens(strOption, boost::char_separator<char>(";", "", boost::keep_empty_tokens));
|
||||
boost_tokenizer::const_iterator itTok = tokens.begin();
|
||||
|
||||
strSeparator = "/";
|
||||
strFilter.clear();
|
||||
|
||||
// <option> optional parameter (defaults to empty string if unspecified)
|
||||
if (itTok != tokens.end())
|
||||
strFilter = *itTok++;
|
||||
else
|
||||
strFilter.clear();
|
||||
|
||||
// <separator> optional paramter (defaults to '/' if unspecified)
|
||||
if ( (itTok != tokens.end()) && (!(*itTok).empty()) )
|
||||
strSeparator = *itTok++;
|
||||
else
|
||||
strSeparator = "/";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Constructor/destructor
|
||||
//
|
||||
@@ -1900,19 +1928,27 @@ ERlvCmdRet RlvHandler::processReplyCommand(const RlvCommand& rlvCmd) const
|
||||
}
|
||||
break;
|
||||
#endif // RLV_EXTENSION_CMD_GETCOMMAND
|
||||
case RLV_BHVR_GETSTATUS: // @getstatus[:<option>]=<channel> - Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
|
||||
case RLV_BHVR_GETSTATUS: // @getstatus - Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
|
||||
{
|
||||
// NOTE: specification says response should start with '/' but RLV-1.16.1 returns an empty string when no rules are set
|
||||
rlv_object_map_t::const_iterator itObj = m_Objects.find(rlvCmd.getObjectID());
|
||||
if (itObj != m_Objects.end())
|
||||
strReply = itObj->second.getStatusString(rlvCmd.getOption());
|
||||
std::string strFilter, strSeparator;
|
||||
if (rlvParseGetStatusOption(rlvCmd.getOption(), strFilter, strSeparator))
|
||||
{
|
||||
// NOTE: specification says response should start with '/' but RLV-1.16.1 returns an empty string when no rules are set
|
||||
rlv_object_map_t::const_iterator itObj = m_Objects.find(rlvCmd.getObjectID());
|
||||
if (itObj != m_Objects.end())
|
||||
strReply = itObj->second.getStatusString(strFilter, strSeparator);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RLV_BHVR_GETSTATUSALL: // @getstatusall[:<option>]=<channel> - Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
|
||||
case RLV_BHVR_GETSTATUSALL: // @getstatusall - Checked: 2010-04-07 (RLVa-1.2.0d) | Modified: RLVa-1.1.0f
|
||||
{
|
||||
// NOTE: specification says response should start with '/' but RLV-1.16.1 returns an empty string when no rules are set
|
||||
for (rlv_object_map_t::const_iterator itObj = m_Objects.begin(); itObj != m_Objects.end(); ++itObj)
|
||||
strReply += itObj->second.getStatusString(rlvCmd.getOption());
|
||||
std::string strFilter, strSeparator;
|
||||
if (rlvParseGetStatusOption(rlvCmd.getOption(), strFilter, strSeparator))
|
||||
{
|
||||
// NOTE: specification says response should start with '/' but RLV-1.16.1 returns an empty string when no rules are set
|
||||
for (rlv_object_map_t::const_iterator itObj = m_Objects.begin(); itObj != m_Objects.end(); ++itObj)
|
||||
strReply += itObj->second.getStatusString(strFilter, strSeparator);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RLV_BHVR_UNKNOWN:
|
||||
|
||||
Reference in New Issue
Block a user