Merge viewer-lynx

master
Ansariel 2017-03-22 16:40:54 +01:00
commit f44edb205d
9 changed files with 99 additions and 15 deletions

View File

@ -1607,6 +1607,11 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
}
else if (mCameraMode == CAMERA_MODE_CUSTOMIZE_AVATAR)
{
LLVector3 focus_target = isAgentAvatarValid()
? gAgentAvatarp->mHeadp->getWorldPosition()
: gAgent.getPositionAgent();
LLVector3d focus_target_global = gAgent.getPosGlobalFromAgent(focus_target);
mFocusTargetGlobal = focus_target_global;
return mFocusTargetGlobal;
}
else if (!mFocusOnAvatar)

View File

@ -373,6 +373,11 @@ void LLBlockList::onCustomAction(const LLSD& userdata)
bool LLBlockList::isMenuItemChecked(const LLSD& userdata)
{
LLBlockedListItem* item = getBlockedItem();
if (!item)
{
return false;
}
const std::string command_name = userdata.asString();
if ("block_voice" == command_name)

View File

@ -30,6 +30,7 @@
#include "llfloateravatarrendersettings.h"
#include "llavatarnamecache.h"
#include "llfloateravatarpicker.h"
#include "llfiltereditor.h"
#include "llfloaterreg.h"
#include "llnamelistctrl.h"
@ -73,6 +74,7 @@ LLFloaterAvatarRenderSettings::LLFloaterAvatarRenderSettings(const LLSD& key)
{
mContextMenu = new LLSettingsContextMenu(this);
LLRenderMuteList::getInstance()->addObserver(&sAvatarRenderMuteListObserver);
mCommitCallbackRegistrar.add("Settings.AddNewEntry", boost::bind(&LLFloaterAvatarRenderSettings::onClickAdd, this, _2));
}
LLFloaterAvatarRenderSettings::~LLFloaterAvatarRenderSettings()
@ -86,12 +88,20 @@ BOOL LLFloaterAvatarRenderSettings::postBuild()
LLFloater::postBuild();
mAvatarSettingsList = getChild<LLNameListCtrl>("render_settings_list");
mAvatarSettingsList->setRightMouseDownCallback(boost::bind(&LLFloaterAvatarRenderSettings::onAvatarListRightClick, this, _1, _2, _3));
this->setVisibleCallback(boost::bind(&LLFloaterAvatarRenderSettings::removePicker, this));
getChild<LLFilterEditor>("people_filter_input")->setCommitCallback(boost::bind(&LLFloaterAvatarRenderSettings::onFilterEdit, this, _2));
return TRUE;
}
void LLFloaterAvatarRenderSettings::removePicker()
{
if(mPicker.get())
{
mPicker.get()->closeFloater();
}
}
void LLFloaterAvatarRenderSettings::draw()
{
if(mNeedsUpdate)
@ -187,15 +197,15 @@ void LLFloaterAvatarRenderSettings::onCustomAction (const LLSD& userdata, const
if ("default" == command_name)
{
new_setting = S32(LLVOAvatar::AV_RENDER_NORMALLY);
}
}
else if ("never" == command_name)
{
{
new_setting = S32(LLVOAvatar::AV_DO_NOT_RENDER);
}
else if ("always" == command_name)
{
{
new_setting = S32(LLVOAvatar::AV_ALWAYS_RENDER);
}
}
LLVOAvatar *avatarp = find_avatar(av_id);
if (avatarp)
@ -235,4 +245,45 @@ void LLFloaterAvatarRenderSettings::setNeedsUpdate()
if(!instance) return;
instance->mNeedsUpdate = true;
}
void LLFloaterAvatarRenderSettings::onClickAdd(const LLSD& userdata)
{
const std::string command_name = userdata.asString();
S32 visual_setting = 0;
if ("never" == command_name)
{
visual_setting = S32(LLVOAvatar::AV_DO_NOT_RENDER);
}
else if ("always" == command_name)
{
visual_setting = S32(LLVOAvatar::AV_ALWAYS_RENDER);
}
LLView * button = findChild<LLButton>("plus_btn", TRUE);
LLFloater* root_floater = gFloaterView->getParentFloater(this);
LLFloaterAvatarPicker * picker = LLFloaterAvatarPicker::show(boost::bind(&LLFloaterAvatarRenderSettings::callbackAvatarPicked, this, _1, visual_setting),
FALSE, TRUE, FALSE, root_floater->getName(), button);
if (root_floater)
{
root_floater->addDependentFloater(picker);
}
mPicker = picker->getHandle();
}
void LLFloaterAvatarRenderSettings::callbackAvatarPicked(const uuid_vec_t& ids, S32 visual_setting)
{
if (ids.empty()) return;
LLVOAvatar *avatarp = find_avatar(ids[0]);
if (avatarp)
{
avatarp->setVisualMuteSettings(LLVOAvatar::VisualMuteSettings(visual_setting));
}
else
{
LLRenderMuteList::getInstance()->saveVisualMuteSetting(ids[0], visual_setting);
}
}
#endif

View File

@ -52,15 +52,19 @@ public:
void onFilterEdit(const std::string& search_string);
void onCustomAction (const LLSD& userdata, const LLUUID& av_id);
bool isActionChecked(const LLSD& userdata, const LLUUID& av_id);
void onClickAdd(const LLSD& userdata);
static void setNeedsUpdate();
private:
bool isHiddenRow(const std::string& av_name);
void callbackAvatarPicked(const uuid_vec_t& ids, S32 visual_setting);
void removePicker();
bool mNeedsUpdate;
LLListContextMenu* mContextMenu;
LLNameListCtrl* mAvatarSettingsList;
LLHandle<LLFloater> mPicker;
std::string mNameFilter;
};

