diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp
index bd57f76d61..854914bc84 100755
--- a/indra/newview/llfloaterbump.cpp
+++ b/indra/newview/llfloaterbump.cpp
@@ -42,6 +42,7 @@
#include "llviewermenu.h"
#include "llviewerobjectlist.h"
+#include "fsradar.h"
#include "fsscrolllistctrl.h"
#include "llclipboard.h"
#include "llfloaterreg.h"
@@ -58,18 +59,20 @@ LLFloaterBump::LLFloaterBump(const LLSD& key)
mList(NULL)
//
{
- mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this));
- mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this));
- mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this));
- mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this));
- mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this));
- mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
- mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this));
- mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this));
- mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this));
- mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this));
- mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this));
- mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this));
+ // Improved bump list
+ //mCommitCallbackRegistrar.add("Avatar.SendIM", boost::bind(&LLFloaterBump::startIM, this));
+ //mCommitCallbackRegistrar.add("Avatar.ReportAbuse", boost::bind(&LLFloaterBump::reportAbuse, this));
+ //mCommitCallbackRegistrar.add("ShowAgentProfile", boost::bind(&LLFloaterBump::showProfile, this));
+ //mCommitCallbackRegistrar.add("Avatar.InviteToGroup", boost::bind(&LLFloaterBump::inviteToGroup, this));
+ //mCommitCallbackRegistrar.add("Avatar.Call", boost::bind(&LLFloaterBump::startCall, this));
+ //mEnableCallbackRegistrar.add("Avatar.EnableCall", boost::bind(&LLAvatarActions::canCall));
+ //mCommitCallbackRegistrar.add("Avatar.AddFriend", boost::bind(&LLFloaterBump::addFriend, this));
+ //mEnableCallbackRegistrar.add("Avatar.EnableAddFriend", boost::bind(&LLFloaterBump::enableAddFriend, this));
+ //mCommitCallbackRegistrar.add("Avatar.Mute", boost::bind(&LLFloaterBump::muteAvatar, this));
+ //mEnableCallbackRegistrar.add("Avatar.EnableMute", boost::bind(&LLFloaterBump::enableMute, this));
+ //mCommitCallbackRegistrar.add("PayObject", boost::bind(&LLFloaterBump::payAvatar, this));
+ //mCommitCallbackRegistrar.add("Tools.LookAtSelection", boost::bind(&LLFloaterBump::zoomInAvatar, this));
+ //
}
@@ -195,9 +198,10 @@ void LLFloaterBump::add(LLScrollListCtrl* list, LLMeanCollisionData* mcd)
row["columns"][0]["font"] = "SansSerifBold";
list->addElement(row);
-
- // Instant bump list floater update
- //mNames[mcd->mPerp] = mcd->mFullName;
+// Improved bump list
+}
+#if 0
+ mNames[mcd->mPerp] = mcd->mFullName;
}
@@ -286,6 +290,8 @@ void LLFloaterBump::inviteToGroup()
{
LLAvatarActions::inviteToGroup(mItemUUID);
}
+#endif
+//
// FIRE-13888: Add copy function to bumps list
LLContextMenu* FSBumpListMenu::createMenu()
@@ -303,7 +309,38 @@ void FSBumpListMenu::onContextMenuItemClick(const LLSD& userdata)
{
std::string item = userdata.asString();
- if (item == "copy")
+ if (item == "show_profile")
+ {
+ LLAvatarActions::showProfile(mUUIDs.front());
+ }
+ else if (item == "sendim")
+ {
+ if (mUUIDs.size() == 1)
+ {
+ LLAvatarActions::startIM(mUUIDs.front());
+ }
+ else
+ {
+ LLAvatarActions::startConference(mUUIDs);
+ }
+ }
+ else if (item == "zoom")
+ {
+ LLAvatarActions::zoomIn(mUUIDs.front());
+ }
+ else if (item == "teleportto")
+ {
+ LLAvatarActions::teleportTo(mUUIDs.front());
+ }
+ else if (item == "block")
+ {
+ LLAvatarActions::toggleBlock(mUUIDs.front());
+ }
+ else if (item == "report")
+ {
+ LLAvatarActions::report(mUUIDs.front());
+ }
+ else if (item == "copy")
{
LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps");
if (floater && !gMeanCollisionList.empty() && !mUUIDs.empty())
@@ -327,12 +364,54 @@ void FSBumpListMenu::onContextMenuItemClick(const LLSD& userdata)
bool FSBumpListMenu::onContextMenuItemEnable(const LLSD& userdata)
{
- std::string item = userdata.asString();
+ const LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps");
+ const std::string item = userdata.asString();
- if (item == "can_copy")
+ if (!floater)
{
- LLFloaterBump* floater = LLFloaterReg::findTypedInstance("bumps");
- return (floater && !gMeanCollisionList.empty() && !mUUIDs.empty());
+ return false;
+ }
+
+ if (item == "can_show_profile")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() == 1);
+ }
+ else if (item == "can_sendim")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() > 0);
+ }
+ else if (item == "can_zoom")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() == 1 && LLAvatarActions::canZoomIn(mUUIDs.front()));
+ }
+ else if (item == "can_teleportto")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() == 1 && FSRadar::getInstance()->getEntry(mUUIDs.front()) != NULL);
+ }
+ else if (item == "can_block")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() == 1);
+ }
+ else if (item == "is_blocked")
+ {
+ if (!gMeanCollisionList.empty() && mUUIDs.size() == 1)
+ {
+ std::string name;
+ gCacheName->getFullName(mUUIDs.front(), name);
+ return LLMuteList::getInstance()->isMuted(mUUIDs.front(), name);
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else if (item == "can_report")
+ {
+ return (!gMeanCollisionList.empty() && mUUIDs.size() == 1);
+ }
+ else if (item == "can_copy")
+ {
+ return (!gMeanCollisionList.empty() && !mUUIDs.empty());
}
return false;
diff --git a/indra/newview/llfloaterbump.h b/indra/newview/llfloaterbump.h
index 21c1a082f6..b2e695b2d6 100755
--- a/indra/newview/llfloaterbump.h
+++ b/indra/newview/llfloaterbump.h
@@ -69,19 +69,18 @@ private:
LLFloaterBump(const LLSD& key);
virtual ~LLFloaterBump();
- // Instant bump list floater update
+ // Improved bump list
//LLScrollListCtrl* mList;
- FSScrollListCtrl* mList;
- LLMenuGL* mPopupMenu;
- LLUUID mItemUUID;
+ //LLMenuGL* mPopupMenu;
+ //LLUUID mItemUUID;
+
+ //typedef std::map uuid_map_t;
+ //uuid_map_t mNames;
+ FSScrollListCtrl* mList;
- // Instant bump list floater update
void updateList();
bool mDirty;
-
- typedef std::map uuid_map_t;
- uuid_map_t mNames;
-
+ //
};
// FIRE-13888: Add copy function to bumps list
diff --git a/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml b/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml
index f6f04cb050..5740779a90 100644
--- a/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml
+++ b/indra/newview/skins/default/xui/de/menu_fs_bump_list.xml
@@ -1,4 +1,10 @@
+
+
+
+
+
+
diff --git a/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml b/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml
index 59886feadd..80fe6a101d 100644
--- a/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_fs_bump_list.xml
@@ -1,6 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+