diff --git a/indra/newview/fscontactsfloater.cpp b/indra/newview/fscontactsfloater.cpp index 1365fe04c8..4f1f7cf131 100644 --- a/indra/newview/fscontactsfloater.cpp +++ b/indra/newview/fscontactsfloater.cpp @@ -193,16 +193,33 @@ void FSFloaterContacts::onOpen(const LLSD& key) floater_container->addFloater(this, TRUE); } - if (key.asString() == "friends") + openTab(key.asString()); +} + +void FSFloaterContacts::openTab(const std::string& name) +{ + BOOL visible=FALSE; + + if(name=="friends") { + visible=TRUE; childShowTab("friends_and_groups", "friends_panel"); } - else if (key.asString() == "groups") + else if(name=="groups") { + visible=TRUE; childShowTab("friends_and_groups", "groups_panel"); mGroupsTab->getChild("groupcount")->setTextArg("[COUNT]", llformat("%d", gAgent.mGroups.count())); // items.end()));// mGroupsTab->getChild("groupcount")->setTextArg("[MAX]", llformat("%d", gMaxAgentGroups)); } + + if(visible) + { + if(getHost()) + getHost()->setVisible(TRUE); + + setVisible(TRUE); + } } diff --git a/indra/newview/fscontactsfloater.h b/indra/newview/fscontactsfloater.h index bd02d5e497..5ab3c60e9b 100644 --- a/indra/newview/fscontactsfloater.h +++ b/indra/newview/fscontactsfloater.h @@ -63,6 +63,8 @@ public: static FSFloaterContacts* getInstance(); static FSFloaterContacts* findInstance(); + void openTab(const std::string& name); + void sortFriendList(); LLPanel* mFriendsTab; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index d5b94bb5cc..1bd945823b 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -133,6 +133,7 @@ // ## Zi: Texture Refresh #include "particleeditor.h" +#include "fscontactsfloater.h" // Display group list in contacts floater using namespace LLVOAvatarDefines; @@ -4027,12 +4028,28 @@ class LLTogglePanelPeopleTab : public view_listener_t LLSD param; param["people_panel_tab_name"] = panel_name; - if ( panel_name == "friends_panel" - || panel_name == "groups_panel" - || panel_name == "nearby_panel") + // Open groups and friends lists in communicate floater + // if ( panel_name == "friends_panel" + // || panel_name == "groups_panel" + // || panel_name == "nearby_panel") + // { + // return togglePeoplePanel(panel_name, param); + // } + if(panel_name=="nearby_panel") { - return togglePeoplePanel(panel_name, param); + return togglePeoplePanel(panel_name,param); } + else if(panel_name=="groups_panel") + { + FSFloaterContacts::getInstance()->openTab("groups"); + return true; + } + else if(panel_name=="friends_panel") + { + FSFloaterContacts::getInstance()->openTab("friends"); + return true; + } + // else { return false;