View File

@ -122,7 +122,6 @@ namespace {
{
// Prompt the user with the warning (so they know why things are failing)
LLSD subs;
subs["[ERROR_REASON]"] = reason;
// We do show long descriptions in the alert (unlikely to be readable). The description string will be in the log though.
std::string description;
if (result.has(LLCoreHttpUtil::HttpCoroutineAdapter::HTTP_RESULTS_CONTENT))
@ -146,6 +145,16 @@ namespace {
{
description = result.asString();
}
std::string reason_lc = reason;
LLStringUtil::toLower(reason_lc);
if (!description.empty() && reason_lc.find("unknown") != std::string::npos)
{
subs["[ERROR_REASON]"] = "";
}
else
{
subs["[ERROR_REASON]"] = "'" + reason +"'\n";
}
subs["[ERROR_DESCRIPTION]"] = description;
LLNotificationsUtil::add("MerchantTransactionFailed", subs);
}

View File

@ -23,22 +23,33 @@
height="23"
layout="topleft"
left="8"
right="-8"
right="-47"
label="Filter People"
max_length_chars="300"
name="people_filter_input"
text_color="Black"
text_pad_left="10"
top="4" />
<menu_button
follows="top|right"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="AddItem_Off"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left_pad="7"
menu_filename="menu_avatar_rendering_settings_add.xml"
menu_position="bottomleft"
name="plus_btn"
tool_tip="Actions on selected person"
top="3"
width="31" />
<name_list
allow_select="true"
bottom="-8"
draw_heading="true"
opaque="true"
follows="all"
left="8"
keep_selection_visible_on_reshape="true"
item_pad="2"
multi_select="false"
name="render_settings_list"
right="-8"

View File

@ -70,7 +70,7 @@
top="32"
word_wrap="true"
width="552">
You will need to go to my.secondlife.com and log in to accept the Terms of Service before you can proceed. Thank you!
You will need to go to https://my.secondlife.com and log in to accept the Terms of Service before you can proceed. Thank you!
</text>
<web_browser
trusted_content="true"

View File

@ -342,8 +342,7 @@ Initialization with the Marketplace failed because of a system or network error.
type="alertmodal">
The transaction with the Marketplace failed with the following error :
Reason : &apos;[ERROR_REASON]&apos;
[ERROR_DESCRIPTION]
[ERROR_REASON][ERROR_DESCRIPTION]
<usetemplate
name="okbutton"

View File

@ -2374,7 +2374,7 @@ Abuse Report</string>
<string name="server_is_down">
Despite our best efforts, something unexpected has gone wrong.
Please check status.secondlifegrid.net to see if there is a known problem with the service.
Please check http://status.secondlifegrid.net to see if there is a known problem with the service.
If you continue to experience problems, please check your network and firewall setup.
</string>