summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llfloateravatarpicker.cpp4
-rwxr-xr-xindra/newview/llinventorybridge.cpp42
-rwxr-xr-xindra/newview/llinventorybridge.h1
-rwxr-xr-xindra/newview/llpanelplaceprofile.cpp5
-rwxr-xr-xindra/newview/llpanelplaceprofile.h1
-rwxr-xr-xindra/newview/llstartup.cpp1
-rwxr-xr-xindra/newview/lltooldraganddrop.cpp90
-rwxr-xr-xindra/newview/lltoolpie.cpp12
-rwxr-xr-xindra/newview/skins/default/xui/en/menu_object.xml19
-rwxr-xr-xindra/newview/skins/default/xui/en/panel_place_profile.xml18
10 files changed, 116 insertions, 77 deletions
diff --git a/indra/newview/llfloateravatarpicker.cpp b/indra/newview/llfloateravatarpicker.cpp
index c0afb72cff..1b0e73409b 100755
--- a/indra/newview/llfloateravatarpicker.cpp
+++ b/indra/newview/llfloateravatarpicker.cpp
@@ -795,7 +795,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()
{
bool ret_val = visibleItemsSelected();
- if ( ret_val && mOkButtonValidateSignal.num_slots() )
+ if ( ret_val )
{
std::string acvtive_panel_name;
LLScrollListCtrl* list = NULL;
@@ -826,7 +826,7 @@ bool LLFloaterAvatarPicker::isSelectBtnEnabled()
getSelectedAvatarData(list, avatar_ids, avatar_names);
if (avatar_ids.size() >= 1)
{
- ret_val = mOkButtonValidateSignal(avatar_ids);
+ ret_val = mOkButtonValidateSignal.num_slots()?mOkButtonValidateSignal(avatar_ids):true;
}
else
{
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 44943d8722..101b16b027 100755
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -4708,6 +4708,10 @@ public:
virtual void changed(U32 mask)
{
mBridgep->refreshFolderViewItem();
+ if (mask & LLFriendObserver::ONLINE)
+ {
+ mBridgep->checkSearchBySuffixChanges();
+ }
}
protected:
LLCallingCardBridge* mBridgep;
@@ -4742,6 +4746,44 @@ void LLCallingCardBridge::refreshFolderViewItem()
}
}
+void LLCallingCardBridge::checkSearchBySuffixChanges()
+{
+ if (!mDisplayName.empty())
+ {
+ // changes in mDisplayName are processed by rename function and here it will be always same
+ // suffixes are also of fixed length, and we are processing change of one at a time,
+ // so it should be safe to use length (note: mSearchableName is capitalized)
+ S32 old_length = mSearchableName.length();
+ S32 new_length = mDisplayName.length() + getLabelSuffix().length();
+ if (old_length == new_length)
+ {
+ return;
+ }
+ mSearchableName.assign(mDisplayName);
+ mSearchableName.append(getLabelSuffix());
+ LLStringUtil::toUpper(mSearchableName);
+ if (new_length<old_length)
+ {
+ LLInventoryFilter* filter = getInventoryFilter();
+ if (filter && mPassedFilter && mSearchableName.find(filter->getFilterSubString()) == std::string::npos)
+ {
+ // string no longer contains substring
+ // we either have to update all parents manually or restart filter.
+ // dirtyFilter will not work here due to obsolete descendants' generations
+ getInventoryFilter()->setModified(LLFolderViewFilter::FILTER_MORE_RESTRICTIVE);
+ }
+ }
+ else
+ {
+ if (getInventoryFilter())
+ {
+ // mSearchableName became longer, we gained additional suffix and need to repeat filter check.
+ dirtyFilter();
+ }
+ }
+ }
+}
+
// virtual
void LLCallingCardBridge::performAction(LLInventoryModel* model, std::string action)
{
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index bc875e8f37..b29235260b 100755
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -419,6 +419,7 @@ public:
void* cargo_data,
std::string& tooltip_msg);
void refreshFolderViewItem();
+ void checkSearchBySuffixChanges();
protected:
LLCallingCardObserver* mObserver;
};
diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp
index 14b5d9af47..3b8acdca90 100755
--- a/indra/newview/llpanelplaceprofile.cpp
+++ b/indra/newview/llpanelplaceprofile.cpp
@@ -129,6 +129,7 @@ BOOL LLPanelPlaceProfile::postBuild()
mEstateNameText = getChild<LLTextBox>("estate_name");
mEstateRatingText = getChild<LLTextBox>("estate_rating");
+ mEstateRatingIcon = getChild<LLIconCtrl>("estate_rating_icon");
mEstateOwnerText = getChild<LLTextBox>("estate_owner");
mCovenantText = getChild<LLTextEditor>("covenant");
@@ -201,6 +202,7 @@ void LLPanelPlaceProfile::resetLocation()
mEstateNameText->setValue(loading);
mEstateRatingText->setValue(loading);
+ mEstateRatingIcon->setValue(loading);
mEstateOwnerText->setValue(loading);
mCovenantText->setValue(loading);
@@ -348,6 +350,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mParcelRatingIcon->setValue(icon_m);
mRegionRatingIcon->setValue(icon_m);
+ mEstateRatingIcon->setValue(icon_m);
break;
case SIM_ACCESS_ADULT:
@@ -355,6 +358,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mParcelRatingIcon->setValue(icon_r);
mRegionRatingIcon->setValue(icon_r);
+ mEstateRatingIcon->setValue(icon_r);
break;
default:
@@ -362,6 +366,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel,
mParcelRatingIcon->setValue(icon_pg);
mRegionRatingIcon->setValue(icon_pg);
+ mEstateRatingIcon->setValue(icon_pg);
}
std::string rating = LLViewerRegion::accessToString(sim_access);
diff --git a/indra/newview/llpanelplaceprofile.h b/indra/newview/llpanelplaceprofile.h
index f4c6145881..ff24938b9c 100755
--- a/indra/newview/llpanelplaceprofile.h
+++ b/indra/newview/llpanelplaceprofile.h
@@ -103,6 +103,7 @@ private:
LLTextBox* mEstateNameText;
LLTextBox* mEstateRatingText;
+ LLIconCtrl* mEstateRatingIcon;
LLTextBox* mEstateOwnerText;
LLTextEditor* mCovenantText;
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index d5f8a1e46e..a5fdb72f9b 100755
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -2822,6 +2822,7 @@ void LLStartUp::initNameCache()
// capabilities for display name lookup
LLAvatarNameCache::initClass(false,gSavedSettings.getBOOL("UsePeopleAPI"));
LLAvatarNameCache::setUseDisplayNames(gSavedSettings.getBOOL("UseDisplayNames"));
+ LLAvatarNameCache::setUseUsernames(gSavedSettings.getBOOL("NameTagShowUsernames"));
}
void LLStartUp::cleanupNameCache()
diff --git a/indra/newview/lltooldraganddrop.cpp b/indra/newview/lltooldraganddrop.cpp
index 7314ab60c1..ece30d2d0a 100755
--- a/indra/newview/lltooldraganddrop.cpp
+++ b/indra/newview/lltooldraganddrop.cpp
@@ -1584,13 +1584,22 @@ static void give_inventory_cb(const LLSD& notification, const LLSD& response)
const LLUUID& session_id = payload["session_id"];
const LLUUID& agent_id = payload["agent_id"];
LLViewerInventoryItem * inv_item = gInventory.getItem(payload["item_id"]);
- if (NULL == inv_item)
+ LLViewerInventoryCategory * inv_cat = gInventory.getCategory(payload["item_id"]);
+ if (NULL == inv_item && NULL == inv_cat)
{
- llassert(NULL != inv_item);
+ llassert( FALSE );
return;
}
-
- if (LLGiveInventory::doGiveInventoryItem(agent_id, inv_item, session_id))
+ bool successfully_shared;
+ if (inv_item)
+ {
+ successfully_shared = LLGiveInventory::doGiveInventoryItem(agent_id, inv_item, session_id);
+ }
+ else
+ {
+ successfully_shared = LLGiveInventory::doGiveInventoryCategory(agent_id, inv_cat, session_id);
+ }
+ if (successfully_shared)
{
if ("avatarpicker" == payload["d&d_dest"].asString())
{
@@ -1600,8 +1609,8 @@ static void give_inventory_cb(const LLSD& notification, const LLSD& response)
}
}
-static void show_item_sharing_confirmation(const std::string name,
- LLViewerInventoryItem* inv_item,
+static void show_object_sharing_confirmation(const std::string name,
+ LLInventoryObject* inv_item,
const LLSD& dest,
const LLUUID& dest_agent,
const LLUUID& session_id = LLUUID::null)
@@ -1611,32 +1620,28 @@ static void show_item_sharing_confirmation(const std::string name,
llassert(NULL != inv_item);
return;
}
- if(gInventory.getItem(inv_item->getUUID())
- && LLGiveInventory::isInventoryGiveAcceptable(inv_item))
- {
- LLSD substitutions;
- substitutions["RESIDENTS"] = name;
- substitutions["ITEMS"] = inv_item->getName();
- LLSD payload;
- payload["agent_id"] = dest_agent;
- payload["item_id"] = inv_item->getUUID();
- payload["session_id"] = session_id;
- payload["d&d_dest"] = dest.asString();
- LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, payload, &give_inventory_cb);
- }
+ LLSD substitutions;
+ substitutions["RESIDENTS"] = name;
+ substitutions["ITEMS"] = inv_item->getName();
+ LLSD payload;
+ payload["agent_id"] = dest_agent;
+ payload["item_id"] = inv_item->getUUID();
+ payload["session_id"] = session_id;
+ payload["d&d_dest"] = dest.asString();
+ LLNotificationsUtil::add("ShareItemsConfirmation", substitutions, payload, &give_inventory_cb);
}
static void get_name_cb(const LLUUID& id,
const std::string& full_name,
- LLViewerInventoryItem* inv_item,
+ LLInventoryObject* inv_obj,
const LLSD& dest,
const LLUUID& dest_agent)
{
- show_item_sharing_confirmation(full_name,
- inv_item,
- dest,
- id,
- LLUUID::null);
+ show_object_sharing_confirmation(full_name,
+ inv_obj,
+ dest,
+ id,
+ LLUUID::null);
}
// function used as drag-and-drop handler for simple agent give inventory requests
@@ -1662,10 +1667,11 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
case DAD_GESTURE:
case DAD_CALLINGCARD:
case DAD_MESH:
+ case DAD_CATEGORY:
{
- LLViewerInventoryItem* inv_item = (LLViewerInventoryItem*)cargo_data;
- if(gInventory.getItem(inv_item->getUUID())
- && LLGiveInventory::isInventoryGiveAcceptable(inv_item))
+ LLInventoryObject* inv_obj = (LLInventoryObject*)cargo_data;
+ if(gInventory.getCategory(inv_obj->getUUID()) || (gInventory.getItem(inv_obj->getUUID())
+ && LLGiveInventory::isInventoryGiveAcceptable(dynamic_cast<LLInventoryItem*>(inv_obj))))
{
// *TODO: get multiple object transfers working
*accept = ACCEPT_YES_COPY_SINGLE;
@@ -1682,40 +1688,18 @@ bool LLToolDragAndDrop::handleGiveDragAndDrop(LLUUID dest_agent, LLUUID session_
// Otherwise set up a callback to show the dialog when the name arrives.
if (gCacheName->getFullName(dest_agent, fullname))
{
- show_item_sharing_confirmation(fullname, inv_item, dest, dest_agent, LLUUID::null);
+ show_object_sharing_confirmation(fullname, inv_obj, dest, dest_agent, LLUUID::null);
}
else
{
- gCacheName->get(dest_agent, false, boost::bind(&get_name_cb, _1, _2, inv_item, dest, dest_agent));
+ gCacheName->get(dest_agent, false, boost::bind(&get_name_cb, _1, _2, inv_obj, dest, dest_agent));
}
return true;
}
// If an IM session with destination agent is found item offer will be logged in this session.
- show_item_sharing_confirmation(session->mName, inv_item, dest, dest_agent, session_id);
- }
- }
- else
- {
- // It's not in the user's inventory (it's probably
- // in an object's contents), so disallow dragging
- // it here. You can't give something you don't
- // yet have.
- *accept = ACCEPT_NO;
- }
- break;
- }
- case DAD_CATEGORY:
- {
- LLViewerInventoryCategory* inv_cat = (LLViewerInventoryCategory*)cargo_data;
- if( gInventory.getCategory( inv_cat->getUUID() ) )
- {
- // *TODO: get multiple object transfers working
- *accept = ACCEPT_YES_COPY_SINGLE;
- if(drop)
- {
- LLGiveInventory::doGiveInventoryCategory(dest_agent, inv_cat, session_id);
+ show_object_sharing_confirmation(session->mName, inv_obj, dest, dest_agent, session_id);
}
}
else
diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 1c362c18e0..a09a2739e8 100755
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -1671,17 +1671,7 @@ BOOL LLToolPie::handleRightClickPick()
{
name = node->mName;
}
- std::string mute_msg;
- if (LLMuteList::getInstance()->isMuted(object->getID(), name))
- {
- mute_msg = LLTrans::getString("UnmuteObject");
- }
- else
- {
- mute_msg = LLTrans::getString("MuteObject2");
- }
-
- gMenuHolder->getChild<LLUICtrl>("Object Mute")->setValue(mute_msg);
+
gMenuObject->show(x, y);
showVisualContextMenuEffect();
diff --git a/indra/newview/skins/default/xui/en/menu_object.xml b/indra/newview/skins/default/xui/en/menu_object.xml
index 52ab7da515..5c98a98d3d 100755
--- a/indra/newview/skins/default/xui/en/menu_object.xml
+++ b/indra/newview/skins/default/xui/en/menu_object.xml
@@ -130,17 +130,24 @@
function="Object.ReportAbuse" />
<menu_item_call.on_enable
function="Object.EnableReportAbuse" />
- </menu_item_call>
+ </menu_item_call>
<menu_item_call
- enabled="false"
- label="Block"
- name="Object Mute">
- <menu_item_call.on_click
+ label="Block"
+ name="Object Mute">
+ <menu_item_call.on_click
function="Object.Mute" />
- <menu_item_call.on_enable
+ <menu_item_call.on_visible
function="Object.EnableMute" />
</menu_item_call>
<menu_item_call
+ label="Unblock"
+ name="Object Unmute">
+ <menu_item_call.on_click
+ function="Object.Mute" />
+ <menu_item_call.on_visible
+ function="Object.EnableUnmute" />
+ </menu_item_call>
+ <menu_item_call
enabled="false"
label="Return"
name="Return...">
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 308acf0c0c..30239d6d01 100755
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -220,7 +220,7 @@
<layout_stack
border_size="0"
clip="false"
- follows="left|top|right"
+ follows="left|top"
height="50"
layout="topleft"
mouse_opaque="false"
@@ -251,10 +251,10 @@
</layout_panel>
<layout_panel
follows="left|right"
- height="60"
+ height="50"
layout="topleft"
min_height="50"
- min_width="60"
+ min_width="50"
mouse_opaque="false"
name="for_sale_panel"
top="0"
@@ -264,7 +264,7 @@
height="50"
image_name="ForSale_Badge"
layout="topleft"
- left="10"
+ left="0"
name="icon_for_sale"
top="0"
width="50" />
@@ -762,11 +762,19 @@
top_pad="5"
value="Rating:"
width="80" />
+ <icon
+ follows="top|left"
+ height="16"
+ image_name="Parcel_PG_Dark"
+ layout="topleft"
+ left_pad="0"
+ name="estate_rating_icon"
+ width="18" />
<text
follows="left|top|right"
height="15"
layout="topleft"
- left_pad="0"
+ left_pad="10"
name="estate_rating"
top_delta="0"
width="187" />