diff --git a/indra/newview/fsfloatercontacts.cpp b/indra/newview/fsfloatercontacts.cpp index d1a11d0d0d..eef4d0f527 100644 --- a/indra/newview/fsfloatercontacts.cpp +++ b/indra/newview/fsfloatercontacts.cpp @@ -51,7 +51,6 @@ #include "llvoiceclient.h" #include "fscommon.h" #include "llviewermenu.h" -#include "rlvhandler.h" //Maximum number of people you can select to do an operation on at once. const U32 MAX_FRIEND_SELECT = 20; @@ -166,6 +165,8 @@ BOOL FSFloaterContacts::postBuild() mGroupsTab->childSetAction("invite_btn", boost::bind(&FSFloaterContacts::onGroupInviteButtonClicked, this)); mGroupsTab->setDefaultBtn("chat_btn"); + gRlvHandler.setBehaviourCallback(boost::bind(&FSFloaterContacts::updateRlvRestrictions, this, _1)); + return TRUE; } @@ -462,11 +463,7 @@ void FSFloaterContacts::getCurrentItemIDs(uuid_vec_t& selected_uuids) const if (cur_tab == FRIENDS_TAB_NAME) { - std::vector selected = mFriendsList->getAllSelected(); - for(std::vector::iterator itr = selected.begin(); itr != selected.end(); ++itr) - { - selected_uuids.push_back((*itr)->getUUID()); - } + getCurrentFriendItemIDs(selected_uuids); } else if (cur_tab == GROUP_TAB_NAME) { @@ -474,6 +471,15 @@ void FSFloaterContacts::getCurrentItemIDs(uuid_vec_t& selected_uuids) const } } +void FSFloaterContacts::getCurrentFriendItemIDs(uuid_vec_t& selected_uuids) const +{ + std::vector selected = mFriendsList->getAllSelected(); + for(std::vector::iterator itr = selected.begin(); itr != selected.end(); ++itr) + { + selected_uuids.push_back((*itr)->getUUID()); + } +} + void FSFloaterContacts::sortFriendList() { mFriendsList->updateLineHeight(); @@ -697,7 +703,7 @@ void FSFloaterContacts::updateFriendItem(const LLUUID& agent_id, const LLRelatio void FSFloaterContacts::refreshRightsChangeList() { uuid_vec_t friends; - getCurrentItemIDs(friends); + getCurrentFriendItemIDs(friends); size_t num_selected = friends.size(); @@ -999,4 +1005,12 @@ void FSFloaterContacts::childShowTab(const std::string& id, const std::string& t child->selectTabByName(tabname); } +void FSFloaterContacts::updateRlvRestrictions(ERlvBehaviour behavior) +{ + if (behavior == RLV_BHVR_SHOWLOC || + behavior == RLV_BHVR_SHOWWORLDMAP) + { + refreshUI(); + } +} // EOF diff --git a/indra/newview/fsfloatercontacts.h b/indra/newview/fsfloatercontacts.h index aa5e476ca6..d957d75223 100644 --- a/indra/newview/fsfloatercontacts.h +++ b/indra/newview/fsfloatercontacts.h @@ -30,6 +30,7 @@ #define FS_FLOATERCONTACTS_H #include "llfloater.h" +#include "rlvhandler.h" class LLAvatarList; class LLAvatarName; @@ -73,6 +74,7 @@ private: std::string getActiveTabName() const; LLUUID getCurrentItemID() const; void getCurrentItemIDs(uuid_vec_t& selected_uuids) const; + void getCurrentFriendItemIDs(uuid_vec_t& selected_uuids) const; void onAvatarListDoubleClicked(LLUICtrl* ctrl); enum FRIENDS_COLUMN_ORDER @@ -142,6 +144,8 @@ private: std::string mFriendListFontName; void childShowTab(const std::string& id, const std::string& tabname); + + void updateRlvRestrictions(ERlvBehaviour behavior); };