Automated merge with ssh://hg.lindenlab.com/richard/viewer-experience-merge
commit
ff5fe4ffc0
|
|
@ -106,6 +106,11 @@ std::string LLAvatarName::getCompleteName() const
|
|||
|
||||
std::string LLAvatarName::getLegacyName() const
|
||||
{
|
||||
if (mLegacyFirstName.empty() && mLegacyLastName.empty()) // display names disabled?
|
||||
{
|
||||
return mDisplayName;
|
||||
}
|
||||
|
||||
std::string name;
|
||||
name.reserve( mLegacyFirstName.size() + 1 + mLegacyLastName.size() );
|
||||
name = mLegacyFirstName;
|
||||
|
|
|
|||
|
|
@ -218,13 +218,13 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
|
|||
switch (valign)
|
||||
{
|
||||
case TOP:
|
||||
cur_y -= mFontFreetype->getAscenderHeight();
|
||||
cur_y -= getAscenderHeight();
|
||||
break;
|
||||
case BOTTOM:
|
||||
cur_y += mFontFreetype->getDescenderHeight();
|
||||
cur_y += getDescenderHeight();
|
||||
break;
|
||||
case VCENTER:
|
||||
cur_y -= (mFontFreetype->getAscenderHeight() - mFontFreetype->getDescenderHeight()) / 2.f;
|
||||
cur_y -= (getAscenderHeight() - getDescenderHeight()) / 2.f;
|
||||
break;
|
||||
case BASELINE:
|
||||
// Baseline, do nothing.
|
||||
|
|
@ -390,12 +390,12 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
|
|||
//FIXME: add underline as glyph?
|
||||
if (style_to_add & UNDERLINE)
|
||||
{
|
||||
F32 descender = mFontFreetype->getDescenderHeight();
|
||||
F32 descender = (F32)llfloor(mFontFreetype->getDescenderHeight());
|
||||
|
||||
gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE);
|
||||
gGL.begin(LLRender::LINES);
|
||||
gGL.vertex2f(start_x, cur_y - (descender));
|
||||
gGL.vertex2f(cur_x, cur_y - (descender));
|
||||
gGL.vertex2f(start_x, cur_y - descender);
|
||||
gGL.vertex2f(cur_x, cur_y - descender);
|
||||
gGL.end();
|
||||
}
|
||||
|
||||
|
|
@ -446,17 +446,17 @@ S32 LLFontGL::renderUTF8(const std::string &text, S32 begin_offset, S32 x, S32 y
|
|||
// font metrics - override for LLFontFreetype that returns units of virtual pixels
|
||||
F32 LLFontGL::getLineHeight() const
|
||||
{
|
||||
return (F32)llround(mFontFreetype->getLineHeight() / sScaleY);
|
||||
return (F32)llceil(mFontFreetype->getLineHeight() / sScaleY);
|
||||
}
|
||||
|
||||
F32 LLFontGL::getAscenderHeight() const
|
||||
{
|
||||
return (F32)llround(mFontFreetype->getAscenderHeight() / sScaleY);
|
||||
return (F32)llceil(mFontFreetype->getAscenderHeight() / sScaleY);
|
||||
}
|
||||
|
||||
F32 LLFontGL::getDescenderHeight() const
|
||||
{
|
||||
return (F32)llround(mFontFreetype->getDescenderHeight() / sScaleY);
|
||||
return (F32)llceil(mFontFreetype->getDescenderHeight() / sScaleY);
|
||||
}
|
||||
|
||||
S32 LLFontGL::getWidth(const std::string& utf8text) const
|
||||
|
|
|
|||
|
|
@ -1681,6 +1681,8 @@ LLFloater* LLFloater::getClosableFloaterFromFocus()
|
|||
{
|
||||
if (it->hasFocus())
|
||||
{
|
||||
LLFloater& floater = *it;
|
||||
focused_floater = &floater;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -508,19 +508,19 @@ void LLMenuItemGL::draw( void )
|
|||
{
|
||||
if( !mDrawBoolLabel.empty() )
|
||||
{
|
||||
mFont->render( mDrawBoolLabel.getWString(), 0, (F32)LEFT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color,
|
||||
mFont->render( mDrawBoolLabel.getWString(), 0, (F32)LEFT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,
|
||||
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
|
||||
}
|
||||
mFont->render( mLabel.getWString(), 0, (F32)LEFT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color,
|
||||
mFont->render( mLabel.getWString(), 0, (F32)LEFT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,
|
||||
LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
|
||||
if( !mDrawAccelLabel.empty() )
|
||||
{
|
||||
mFont->render( mDrawAccelLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color,
|
||||
mFont->render( mDrawAccelLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PLAIN_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,
|
||||
LLFontGL::RIGHT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
|
||||
}
|
||||
if( !mDrawBranchLabel.empty() )
|
||||
{
|
||||
mFont->render( mDrawBranchLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f) + 1.f, color,
|
||||
mFont->render( mDrawBranchLabel.getWString(), 0, (F32)getRect().mRight - (F32)RIGHT_PAD_PIXELS, ((F32)MENU_ITEM_PADDING / 2.f), color,
|
||||
LLFontGL::RIGHT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, NULL, FALSE );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1412,6 +1412,7 @@ void addPathIfExists(const std::string& new_path, std::vector<std::string>& path
|
|||
|
||||
bool LLNotifications::loadTemplates()
|
||||
{
|
||||
llinfos << "Reading notifications template" << llendl;
|
||||
std::vector<std::string> search_paths;
|
||||
|
||||
std::string skin_relative_path = gDirUtilp->getDirDelimiter() + LLUI::getSkinPath() + gDirUtilp->getDirDelimiter() + "notifications.xml";
|
||||
|
|
@ -1484,6 +1485,8 @@ bool LLNotifications::loadTemplates()
|
|||
mTemplates[notification.name] = LLNotificationTemplatePtr(new LLNotificationTemplate(notification));
|
||||
}
|
||||
|
||||
llinfos << "...done" << llendl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -329,7 +329,7 @@ void LLScrollListText::draw(const LLColor4& color, const LLColor4& highlight_col
|
|||
break;
|
||||
}
|
||||
mFont->render(mText.getWString(), 0,
|
||||
start_x, 2.f,
|
||||
start_x, 0.f,
|
||||
display_color,
|
||||
mFontAlignment,
|
||||
LLFontGL::BOTTOM,
|
||||
|
|
|
|||
|
|
@ -128,17 +128,13 @@ void LLUIString::updateResult() const
|
|||
}
|
||||
mResult = mOrig;
|
||||
|
||||
// get the defailt args + local args
|
||||
if (!mArgs || mArgs->empty())
|
||||
// get the default args + local args
|
||||
LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs();
|
||||
if (mArgs && !mArgs->empty())
|
||||
{
|
||||
LLStringUtil::format(mResult, LLTrans::getDefaultArgs());
|
||||
}
|
||||
else
|
||||
{
|
||||
LLStringUtil::format_map_t combined_args = LLTrans::getDefaultArgs();
|
||||
combined_args.insert(mArgs->begin(), mArgs->end());
|
||||
LLStringUtil::format(mResult, combined_args);
|
||||
}
|
||||
LLStringUtil::format(mResult, combined_args);
|
||||
}
|
||||
|
||||
void LLUIString::updateWResult() const
|
||||
|
|
|
|||
|
|
@ -631,13 +631,14 @@ bool LLXMLNode::updateNode(
|
|||
}
|
||||
|
||||
//update all of node's children with updateNodes children that match name
|
||||
LLXMLNodePtr child;
|
||||
LLXMLNodePtr child = node->getFirstChild();
|
||||
LLXMLNodePtr last_child = child;
|
||||
LLXMLNodePtr updateChild;
|
||||
|
||||
for (updateChild = update_node->getFirstChild(); updateChild.notNull();
|
||||
updateChild = updateChild->getNextSibling())
|
||||
{
|
||||
for (child = node->getFirstChild(); child.notNull(); child = child->getNextSibling())
|
||||
while(child.notNull())
|
||||
{
|
||||
std::string nodeName;
|
||||
std::string updateName;
|
||||
|
|
@ -656,6 +657,22 @@ bool LLXMLNode::updateNode(
|
|||
if ((nodeName != "") && (updateName == nodeName))
|
||||
{
|
||||
updateNode(child, updateChild);
|
||||
last_child = child;
|
||||
child = child->getNextSibling();
|
||||
if (child.isNull())
|
||||
{
|
||||
child = node->getFirstChild();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
child = child->getNextSibling();
|
||||
if (child.isNull())
|
||||
{
|
||||
child = node->getFirstChild();
|
||||
}
|
||||
if (child == last_child)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -882,11 +899,8 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,
|
|||
|
||||
for (itor = paths.begin(), ++itor; itor != paths.end(); ++itor)
|
||||
{
|
||||
std::string nodeName;
|
||||
std::string updateName;
|
||||
|
||||
std::string layer_filename = *itor;
|
||||
if(layer_filename.empty())
|
||||
if(layer_filename.empty() || layer_filename == filename)
|
||||
{
|
||||
// no localized version of this file, that's ok, keep looking
|
||||
continue;
|
||||
|
|
@ -898,6 +912,9 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,
|
|||
return false;
|
||||
}
|
||||
|
||||
std::string nodeName;
|
||||
std::string updateName;
|
||||
|
||||
updateRoot->getAttributeString("name", updateName);
|
||||
root->getAttributeString("name", nodeName);
|
||||
|
||||
|
|
|
|||
|
|
@ -1253,15 +1253,16 @@ namespace LLInitParam
|
|||
return mValues.back();
|
||||
}
|
||||
|
||||
void add(const value_t& item)
|
||||
self_t& add(const value_t& item)
|
||||
{
|
||||
param_value_t param_value;
|
||||
param_value.setValue(item);
|
||||
mValues.push_back(param_value);
|
||||
setProvided();
|
||||
return *this;
|
||||
}
|
||||
|
||||
void add(const typename name_value_lookup_t::name_t& name)
|
||||
self_t& add(const typename name_value_lookup_t::name_t& name)
|
||||
{
|
||||
value_t value;
|
||||
|
||||
|
|
@ -1271,6 +1272,8 @@ namespace LLInitParam
|
|||
add(value);
|
||||
mValues.back().setValueName(name);
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
// implicit conversion
|
||||
|
|
@ -1441,13 +1444,14 @@ namespace LLInitParam
|
|||
return mValues.back();
|
||||
}
|
||||
|
||||
void add(const value_t& item)
|
||||
self_t& add(const value_t& item)
|
||||
{
|
||||
mValues.push_back(item);
|
||||
setProvided();
|
||||
return *this;
|
||||
}
|
||||
|
||||
void add(const typename name_value_lookup_t::name_t& name)
|
||||
self_t& add(const typename name_value_lookup_t::name_t& name)
|
||||
{
|
||||
value_t value;
|
||||
|
||||
|
|
@ -1457,6 +1461,7 @@ namespace LLInitParam
|
|||
add(value);
|
||||
mValues.back().setValueName(name);
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
// implicit conversion
|
||||
|
|
|
|||
|
|
@ -4259,6 +4259,17 @@
|
|||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>InventoryInboxToggleState</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Stores the open/closed state of inventory Received items panel</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>Boolean</string>
|
||||
<key>Value</key>
|
||||
<integer>0</integer>
|
||||
</map>
|
||||
<key>InventoryLinking</key>
|
||||
<map>
|
||||
|
|
|
|||
|
|
@ -816,7 +816,10 @@ void LLAgentWearables::popWearable(const LLWearableType::EType type, U32 index)
|
|||
if (wearable)
|
||||
{
|
||||
mWearableDatas[type].erase(mWearableDatas[type].begin() + index);
|
||||
gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);
|
||||
if (isAgentAvatarValid())
|
||||
{
|
||||
gAgentAvatarp->wearableUpdated(wearable->getType(), TRUE);
|
||||
}
|
||||
wearable->setLabelUpdated();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1073,8 +1073,11 @@ void LLFilePicker::chooser_responder(GtkWidget *widget, gint response, gpointer
|
|||
}
|
||||
|
||||
// set the default path for this usage context.
|
||||
picker->mContextToPathMap[picker->mCurContextName] =
|
||||
gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
|
||||
const char* cur_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(widget));
|
||||
if (cur_folder != NULL)
|
||||
{
|
||||
picker->mContextToPathMap[picker->mCurContextName] = cur_folder;
|
||||
}
|
||||
|
||||
gtk_widget_destroy(widget);
|
||||
gtk_main_quit();
|
||||
|
|
|
|||
|
|
@ -41,13 +41,9 @@
|
|||
// Methods
|
||||
//
|
||||
|
||||
void commit_grid_mode(LLUICtrl *);
|
||||
|
||||
LLFloaterBuildOptions::LLFloaterBuildOptions(const LLSD& key)
|
||||
: LLFloater(key),
|
||||
mComboGridMode(NULL)
|
||||
: LLFloater(key)
|
||||
{
|
||||
mCommitCallbackRegistrar.add("GridOptions.gridMode", boost::bind(&commit_grid_mode,_1));
|
||||
}
|
||||
|
||||
LLFloaterBuildOptions::~LLFloaterBuildOptions()
|
||||
|
|
@ -55,45 +51,9 @@ LLFloaterBuildOptions::~LLFloaterBuildOptions()
|
|||
|
||||
BOOL LLFloaterBuildOptions::postBuild()
|
||||
{
|
||||
mComboGridMode = getChild<LLComboBox>("combobox grid mode");
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void LLFloaterBuildOptions::setGridMode(EGridMode mode)
|
||||
{
|
||||
mComboGridMode->setCurrentByIndex((S32)mode);
|
||||
}
|
||||
|
||||
void LLFloaterBuildOptions::updateGridMode()
|
||||
{
|
||||
if (mComboGridMode)
|
||||
{
|
||||
S32 index = mComboGridMode->getCurrentIndex();
|
||||
mComboGridMode->removeall();
|
||||
|
||||
switch (mObjectSelection->getSelectType())
|
||||
{
|
||||
case SELECT_TYPE_HUD:
|
||||
mComboGridMode->add(getString("grid_screen_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
break;
|
||||
case SELECT_TYPE_WORLD:
|
||||
mComboGridMode->add(getString("grid_world_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
mComboGridMode->add(getString("grid_reference_text"));
|
||||
break;
|
||||
case SELECT_TYPE_ATTACHMENT:
|
||||
mComboGridMode->add(getString("grid_attachment_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
mComboGridMode->add(getString("grid_reference_text"));
|
||||
break;
|
||||
}
|
||||
|
||||
mComboGridMode->setCurrentByIndex(index);
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLFloaterBuildOptions::onOpen(const LLSD& key)
|
||||
{
|
||||
|
|
@ -105,10 +65,3 @@ void LLFloaterBuildOptions::onClose(bool app_quitting)
|
|||
{
|
||||
mObjectSelection = NULL;
|
||||
}
|
||||
|
||||
void commit_grid_mode(LLUICtrl *ctrl)
|
||||
{
|
||||
LLComboBox* combo = (LLComboBox*)ctrl;
|
||||
|
||||
LLSelectMgr::getInstance()->setGridMode((EGridMode)combo->getCurrentIndex());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@
|
|||
#include "llfloater.h"
|
||||
#include "llselectmgr.h"
|
||||
|
||||
class LLComboBox;
|
||||
class LLObjectSelection;
|
||||
|
||||
typedef LLSafeHandle<LLObjectSelection> LLObjectSelectionHandle;
|
||||
|
|
@ -44,23 +43,17 @@ class LLFloaterBuildOptions
|
|||
: public LLFloater
|
||||
{
|
||||
public:
|
||||
|
||||
virtual BOOL postBuild();
|
||||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
/*virtual*/ void onClose(bool app_quitting);
|
||||
|
||||
void setGridMode(EGridMode mode);
|
||||
void updateGridMode();
|
||||
|
||||
private:
|
||||
|
||||
friend class LLFloaterReg;
|
||||
|
||||
LLFloaterBuildOptions(const LLSD& key);
|
||||
~LLFloaterBuildOptions();
|
||||
|
||||
LLComboBox* mComboGridMode;
|
||||
LLObjectSelectionHandle mObjectSelection;
|
||||
};
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -312,3 +312,9 @@ bool LLFloaterMediaSettings::haveValuesChanged() const
|
|||
return values_changed;
|
||||
}
|
||||
|
||||
bool LLFloaterMediaSettings::instanceExists()
|
||||
{
|
||||
return LLFloaterReg::findTypedInstance<LLFloaterMediaSettings>("media_settings");
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ public:
|
|||
/*virtual*/ void onClose(bool app_quitting);
|
||||
|
||||
static LLFloaterMediaSettings* getInstance();
|
||||
static bool instanceExists();
|
||||
static void apply();
|
||||
static void initValues( const LLSD& media_settings , bool editable);
|
||||
static void clearValues( bool editable);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@
|
|||
#include "llagentcamera.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcheckboxctrl.h"
|
||||
#include "llcombobox.h"
|
||||
#include "lldraghandle.h"
|
||||
#include "llerror.h"
|
||||
#include "llfloaterbuildoptions.h"
|
||||
|
|
@ -103,6 +104,7 @@ const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =
|
|||
|
||||
|
||||
// Local prototypes
|
||||
void commit_grid_mode(LLUICtrl *ctrl);
|
||||
void commit_select_component(void *data);
|
||||
void click_show_more(void*);
|
||||
void click_popup_info(void*);
|
||||
|
|
@ -252,6 +254,7 @@ BOOL LLFloaterTools::postBuild()
|
|||
getChild<LLUICtrl>("checkbox uniform")->setValue((BOOL)gSavedSettings.getBOOL("ScaleUniform"));
|
||||
mCheckStretchTexture = getChild<LLCheckBoxCtrl>("checkbox stretch textures");
|
||||
getChild<LLUICtrl>("checkbox stretch textures")->setValue((BOOL)gSavedSettings.getBOOL("ScaleStretchTextures"));
|
||||
mComboGridMode = getChild<LLComboBox>("combobox grid mode");
|
||||
mCheckStretchUniformLabel = getChild<LLTextBox>("checkbox uniform label");
|
||||
|
||||
//
|
||||
|
|
@ -330,6 +333,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
|
|||
mCheckSnapToGrid(NULL),
|
||||
mBtnGridOptions(NULL),
|
||||
mTitleMedia(NULL),
|
||||
mComboGridMode(NULL),
|
||||
mCheckStretchUniform(NULL),
|
||||
mCheckStretchTexture(NULL),
|
||||
mCheckStretchUniformLabel(NULL),
|
||||
|
|
@ -386,6 +390,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key)
|
|||
mCommitCallbackRegistrar.add("BuildTool.commitRadioMove", boost::bind(&commit_radio_group_move,_1));
|
||||
mCommitCallbackRegistrar.add("BuildTool.commitRadioEdit", boost::bind(&commit_radio_group_edit,_1));
|
||||
|
||||
mCommitCallbackRegistrar.add("BuildTool.gridMode", boost::bind(&commit_grid_mode,_1));
|
||||
mCommitCallbackRegistrar.add("BuildTool.selectComponent", boost::bind(&commit_select_component, this));
|
||||
mCommitCallbackRegistrar.add("BuildTool.gridOptions", boost::bind(&LLFloaterTools::onClickGridOptions,this));
|
||||
mCommitCallbackRegistrar.add("BuildTool.applyToSelection", boost::bind(&click_apply_to_selection, this));
|
||||
|
|
@ -687,6 +692,33 @@ void LLFloaterTools::updatePopup(LLCoordGL center, MASK mask)
|
|||
mRadioGroupEdit->setValue("radio select face");
|
||||
}
|
||||
|
||||
if (mComboGridMode)
|
||||
{
|
||||
mComboGridMode->setVisible( edit_visible );
|
||||
S32 index = mComboGridMode->getCurrentIndex();
|
||||
mComboGridMode->removeall();
|
||||
|
||||
switch (mObjectSelection->getSelectType())
|
||||
{
|
||||
case SELECT_TYPE_HUD:
|
||||
mComboGridMode->add(getString("grid_screen_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
break;
|
||||
case SELECT_TYPE_WORLD:
|
||||
mComboGridMode->add(getString("grid_world_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
mComboGridMode->add(getString("grid_reference_text"));
|
||||
break;
|
||||
case SELECT_TYPE_ATTACHMENT:
|
||||
mComboGridMode->add(getString("grid_attachment_text"));
|
||||
mComboGridMode->add(getString("grid_local_text"));
|
||||
mComboGridMode->add(getString("grid_reference_text"));
|
||||
break;
|
||||
}
|
||||
|
||||
mComboGridMode->setCurrentByIndex(index);
|
||||
}
|
||||
|
||||
// Snap to grid disabled for grab tool - very confusing
|
||||
if (mCheckSnapToGrid) mCheckSnapToGrid->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ );
|
||||
if (mBtnGridOptions) mBtnGridOptions->setVisible( edit_visible /* || tool == LLToolGrab::getInstance() */ );
|
||||
|
|
@ -1037,6 +1069,13 @@ void LLFloaterTools::setObjectType( LLPCode pcode )
|
|||
gFocusMgr.setMouseCapture(NULL);
|
||||
}
|
||||
|
||||
void commit_grid_mode(LLUICtrl *ctrl)
|
||||
{
|
||||
LLComboBox* combo = (LLComboBox*)ctrl;
|
||||
|
||||
LLSelectMgr::getInstance()->setGridMode((EGridMode)combo->getCurrentIndex());
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterTools::onClickGridOptions()
|
||||
{
|
||||
|
|
@ -1144,7 +1183,7 @@ void LLFloaterTools::updateLandImpacts()
|
|||
childSetTextArg("remaining_capacity", "[CAPACITY_STRING]", remaining_capacity_str);
|
||||
|
||||
// Update land impacts info in the weights floater
|
||||
LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::getTypedInstance<LLFloaterObjectWeights>("object_weights");
|
||||
LLFloaterObjectWeights* object_weights_floater = LLFloaterReg::findTypedInstance<LLFloaterObjectWeights>("object_weights");
|
||||
if(object_weights_floater)
|
||||
{
|
||||
object_weights_floater->updateLandImpacts(parcel);
|
||||
|
|
@ -1153,6 +1192,8 @@ void LLFloaterTools::updateLandImpacts()
|
|||
|
||||
void LLFloaterTools::getMediaState()
|
||||
{
|
||||
if (!LLFloaterMediaSettings::instanceExists()) return;
|
||||
|
||||
LLObjectSelectionHandle selected_objects =LLSelectMgr::getInstance()->getSelection();
|
||||
LLViewerObject* first_object = selected_objects->getFirstObject();
|
||||
LLTextBox* media_info = getChild<LLTextBox>("media_info");
|
||||
|
|
@ -1234,6 +1275,7 @@ void LLFloaterTools::getMediaState()
|
|||
}
|
||||
} func;
|
||||
|
||||
|
||||
// check if all faces have media(or, all dont have media)
|
||||
LLFloaterMediaSettings::getInstance()->mIdenticalHasMediaInfo = selected_objects->getSelectedTEValue( &func, bool_has_media );
|
||||
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@
|
|||
|
||||
class LLButton;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLComboBox;
|
||||
class LLPanelPermissions;
|
||||
class LLPanelObject;
|
||||
class LLPanelVolume;
|
||||
|
|
@ -140,6 +141,7 @@ public:
|
|||
|
||||
LLCheckBoxCtrl* mCheckSnapToGrid;
|
||||
LLButton* mBtnGridOptions;
|
||||
LLComboBox* mComboGridMode;
|
||||
LLCheckBoxCtrl* mCheckStretchUniform;
|
||||
LLCheckBoxCtrl* mCheckStretchTexture;
|
||||
|
||||
|
|
|
|||
|
|
@ -293,6 +293,6 @@ void LLFloaterTranslationSettings::onBtnOK()
|
|||
gSavedSettings.setString("TranslationService", getSelectedService());
|
||||
gSavedSettings.setString("BingTranslateAPIKey", getEnteredBingKey());
|
||||
gSavedSettings.setString("GoogleTranslateAPIKey", getEnteredGoogleKey());
|
||||
LLNearbyChatBar::getInstance()->enableTranslationCheckbox(LLTranslate::isTranslationConfigured());
|
||||
LLNearbyChatBar::getInstance()->showTranslationCheckbox(LLTranslate::isTranslationConfigured());
|
||||
closeFloater(false);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -423,7 +423,7 @@ S32 LLFolderViewItem::arrange( S32* width, S32* height, S32 filter_generation)
|
|||
: 0;
|
||||
if (mLabelWidthDirty)
|
||||
{
|
||||
mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + getLabelFontForStyle(mLabelStyle)->getWidth(mSearchableLabel);
|
||||
mLabelWidth = ARROW_SIZE + TEXT_PAD + ICON_WIDTH + ICON_PAD + getLabelFontForStyle(mLabelStyle)->getWidth(mLabel) + getLabelFontForStyle(mLabelStyle)->getWidth(mLabelSuffix);
|
||||
mLabelWidthDirty = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -123,6 +123,22 @@ BOOL LLGroupList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
|||
return handled;
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLGroupList::handleDoubleClick(S32 x, S32 y, MASK mask)
|
||||
{
|
||||
BOOL handled = LLView::handleDoubleClick(x, y, mask);
|
||||
// Handle double click only for the selected item in the list, skip clicks on empty space.
|
||||
if (handled)
|
||||
{
|
||||
if (mDoubleClickSignal)
|
||||
{
|
||||
(*mDoubleClickSignal)(this, x, y, mask);
|
||||
}
|
||||
}
|
||||
|
||||
return handled;
|
||||
}
|
||||
|
||||
void LLGroupList::setNameFilter(const std::string& filter)
|
||||
{
|
||||
std::string filter_upper = filter;
|
||||
|
|
|
|||
|
|
@ -51,6 +51,7 @@ public:
|
|||
|
||||
virtual void draw(); // from LLView
|
||||
/*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); // from LLView
|
||||
/*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); // from LLView
|
||||
|
||||
void setNameFilter(const std::string& filter);
|
||||
void toggleIcons();
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ void hud_render_text(const LLWString &wstr, const LLVector3 &pos_agent,
|
|||
LLUI::translate((F32) winX*1.0f/LLFontGL::sScaleX, (F32) winY*1.0f/(LLFontGL::sScaleY), -(((F32) winZ*2.f)-1.f));
|
||||
F32 right_x;
|
||||
|
||||
font.render(wstr, 0, 0, 0, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x);
|
||||
font.render(wstr, 0, 0, 1, color, LLFontGL::LEFT, LLFontGL::BASELINE, style, shadow, wstr.length(), 1000, &right_x);
|
||||
|
||||
LLUI::popMatrix();
|
||||
gGL.popMatrix();
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ void LLHUDText::renderText()
|
|||
segment_iter != mTextSegments.end(); ++segment_iter )
|
||||
{
|
||||
const LLFontGL* fontp = segment_iter->mFont;
|
||||
y_offset -= fontp->getLineHeight();
|
||||
y_offset -= fontp->getLineHeight() - 1; // correction factor to match legacy font metrics
|
||||
|
||||
U8 style = segment_iter->mStyle;
|
||||
LLFontGL::ShadowType shadow = LLFontGL::DROP_SHADOW;
|
||||
|
|
@ -480,8 +480,6 @@ void LLHUDText::updateSize()
|
|||
F32 width = 0.f;
|
||||
|
||||
S32 max_lines = getMaxLines();
|
||||
//S32 lines = (max_lines < 0) ? (S32)mTextSegments.size() : llmin((S32)mTextSegments.size(), max_lines);
|
||||
//F32 height = (F32)mFontp->getLineHeight() * (lines + mLabelSegments.size());
|
||||
|
||||
S32 start_segment;
|
||||
if (max_lines < 0) start_segment = 0;
|
||||
|
|
@ -491,7 +489,7 @@ void LLHUDText::updateSize()
|
|||
while (iter != mTextSegments.end())
|
||||
{
|
||||
const LLFontGL* fontp = iter->mFont;
|
||||
height += fontp->getLineHeight();
|
||||
height += fontp->getLineHeight() - 1; // correction factor to match legacy font metrics
|
||||
width = llmax(width, llmin(iter->getWidth(fontp), HUD_TEXT_MAX_WIDTH));
|
||||
++iter;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2977,6 +2977,17 @@ bool LLIMMgr::isVoiceCall(const LLUUID& session_id)
|
|||
return im_session->mStartedAsIMCall;
|
||||
}
|
||||
|
||||
void LLIMMgr::addNotifiedNonFriendSessionID(const LLUUID& session_id)
|
||||
{
|
||||
mNotifiedNonFriendSessions.insert(session_id);
|
||||
}
|
||||
|
||||
bool LLIMMgr::isNonFriendSessionNotified(const LLUUID& session_id)
|
||||
{
|
||||
return mNotifiedNonFriendSessions.end() != mNotifiedNonFriendSessions.find(session_id);
|
||||
|
||||
}
|
||||
|
||||
void LLIMMgr::noteOfflineUsers(
|
||||
const LLUUID& session_id,
|
||||
const LLDynamicArray<LLUUID>& ids)
|
||||
|
|
|
|||
|
|
@ -438,6 +438,10 @@ public:
|
|||
|
||||
bool isVoiceCall(const LLUUID& session_id);
|
||||
|
||||
void addNotifiedNonFriendSessionID(const LLUUID& session_id);
|
||||
|
||||
bool isNonFriendSessionNotified(const LLUUID& session_id);
|
||||
|
||||
private:
|
||||
|
||||
/**
|
||||
|
|
@ -465,6 +469,14 @@ private:
|
|||
typedef std::list <LLIMSessionObserver *> session_observers_list_t;
|
||||
session_observers_list_t mSessionObservers;
|
||||
|
||||
// EXP-901
|
||||
// If "Only friends and groups can IM me" option is ON but the user got message from non-friend,
|
||||
// the user should be notified that to be able to see this message the option should be OFF.
|
||||
// This set stores session IDs in which user was notified. Need to store this IDs so that the user
|
||||
// be notified only one time per session with non-friend.
|
||||
typedef std::set<LLUUID> notified_non_friend_sessions_t;
|
||||
notified_non_friend_sessions_t mNotifiedNonFriendSessions;
|
||||
|
||||
LLSD mPendingInvitations;
|
||||
LLSD mPendingAgentListUpdates;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ BOOL LLNearbyChatBar::postBuild()
|
|||
// virtual
|
||||
void LLNearbyChatBar::onOpen(const LLSD& key)
|
||||
{
|
||||
enableTranslationCheckbox(LLTranslate::isTranslationConfigured());
|
||||
showTranslationCheckbox(LLTranslate::isTranslationConfigured());
|
||||
}
|
||||
|
||||
bool LLNearbyChatBar::applyRectControl()
|
||||
|
|
@ -170,9 +170,9 @@ void LLNearbyChatBar::showHistory()
|
|||
}
|
||||
}
|
||||
|
||||
void LLNearbyChatBar::enableTranslationCheckbox(BOOL enable)
|
||||
void LLNearbyChatBar::showTranslationCheckbox(BOOL show)
|
||||
{
|
||||
getChild<LLUICtrl>("translate_chat_checkbox")->setEnabled(enable);
|
||||
getChild<LLUICtrl>("translate_chat_checkbox_lp")->setVisible(show);
|
||||
}
|
||||
|
||||
void LLNearbyChatBar::draw()
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ public:
|
|||
static void sendChatFromViewer(const LLWString &wtext, EChatType type, BOOL animate);
|
||||
|
||||
void showHistory();
|
||||
void enableTranslationCheckbox(BOOL enable);
|
||||
void showTranslationCheckbox(BOOL show);
|
||||
/*virtual*/void setMinimized(BOOL b);
|
||||
|
||||
protected:
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@
|
|||
#include "llnotifications.h"
|
||||
|
||||
#include <boost/bind.hpp>
|
||||
#include <boost/foreach.hpp>
|
||||
|
||||
using namespace LLNotificationsUI;
|
||||
|
||||
|
|
@ -48,6 +49,10 @@ LLNotificationManager::LLNotificationManager()
|
|||
//--------------------------------------------------------------------------
|
||||
LLNotificationManager::~LLNotificationManager()
|
||||
{
|
||||
BOOST_FOREACH(listener_pair_t& pair, mChannelListeners)
|
||||
{
|
||||
pair.second.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -64,16 +69,16 @@ void LLNotificationManager::init()
|
|||
LLNotificationChannel::buildChannel("Browser", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "browser"));
|
||||
LLNotificationChannel::buildChannel("Outbox", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "outbox"));
|
||||
|
||||
LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1));
|
||||
LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1));
|
||||
LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1));
|
||||
mChannelListeners["Notifications"] = LLNotifications::instance().getChannel("Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["NotificationTips"] = LLNotifications::instance().getChannel("NotificationTips")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["Group Notifications"] = LLNotifications::instance().getChannel("Group Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["Alerts"] = LLNotifications::instance().getChannel("Alerts")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["AlertModal"] = LLNotifications::instance().getChannel("AlertModal")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["IM Notifications"] = LLNotifications::instance().getChannel("IM Notifications")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["Offer"] = LLNotifications::instance().getChannel("Offer")->connectChanged(boost::bind(&LLNotificationManager::onNotification, this, _1));
|
||||
mChannelListeners["Hints"] = LLNotifications::instance().getChannel("Hints")->connectChanged(boost::bind(&LLHintHandler::processNotification, LLHintHandler::getInstance(), _1));
|
||||
mChannelListeners["Browser"] = LLNotifications::instance().getChannel("Browser")->connectChanged(boost::bind(&LLBrowserNotification::processNotification, LLBrowserNotification::getInstance(), _1));
|
||||
mChannelListeners["Outbox"] = LLNotifications::instance().getChannel("Outbox")->connectChanged(boost::bind(&LLOutboxNotification::processNotification, LLOutboxNotification::getInstance(), _1));
|
||||
|
||||
mNotifyHandlers["notify"] = boost::shared_ptr<LLEventHandler>(new LLScriptHandler(NT_NOTIFY, LLSD()));
|
||||
mNotifyHandlers["notifytip"] = boost::shared_ptr<LLEventHandler>(new LLTipHandler(NT_NOTIFY, LLSD()));
|
||||
|
|
@ -92,6 +97,9 @@ bool LLNotificationManager::onNotification(const LLSD& notify)
|
|||
{
|
||||
LLSysHandler* handle = NULL;
|
||||
|
||||
if (LLNotifications::destroyed())
|
||||
return false;
|
||||
|
||||
LLNotificationPtr notification = LLNotifications::instance().find(notify["id"].asUUID());
|
||||
|
||||
if (!notification)
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@
|
|||
#ifndef LL_LLNOTIFICATIONMANAGER_H
|
||||
#define LL_LLNOTIFICATIONMANAGER_H
|
||||
|
||||
#include "llevents.h"
|
||||
|
||||
#include "lluictrl.h"
|
||||
#include "llnotificationhandler.h"
|
||||
|
||||
|
|
@ -47,6 +49,7 @@ class LLToast;
|
|||
class LLNotificationManager : public LLSingleton<LLNotificationManager>
|
||||
{
|
||||
typedef std::pair<std::string, LLEventHandler*> eventhandlers;
|
||||
typedef std::pair<const std::string, LLBoundListener> listener_pair_t;
|
||||
public:
|
||||
LLNotificationManager();
|
||||
virtual ~LLNotificationManager();
|
||||
|
|
@ -70,6 +73,8 @@ private:
|
|||
//TODO (*)
|
||||
std::map<std::string, boost::shared_ptr<LLEventHandler> > mNotifyHandlers;
|
||||
// cruft std::map<std::string, LLChatHandler*> mChatHandlers;
|
||||
|
||||
std::map<std::string, LLBoundListener> mChannelListeners;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -875,8 +875,15 @@ void LLPanelFace::getState()
|
|||
{
|
||||
getChild<LLUICtrl>("TexScaleU")->setValue(2.0f * getChild<LLUICtrl>("TexScaleU")->getValue().asReal() );
|
||||
getChild<LLUICtrl>("TexScaleV")->setValue(2.0f * getChild<LLUICtrl>("TexScaleV")->getValue().asReal() );
|
||||
}
|
||||
|
||||
// EXP-1507 (change label based on the mapping mode)
|
||||
getChild<LLUICtrl>("rpt")->setValue(getString("string repeats per meter"));
|
||||
}
|
||||
else
|
||||
if (selected_texgen == 0) // FIXME: should not be magic numbers
|
||||
{
|
||||
getChild<LLUICtrl>("rpt")->setValue(getString("string repeats per face"));
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -749,7 +749,10 @@ LLPanelGroupMembersSubTab::LLPanelGroupMembersSubTab()
|
|||
|
||||
LLPanelGroupMembersSubTab::~LLPanelGroupMembersSubTab()
|
||||
{
|
||||
gSavedSettings.setString("GroupMembersSortOrder", mMembersList->getSortColumnName());
|
||||
if (mMembersList)
|
||||
{
|
||||
gSavedSettings.setString("GroupMembersSortOrder", mMembersList->getSortColumnName());
|
||||
}
|
||||
}
|
||||
|
||||
BOOL LLPanelGroupMembersSubTab::postBuildSubTab(LLView* root)
|
||||
|
|
|
|||
|
|
@ -216,6 +216,7 @@ void LLPanelLogin::addUsersWithFavoritesToUsername()
|
|||
|
||||
void LLPanelLogin::addFavoritesToStartLocation()
|
||||
{
|
||||
// Clear the combo.
|
||||
LLComboBox* combo = getChild<LLComboBox>("start_location_combo");
|
||||
if (!combo) return;
|
||||
int num_items = combo->getItemCount();
|
||||
|
|
@ -223,6 +224,10 @@ void LLPanelLogin::addFavoritesToStartLocation()
|
|||
{
|
||||
combo->remove(i);
|
||||
}
|
||||
|
||||
// Load favorites into the combo.
|
||||
std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple();
|
||||
std::string canonical_user_name = canonicalize_username(user_defined_name);
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml");
|
||||
LLSD fav_llsd;
|
||||
llifstream file;
|
||||
|
|
@ -232,15 +237,18 @@ void LLPanelLogin::addFavoritesToStartLocation()
|
|||
for (LLSD::map_const_iterator iter = fav_llsd.beginMap();
|
||||
iter != fav_llsd.endMap(); ++iter)
|
||||
{
|
||||
std::string user_defined_name = getChild<LLComboBox>("username_combo")->getSimple();
|
||||
|
||||
// The account name in stored_favorites.xml has Resident last name even if user has
|
||||
// a single word account name, so it can be compared case-insensitive with the
|
||||
// user defined "firstname lastname".
|
||||
S32 res = LLStringUtil::compareInsensitive(canonicalize_username(user_defined_name), iter->first);
|
||||
if (res != 0) continue;
|
||||
S32 res = LLStringUtil::compareInsensitive(canonical_user_name, iter->first);
|
||||
if (res != 0)
|
||||
{
|
||||
lldebugs << "Skipping favorites for " << iter->first << llendl;
|
||||
continue;
|
||||
}
|
||||
|
||||
combo->addSeparator();
|
||||
lldebugs << "Loading favorites for " << iter->first << llendl;
|
||||
LLSD user_llsd = iter->second;
|
||||
for (LLSD::array_const_iterator iter1 = user_llsd.beginArray();
|
||||
iter1 != user_llsd.endArray(); ++iter1)
|
||||
|
|
|
|||
|
|
@ -123,7 +123,6 @@ void LLPanelVoiceEffect::update(bool list_updated)
|
|||
if (mVoiceEffectCombo)
|
||||
{
|
||||
LLVoiceEffectInterface* effect_interface = LLVoiceClient::instance().getVoiceEffectInterface();
|
||||
llassert(effect_interface);
|
||||
if (!effect_interface) return;
|
||||
if (list_updated)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1360,7 +1360,11 @@ void LLSecAPIBasicHandler::_writeProtectedData()
|
|||
// (even though this file isn't really secure. Perhaps in the future
|
||||
// it may be, however.
|
||||
LLFile::remove(tmp_filename);
|
||||
throw LLProtectedDataException("Error writing Protected Data Store");
|
||||
|
||||
// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData()
|
||||
// Decided throwing an exception here was overkill until we figure out why this happens
|
||||
//throw LLProtectedDataException("Error writing Protected Data Store");
|
||||
llinfos << "LLProtectedDataException(Error writing Protected Data Store)" << llendl;
|
||||
}
|
||||
|
||||
// move the temporary file to the specified file location.
|
||||
|
|
@ -1369,7 +1373,11 @@ void LLSecAPIBasicHandler::_writeProtectedData()
|
|||
(LLFile::rename(tmp_filename, mProtectedDataFilename)))
|
||||
{
|
||||
LLFile::remove(tmp_filename);
|
||||
throw LLProtectedDataException("Could not overwrite protected data store");
|
||||
|
||||
// EXP-1825 crash in LLSecAPIBasicHandler::_writeProtectedData()
|
||||
// Decided throwing an exception here was overkill until we figure out why this happens
|
||||
//throw LLProtectedDataException("Could not overwrite protected data store");
|
||||
llinfos << "LLProtectedDataException(Could not overwrite protected data store)" << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -217,15 +217,17 @@ BOOL LLSidepanelInventory::postBuild()
|
|||
{
|
||||
LLLayoutStack* inv_stack = getChild<LLLayoutStack>(INVENTORY_LAYOUT_STACK_NAME);
|
||||
|
||||
// Collapse inbox panel
|
||||
inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), true);
|
||||
|
||||
// Set up button states and callbacks
|
||||
LLButton * inbox_button = getChild<LLButton>(INBOX_BUTTON_NAME);
|
||||
|
||||
inbox_button->setToggleState(false);
|
||||
inbox_button->setCommitCallback(boost::bind(&LLSidepanelInventory::onToggleInboxBtn, this));
|
||||
|
||||
// Get the previous inbox state from "InventoryInboxToggleState" setting.
|
||||
bool is_inbox_collapsed = !inbox_button->getToggleState();
|
||||
|
||||
// Restore the collapsed inbox panel state
|
||||
inv_stack->collapsePanel(getChild<LLLayoutPanel>(INBOX_LAYOUT_PANEL_NAME), is_inbox_collapsed);
|
||||
|
||||
// Set the inbox visible based on debug settings (final setting comes from http request below)
|
||||
enableInbox(gSavedSettings.getBOOL("InventoryDisplayInbox"));
|
||||
|
||||
|
|
|
|||
|
|
@ -162,10 +162,10 @@ void LLBingTranslationHandler::getTranslateURL(
|
|||
const std::string &text) const
|
||||
{
|
||||
url = std::string("http://api.microsofttranslator.com/v2/Http.svc/Translate?appId=")
|
||||
+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + to_lang;
|
||||
+ getAPIKey() + "&text=" + LLURI::escape(text) + "&to=" + getAPILanguageCode(to_lang);
|
||||
if (!from_lang.empty())
|
||||
{
|
||||
url += "&from=" + from_lang;
|
||||
url += "&from=" + getAPILanguageCode(from_lang);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -236,6 +236,12 @@ std::string LLBingTranslationHandler::getAPIKey()
|
|||
return gSavedSettings.getString("BingTranslateAPIKey");
|
||||
}
|
||||
|
||||
// static
|
||||
std::string LLBingTranslationHandler::getAPILanguageCode(const std::string& lang)
|
||||
{
|
||||
return lang == "zh" ? "zh-CHT" : lang; // treat Chinese as Traditional Chinese
|
||||
}
|
||||
|
||||
LLTranslate::TranslationReceiver::TranslationReceiver(const std::string& from_lang, const std::string& to_lang)
|
||||
: mFromLang(from_lang)
|
||||
, mToLang(to_lang)
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ public:
|
|||
/*virtual*/ bool isConfigured() const;
|
||||
private:
|
||||
static std::string getAPIKey();
|
||||
static std::string getAPILanguageCode(const std::string& lang);
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1462,6 +1462,7 @@ const std::string& LLViewerInventoryItem::getName() const
|
|||
class LLFavoritesOrderStorage : public LLSingleton<LLFavoritesOrderStorage>
|
||||
, public LLDestroyClass<LLFavoritesOrderStorage>
|
||||
{
|
||||
LOG_CLASS(LLFavoritesOrderStorage);
|
||||
public:
|
||||
/**
|
||||
* Sets sort index for specified with LLUUID favorite landmark
|
||||
|
|
@ -1620,10 +1621,18 @@ void LLFavoritesOrderStorage::load()
|
|||
void LLFavoritesOrderStorage::saveFavoritesSLURLs()
|
||||
{
|
||||
// Do not change the file if we are not logged in yet.
|
||||
if (!LLLoginInstance::getInstance()->authSuccess()) return;
|
||||
if (!LLLoginInstance::getInstance()->authSuccess())
|
||||
{
|
||||
llwarns << "Cannot save favorites: not logged in" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
std::string user_dir = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "");
|
||||
if (user_dir.empty()) return;
|
||||
if (user_dir.empty())
|
||||
{
|
||||
llwarns << "Cannot save favorites: empty user dir name" << llendl;
|
||||
return;
|
||||
}
|
||||
|
||||
std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "stored_favorites.xml");
|
||||
llifstream in_file;
|
||||
|
|
@ -1649,13 +1658,19 @@ void LLFavoritesOrderStorage::saveFavoritesSLURLs()
|
|||
slurls_map_t::iterator slurl_iter = mSLURLs.find(value["asset_id"]);
|
||||
if (slurl_iter != mSLURLs.end())
|
||||
{
|
||||
lldebugs << "Saving favorite: idx=" << (*it)->getSortField() << ", SLURL=" << slurl_iter->second << ", value=" << value << llendl;
|
||||
value["slurl"] = slurl_iter->second;
|
||||
user_llsd[(*it)->getSortField()] = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
llwarns << "Not saving favorite " << value["name"] << ": no matching SLURL" << llendl;
|
||||
}
|
||||
}
|
||||
|
||||
LLAvatarName av_name;
|
||||
LLAvatarNameCache::get( gAgentID, &av_name );
|
||||
lldebugs << "Saved favorites for " << av_name.getLegacyName() << llendl;
|
||||
fav_llsd[av_name.getLegacyName()] = user_llsd;
|
||||
|
||||
llofstream file;
|
||||
|
|
@ -1674,6 +1689,7 @@ void LLFavoritesOrderStorage::removeFavoritesRecordOfUser()
|
|||
|
||||
LLAvatarName av_name;
|
||||
LLAvatarNameCache::get( gAgentID, &av_name );
|
||||
lldebugs << "Removed favorites for " << av_name.getLegacyName() << llendl;
|
||||
if (fav_llsd.has(av_name.getLegacyName()))
|
||||
{
|
||||
fav_llsd.erase(av_name.getLegacyName());
|
||||
|
|
@ -1706,6 +1722,7 @@ void LLFavoritesOrderStorage::onLandmarkLoaded(const LLUUID& asset_id, LLLandmar
|
|||
|
||||
void LLFavoritesOrderStorage::storeFavoriteSLURL(const LLUUID& asset_id, std::string& slurl)
|
||||
{
|
||||
lldebugs << "Saving landmark SLURL: " << slurl << llendl;
|
||||
mSLURLs[asset_id] = slurl;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7254,12 +7254,6 @@ class LLToolsUseSelectionForGrid : public view_listener_t
|
|||
} func;
|
||||
LLSelectMgr::getInstance()->getSelection()->applyToRootObjects(&func);
|
||||
LLSelectMgr::getInstance()->setGridMode(GRID_MODE_REF_OBJECT);
|
||||
|
||||
LLFloaterBuildOptions* build_options_floater = LLFloaterReg::getTypedInstance<LLFloaterBuildOptions>("build_options");
|
||||
if (build_options_floater && build_options_floater->getVisible())
|
||||
{
|
||||
build_options_floater->setGridMode(GRID_MODE_REF_OBJECT);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -527,8 +527,22 @@ class LLFileTakeSnapshotToDisk : public view_listener_t
|
|||
FALSE))
|
||||
{
|
||||
gViewerWindow->playSnapshotAnimAndSound();
|
||||
|
||||
LLPointer<LLImageFormatted> formatted = new LLImagePNG;
|
||||
LLPointer<LLImageFormatted> formatted;
|
||||
switch(LLFloaterSnapshot::ESnapshotFormat(gSavedSettings.getS32("SnapshotFormat")))
|
||||
{
|
||||
case LLFloaterSnapshot::SNAPSHOT_FORMAT_JPEG:
|
||||
formatted = new LLImageJPEG(gSavedSettings.getS32("SnapshotQuality"));
|
||||
break;
|
||||
case LLFloaterSnapshot::SNAPSHOT_FORMAT_PNG:
|
||||
formatted = new LLImagePNG;
|
||||
break;
|
||||
case LLFloaterSnapshot::SNAPSHOT_FORMAT_BMP:
|
||||
formatted = new LLImageBMP;
|
||||
break;
|
||||
default:
|
||||
llwarns << "Unknown Local Snapshot format" << llendl;
|
||||
return true;
|
||||
}
|
||||
formatted->enableOverSize() ;
|
||||
formatted->encode(raw, 0);
|
||||
formatted->disableOverSize() ;
|
||||
|
|
|
|||
|
|
@ -135,6 +135,7 @@ extern BOOL gDebugClicks;
|
|||
|
||||
// function prototypes
|
||||
bool check_offer_throttle(const std::string& from_name, bool check_only);
|
||||
bool check_asset_previewable(const LLAssetType::EType asset_type);
|
||||
static void process_money_balance_reply_extended(LLMessageSystem* msg);
|
||||
|
||||
//inventory offer throttle globals
|
||||
|
|
@ -1147,7 +1148,18 @@ bool check_offer_throttle(const std::string& from_name, bool check_only)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Return "true" if we have a preview method for that asset type, "false" otherwise
|
||||
bool check_asset_previewable(const LLAssetType::EType asset_type)
|
||||
{
|
||||
return (asset_type == LLAssetType::AT_NOTECARD) ||
|
||||
(asset_type == LLAssetType::AT_LANDMARK) ||
|
||||
(asset_type == LLAssetType::AT_TEXTURE) ||
|
||||
(asset_type == LLAssetType::AT_ANIMATION) ||
|
||||
(asset_type == LLAssetType::AT_SCRIPT) ||
|
||||
(asset_type == LLAssetType::AT_SOUND);
|
||||
}
|
||||
|
||||
void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_name)
|
||||
{
|
||||
for (uuid_vec_t::const_iterator obj_iter = objects.begin();
|
||||
|
|
@ -1171,7 +1183,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
|
|||
|
||||
// Either an inventory item or a category.
|
||||
const LLInventoryItem* item = dynamic_cast<const LLInventoryItem*>(obj);
|
||||
if (item)
|
||||
if (item && check_asset_previewable(asset_type))
|
||||
{
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Special handling for various types.
|
||||
|
|
@ -1246,6 +1258,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam
|
|||
LLFloaterReg::showInstance("preview_sound", LLSD(obj_id), take_focus);
|
||||
break;
|
||||
default:
|
||||
LL_DEBUGS("Messaging") << "No preview method for previewable asset type : " << LLAssetType::lookupHumanReadable(asset_type) << LL_ENDL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2360,8 +2373,15 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
LL_INFOS("Messaging") << "process_improved_im: session_id( " << session_id << " ), from_id( " << from_id << " )" << LL_ENDL;
|
||||
|
||||
bool mute_im = is_muted;
|
||||
if(accept_im_from_only_friend&&!is_friend)
|
||||
if (accept_im_from_only_friend && !is_friend)
|
||||
{
|
||||
if (!gIMMgr->isNonFriendSessionNotified(session_id))
|
||||
{
|
||||
std::string message = LLTrans::getString("IM_unblock_only_groups_friends");
|
||||
gIMMgr->addMessage(session_id, from_id, name, message);
|
||||
gIMMgr->addNotifiedNonFriendSessionID(session_id);
|
||||
}
|
||||
|
||||
mute_im = true;
|
||||
}
|
||||
if (!mute_im || is_linden)
|
||||
|
|
|
|||
|
|
@ -3170,12 +3170,6 @@ void LLViewerWindow::updateLayout()
|
|||
//gMenuBarView->setItemVisible("BuildTools", gFloaterTools->getVisible());
|
||||
}
|
||||
|
||||
LLFloaterBuildOptions* build_options_floater = LLFloaterReg::findTypedInstance<LLFloaterBuildOptions>("build_options");
|
||||
if (build_options_floater && build_options_floater->getVisible())
|
||||
{
|
||||
build_options_floater->updateGridMode();
|
||||
}
|
||||
|
||||
// Always update console
|
||||
if(gConsole)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@
|
|||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="20"
|
||||
height="18"
|
||||
layout="topleft"
|
||||
left_pad="2"
|
||||
valign="center"
|
||||
|
|
|
|||
|
|
@ -1,70 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
legacy_header_height="18"
|
||||
height="198"
|
||||
height="170"
|
||||
layout="topleft"
|
||||
name="build options floater"
|
||||
help_topic="build_options_floater"
|
||||
save_rect="true"
|
||||
title="GRID OPTIONS"
|
||||
width="264">
|
||||
<floater.string
|
||||
name="grid_screen_text">
|
||||
Screen
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_local_text">
|
||||
Local
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_world_text">
|
||||
World
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_reference_text">
|
||||
Reference
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_attachment_text">
|
||||
Attachment
|
||||
</floater.string>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="16"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
tool_tip="Grid opacity"
|
||||
name="grid_mode_label"
|
||||
top_pad="30"
|
||||
width="123">
|
||||
Mode
|
||||
</text>
|
||||
<combo_box
|
||||
height="23"
|
||||
layout="topleft"
|
||||
left_pad="9"
|
||||
follows="left|top"
|
||||
name="combobox grid mode"
|
||||
tool_tip="Choose the type of grid ruler for positioning the object"
|
||||
top_delta="-3"
|
||||
width="108">
|
||||
<combo_box.item
|
||||
label="World grid"
|
||||
name="World"
|
||||
value="World" />
|
||||
<combo_box.item
|
||||
label="Local grid"
|
||||
name="Local"
|
||||
value="Local" />
|
||||
<combo_box.item
|
||||
label="Reference grid"
|
||||
name="Reference"
|
||||
value="Reference" />
|
||||
<combo_box.commit_callback
|
||||
function="GridOptions.gridMode"/>
|
||||
</combo_box>
|
||||
<spinner
|
||||
control_name="GridResolution"
|
||||
follows="left|top"
|
||||
|
|
@ -77,7 +20,7 @@
|
|||
max_val="5"
|
||||
min_val="0.01"
|
||||
name="GridResolution"
|
||||
top_pad="4"
|
||||
top_pad="30"
|
||||
width="200" />
|
||||
<spinner
|
||||
control_name="GridDrawSize"
|
||||
|
|
|
|||
|
|
@ -14,15 +14,12 @@
|
|||
height="90"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
valign="bottom"
|
||||
clip="true"
|
||||
top_pad="30"
|
||||
width="300">
|
||||
First line of multiple lines
|
||||
Second line of multiple lines
|
||||
Third line of multiple lines
|
||||
Fourth line of multiple lines
|
||||
Fifth line of multiple lines
|
||||
</text>
|
||||
<text
|
||||
___</text>
|
||||
<!--<text
|
||||
clip_partial="true"
|
||||
top_pad="10"
|
||||
left="10"
|
||||
|
|
@ -153,7 +150,7 @@ Fifth line of multiple lines
|
|||
The 华文细黑 brown fox ヒラキjumped over the lazy dog.
|
||||
</text>
|
||||
|
||||
<!-- next column -->
|
||||
--><!-- next column --><!--
|
||||
<text_editor
|
||||
height="50"
|
||||
follows="top|left|bottom"
|
||||
|
|
@ -250,5 +247,5 @@ with
|
|||
multiple lines
|
||||
and too many lines
|
||||
to actually fit
|
||||
</text>
|
||||
</text>-->
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,27 @@
|
|||
save_visibility="true"
|
||||
sound_flags="0"
|
||||
width="295">
|
||||
<floater.string
|
||||
<floater.string
|
||||
name="grid_screen_text">
|
||||
Screen
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_local_text">
|
||||
Local
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_world_text">
|
||||
World
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_reference_text">
|
||||
Reference
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="grid_attachment_text">
|
||||
Attachment
|
||||
</floater.string>
|
||||
<floater.string
|
||||
name="status_rotate">
|
||||
Drag colored bands to rotate object
|
||||
</floater.string>
|
||||
|
|
@ -312,20 +332,48 @@
|
|||
top_pad="0"
|
||||
name="checkbox snap to grid"
|
||||
width="134" />
|
||||
<button
|
||||
left_pad="0"
|
||||
label="Options..."
|
||||
<combo_box
|
||||
height="20"
|
||||
layout="topleft"
|
||||
follows="left|top"
|
||||
name="combobox grid mode"
|
||||
tool_tip="Choose the type of grid ruler for positioning the object"
|
||||
top="83"
|
||||
left="195"
|
||||
top_pad="0"
|
||||
width="60">
|
||||
<combo_box.item
|
||||
label="World"
|
||||
name="World"
|
||||
value="World" />
|
||||
<combo_box.item
|
||||
label="Local"
|
||||
name="Local"
|
||||
value="Local" />
|
||||
<combo_box.item
|
||||
label="Reference"
|
||||
name="Reference"
|
||||
value="Reference" />
|
||||
<combo_box.commit_callback
|
||||
function="BuildTool.gridMode"/>
|
||||
</combo_box>
|
||||
|
||||
<button
|
||||
left="259"
|
||||
label=""
|
||||
image_selected="ForwardArrow_Press"
|
||||
image_unselected="ForwardArrow_Off"
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
name="Options..."
|
||||
tool_tip="See more grid options"
|
||||
top="83"
|
||||
right="-35"
|
||||
width="65"
|
||||
height="21" >
|
||||
width="25"
|
||||
height="20" >
|
||||
<button.commit_callback
|
||||
function="BuildTool.gridOptions"/>
|
||||
</button>
|
||||
|
||||
<button
|
||||
follows="left|top"
|
||||
height="20"
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ L$30,000
|
|||
follows="all"
|
||||
font="SansSerifSmall"
|
||||
height="13"
|
||||
clip="false"
|
||||
name="object_media_url"
|
||||
width="207"
|
||||
left_pad="2"
|
||||
|
|
|
|||
|
|
@ -174,13 +174,14 @@
|
|||
width="311">
|
||||
<label
|
||||
follows="left|top"
|
||||
height="15"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
left="10"
|
||||
name="favorites_bar_label"
|
||||
text_color="LtGray"
|
||||
tool_tip="Drag Landmarks here for quick access to your favorite places in Second Life!"
|
||||
top="12"
|
||||
top="13"
|
||||
valign="bottom"
|
||||
width="102">
|
||||
Favorites Bar
|
||||
</label>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,63 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<panel
|
||||
height="300"
|
||||
follows="all"
|
||||
height="300"
|
||||
help_topic="nearby_chat"
|
||||
layout="topleft"
|
||||
name="nearby_chat"
|
||||
help_topic="nearby_chat"
|
||||
width="320">
|
||||
<check_box
|
||||
bottom_delta="36"
|
||||
control_name="TranslateChat"
|
||||
enabled="true"
|
||||
height="16"
|
||||
label="Translate chat"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="translate_chat_checkbox"
|
||||
width="230" />
|
||||
<chat_history
|
||||
parse_urls="true"
|
||||
bg_readonly_color="ChatHistoryBgColor"
|
||||
bg_writeable_color="ChatHistoryBgColor"
|
||||
follows="all"
|
||||
left="5"
|
||||
top_delta="17"
|
||||
layout="topleft"
|
||||
height="260"
|
||||
name="chat_history"
|
||||
parse_highlights="true"
|
||||
text_color="ChatHistoryTextColor"
|
||||
text_readonly_color="ChatHistoryTextColor"
|
||||
right_widget_pad="5"
|
||||
left_widget_pad="0"
|
||||
width="315" />
|
||||
<layout_stack
|
||||
follows="left|top|right"
|
||||
height="295"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="stack"
|
||||
top="5"
|
||||
orientation="vertical"
|
||||
width="320">
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
height="26"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="translate_chat_checkbox_lp"
|
||||
top_delta="0"
|
||||
visible="true"
|
||||
width="313">
|
||||
<check_box
|
||||
top="10"
|
||||
control_name="TranslateChat"
|
||||
enabled="true"
|
||||
height="16"
|
||||
label="Translate chat"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
name="translate_chat_checkbox"
|
||||
width="300" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="true"
|
||||
height="277"
|
||||
left_delta="0"
|
||||
layout="topleft"
|
||||
name="chat_history_lp"
|
||||
width="318">
|
||||
<chat_history
|
||||
bg_readonly_color="ChatHistoryBgColor"
|
||||
bg_writeable_color="ChatHistoryBgColor"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
left_widget_pad="0"
|
||||
height="272"
|
||||
name="chat_history"
|
||||
parse_highlights="true"
|
||||
parse_urls="true"
|
||||
right_widget_pad="5"
|
||||
text_color="ChatHistoryTextColor"
|
||||
text_readonly_color="ChatHistoryTextColor"
|
||||
top="0"
|
||||
width="313" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@
|
|||
</text>
|
||||
<radio_group
|
||||
control_name="LetterKeysFocusChatBar"
|
||||
height="20"
|
||||
height="34"
|
||||
layout="topleft"
|
||||
left="35"
|
||||
top_pad="0"
|
||||
|
|
@ -339,7 +339,7 @@
|
|||
<radio_item
|
||||
label="Starts local chat"
|
||||
name="radio_start_chat"
|
||||
top_delta="20"
|
||||
top="0"
|
||||
layout="topleft"
|
||||
height="16"
|
||||
left="0"
|
||||
|
|
@ -364,7 +364,7 @@
|
|||
layout="topleft"
|
||||
left="30"
|
||||
name="title_afk_text"
|
||||
top_pad="15"
|
||||
top_pad="5"
|
||||
width="190">
|
||||
Away timeout:
|
||||
</text>
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@
|
|||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="mute_chb_label"
|
||||
top_delta="0"
|
||||
top_delta="-1"
|
||||
width="150"
|
||||
wrap="true">
|
||||
Mute when minimized
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@
|
|||
<string name="InboxLabelWithArg">Received items ([NUM])</string>
|
||||
<string name="InboxLabelNoArg">Received items</string>
|
||||
<button
|
||||
control_name="InventoryInboxToggleState"
|
||||
label="Received items"
|
||||
font="SansSerifMedium"
|
||||
name="inbox_btn"
|
||||
|
|
|
|||
|
|
@ -3238,6 +3238,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
|
|||
<string name="IM_to_label">To</string>
|
||||
<string name="IM_moderator_label">(Moderator)</string>
|
||||
<string name="Saved_message">(Saved [LONG_TIMESTAMP])</string>
|
||||
<string name="IM_unblock_only_groups_friends">To see this message, you must uncheck 'Only friends and groups can call or IM me' in Preferences/Privacy.</string>
|
||||
|
||||
<!-- voice calls -->
|
||||
<string name="answered_call">Your call has been answered</string>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
font="SansSerifSmall"
|
||||
hover_glow_amount="0.15"
|
||||
halign="center"
|
||||
pad_bottom="3"
|
||||
pad_bottom="2"
|
||||
height="23"
|
||||
scale_image="true"
|
||||
handle_right_mouse="true"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
text_readonly_color="LabelDisabledColor"/>
|
||||
<check_box.check_button name="CheckboxCtrl Button"
|
||||
left="2"
|
||||
bottom="2"
|
||||
bottom="1"
|
||||
width="13"
|
||||
height="13"
|
||||
commit_on_return="false"
|
||||
|
|
|
|||
|
|
@ -1047,9 +1047,13 @@ class Linux_i686Manifest(LinuxManifest):
|
|||
self.path("libuuid.so.16")
|
||||
self.path("libuuid.so.16.0.22")
|
||||
self.path("libSDL-1.2.so.0.11.3")
|
||||
self.path("libSDL-1.2.so.0")
|
||||
self.path("libdirectfb-1.4.so.5.0.4")
|
||||
self.path("libdirectfb-1.4.so.5")
|
||||
self.path("libfusion-1.4.so.5.0.4")
|
||||
self.path("libfusion-1.4.so.5")
|
||||
self.path("libdirect-1.4.so.5.0.4")
|
||||
self.path("libdirect-1.4.so.5")
|
||||
self.path("libopenjpeg.so.1.4.0")
|
||||
self.path("libopenjpeg.so.1")
|
||||
self.path("libopenjpeg.so")
|
||||
|
|
|
|||
Loading…
Reference in New Issue