merge
commit
a3e30250e8
8
.hgtags
8
.hgtags
|
|
@ -229,6 +229,14 @@ c4911ec8cd81e676dfd2af438b3e065407a94a7a 3.2.1-start
|
|||
a8c7030d6845186fac7c188be4323a0e887b4184 DRTVWR-99_3.2.1-release
|
||||
a8c7030d6845186fac7c188be4323a0e887b4184 3.2.1-release
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-start
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf DRTVWR-60_2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-60_2.7.1-release
|
||||
a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.1-release
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 DRTVWR-104_3.2.4-beta1
|
||||
3fe994349fae64fc40874bb59db387131eb35a41 3.2.4-beta1
|
||||
8a44ff3d2104269ce76145c2772cf1bdff2a2abe 3.2.5-start
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb DRTVWR-62_2.7.2-release
|
||||
fe3a8e7973072ea62043c08b19b66626c1a720eb 2.7.2-release
|
||||
bd6bcde2584491fd9228f1fa51c4575f4e764e19 DRTVWR-103_3.2.4-release
|
||||
bd6bcde2584491fd9228f1fa51c4575f4e764e19 3.2.4-release
|
||||
|
|
|
|||
20
BuildParams
20
BuildParams
|
|
@ -145,6 +145,17 @@ oz_viewer-devreview.codeticket_add_context = false
|
|||
oz_viewer-devreview.build_enforce_coding_policy = true
|
||||
oz_viewer-devreview.email = oz@lindenlab.com
|
||||
|
||||
oz_viewer-trial.build_debug_release_separately = true
|
||||
oz_viewer-trial.codeticket_add_context = false
|
||||
oz_viewer-trial.build_enforce_coding_policy = true
|
||||
oz_viewer-trial.email = oz@lindenlab.com
|
||||
|
||||
oz_viewer-beta-review.build_debug_release_separately = true
|
||||
oz_viewer-beta-review.codeticket_add_context = false
|
||||
oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer"
|
||||
oz_viewer-beta-review.login_channel = "Second Life Beta Viewer"
|
||||
oz_viewer-beta-review.email = oz@lindenlab.com
|
||||
|
||||
oz_project-1.build_debug_release_separately = true
|
||||
oz_project-1.codeticket_add_context = false
|
||||
oz_project-1.email = oz@lindenlab.com
|
||||
|
|
@ -157,15 +168,6 @@ oz_project-3.email = oz@lindenlab.com
|
|||
oz_project-4.build_debug_release_separately = true
|
||||
oz_project-4.codeticket_add_context = false
|
||||
oz_project-4.email = oz@lindenlab.com
|
||||
oz_project-5.build_debug_release_separately = true
|
||||
oz_project-5.codeticket_add_context = false
|
||||
oz_project-5.email = oz@lindenlab.com
|
||||
|
||||
oz_viewer-beta-review.build_debug_release_separately = true
|
||||
oz_viewer-beta-review.codeticket_add_context = false
|
||||
oz_viewer-beta-review.viewer_channel = "Second Life Beta Viewer"
|
||||
oz_viewer-beta-review.login_channel = "Second Life Beta Viewer"
|
||||
oz_viewer-beta-review.email = oz@lindenlab.com
|
||||
|
||||
# =================================================================
|
||||
# asset delivery 2010 projects
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ Alissa Sabre
|
|||
VWR-12620
|
||||
VWR-12789
|
||||
SNOW-322
|
||||
STORM-1723
|
||||
Alliez Mysterio
|
||||
Angus Boyd
|
||||
VWR-592
|
||||
|
|
@ -583,6 +584,7 @@ Jonathan Yap
|
|||
STORM-976
|
||||
STORM-1639
|
||||
STORM-910
|
||||
STORM-1653
|
||||
STORM-1642
|
||||
STORM-591
|
||||
STORM-1105
|
||||
|
|
@ -595,6 +597,12 @@ Jonathan Yap
|
|||
STORM-1719
|
||||
STORM-1712
|
||||
STORM-1728
|
||||
STORM-1736
|
||||
STORM-1734
|
||||
STORM-1731
|
||||
STORM-653
|
||||
STORM-1737
|
||||
STORM-1733
|
||||
Kadah Coba
|
||||
STORM-1060
|
||||
Jondan Lundquist
|
||||
|
|
|
|||
|
|
@ -608,6 +608,7 @@ LLCPUInfo::LLCPUInfo()
|
|||
out << " (" << mCPUMHz << " MHz)";
|
||||
}
|
||||
mCPUString = out.str();
|
||||
LLStringUtil::trim(mCPUString);
|
||||
}
|
||||
|
||||
bool LLCPUInfo::hasAltivec() const
|
||||
|
|
|
|||
|
|
@ -517,7 +517,7 @@ void LLCurl::Easy::prepRequest(const std::string& url,
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LLMutex* LLCurl::Multi::sMultiInitMutexp = NULL ;
|
||||
LLCurl::Multi::Multi()
|
||||
: mQueued(0),
|
||||
mErrorCount(0),
|
||||
|
|
@ -527,11 +527,11 @@ LLCurl::Multi::Multi()
|
|||
mDeletionMutexp(NULL),
|
||||
mEasyMutexp(NULL)
|
||||
{
|
||||
mCurlMultiHandle = curl_multi_init();
|
||||
mCurlMultiHandle = initMulti();
|
||||
if (!mCurlMultiHandle)
|
||||
{
|
||||
llwarns << "curl_multi_init() returned NULL! Easy handles: " << gCurlEasyCount << " Multi handles: " << gCurlMultiCount << llendl;
|
||||
mCurlMultiHandle = curl_multi_init();
|
||||
mCurlMultiHandle = initMulti();
|
||||
}
|
||||
|
||||
llassert_always(mCurlMultiHandle);
|
||||
|
|
@ -576,6 +576,13 @@ LLCurl::Multi::~Multi()
|
|||
--gCurlMultiCount;
|
||||
}
|
||||
|
||||
CURLM* LLCurl::Multi::initMulti()
|
||||
{
|
||||
LLMutexLock lock(sMultiInitMutexp) ;
|
||||
|
||||
return curl_multi_init() ;
|
||||
}
|
||||
|
||||
void LLCurl::Multi::lock()
|
||||
{
|
||||
if(mMutexp)
|
||||
|
|
@ -857,11 +864,17 @@ void LLCurlThread::CurlRequest::finishRequest(bool completed)
|
|||
LLCurlThread::LLCurlThread(bool threaded) :
|
||||
LLQueuedThread("curlthread", threaded)
|
||||
{
|
||||
if(!LLCurl::Multi::sMultiInitMutexp)
|
||||
{
|
||||
LLCurl::Multi::sMultiInitMutexp = new LLMutex(NULL) ;
|
||||
}
|
||||
}
|
||||
|
||||
//virtual
|
||||
LLCurlThread::~LLCurlThread()
|
||||
{
|
||||
delete LLCurl::Multi::sMultiInitMutexp ;
|
||||
LLCurl::Multi::sMultiInitMutexp = NULL ;
|
||||
}
|
||||
|
||||
S32 LLCurlThread::update(F32 max_time_ms)
|
||||
|
|
|
|||
|
|
@ -299,6 +299,7 @@ public:
|
|||
S32 mQueued;
|
||||
S32 mErrorCount;
|
||||
|
||||
static CURLM* initMulti() ;
|
||||
private:
|
||||
void easyFree(LLCurl::Easy*);
|
||||
|
||||
|
|
@ -318,6 +319,8 @@ private:
|
|||
LLMutex* mMutexp ;
|
||||
LLMutex* mDeletionMutexp ;
|
||||
LLMutex* mEasyMutexp ;
|
||||
|
||||
static LLMutex* sMultiInitMutexp ;
|
||||
};
|
||||
|
||||
class LLCurlThread : public LLQueuedThread
|
||||
|
|
|
|||
|
|
@ -304,6 +304,18 @@ S32 LLFontGL::render(const LLWString &wstr, S32 begin_offset, F32 x, F32 y, cons
|
|||
S32 next_bitmap_num = fgi->mBitmapNum;
|
||||
if (next_bitmap_num != bitmap_num)
|
||||
{
|
||||
// Actually draw the queued glyphs before switching their texture;
|
||||
// otherwise the queued glyphs will be taken from wrong textures.
|
||||
if (glyph_count > 0)
|
||||
{
|
||||
gGL.begin(LLRender::QUADS);
|
||||
{
|
||||
gGL.vertexBatchPreTransformed(vertices, uvs, colors, glyph_count * 4);
|
||||
}
|
||||
gGL.end();
|
||||
glyph_count = 0;
|
||||
}
|
||||
|
||||
bitmap_num = next_bitmap_num;
|
||||
LLImageGL *font_image = font_bitmap_cache->getImageGL(bitmap_num);
|
||||
gGL.getTexUnit(0)->bind(font_image);
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@
|
|||
//#include "llfirstuse.h"
|
||||
#include "llrender.h"
|
||||
#include "llteleporthistory.h"
|
||||
#include "lltoast.h"
|
||||
#include "lllocationhistory.h"
|
||||
#include "llfasttimerview.h"
|
||||
#include "llvector4a.h"
|
||||
|
|
@ -4053,6 +4054,7 @@ void LLAppViewer::idle()
|
|||
LLFrameTimer::updateFrameTime();
|
||||
LLFrameTimer::updateFrameCount();
|
||||
LLEventTimer::updateClass();
|
||||
LLNotificationsUI::LLToast::updateClass();
|
||||
LLCriticalDamp::updateInterpolants();
|
||||
LLMortician::updateClass();
|
||||
LLFilePickerThread::clearDead(); //calls LLFilePickerThread::notify()
|
||||
|
|
|
|||
|
|
@ -250,6 +250,12 @@ LLIMWellChiclet::LLIMWellChiclet(const Params& p)
|
|||
|
||||
LLIMWellChiclet::~LLIMWellChiclet()
|
||||
{
|
||||
LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance();
|
||||
if (im_well_window)
|
||||
{
|
||||
im_well_window->setSysWellChiclet(NULL);
|
||||
}
|
||||
|
||||
LLIMMgr::getInstance()->removeSessionObserver(this);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -328,6 +328,19 @@ BOOL LLCOFWearables::postBuild()
|
|||
return LLPanel::postBuild();
|
||||
}
|
||||
|
||||
void LLCOFWearables::setAttachmentsTitle()
|
||||
{
|
||||
if (mAttachmentsTab)
|
||||
{
|
||||
U32 free_slots = MAX_AGENT_ATTACHMENTS - mAttachments->size();
|
||||
|
||||
LLStringUtil::format_map_t args_attachments;
|
||||
args_attachments["[COUNT]"] = llformat ("%d", free_slots);
|
||||
std::string attachments_title = LLTrans::getString("Attachments remain", args_attachments);
|
||||
mAttachmentsTab->setTitle(attachments_title);
|
||||
}
|
||||
}
|
||||
|
||||
void LLCOFWearables::onSelectionChange(LLFlatListView* selected_list)
|
||||
{
|
||||
if (!selected_list) return;
|
||||
|
|
@ -490,6 +503,7 @@ void LLCOFWearables::populateAttachmentsAndBodypartsLists(const LLInventoryModel
|
|||
{
|
||||
mAttachments->sort();
|
||||
mAttachments->notify(REARRANGE); //notifying the parent about the list's size change (cause items were added with rearrange=false)
|
||||
setAttachmentsTitle();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,6 +91,8 @@ public:
|
|||
*/
|
||||
void selectClothing(LLWearableType::EType clothing_type);
|
||||
|
||||
void setAttachmentsTitle();
|
||||
|
||||
protected:
|
||||
|
||||
void populateAttachmentsAndBodypartsLists(const LLInventoryModel::item_array_t& cof_items);
|
||||
|
|
|
|||
|
|
@ -333,8 +333,7 @@ void LLSnapshotLivePreview::updateSnapshot(BOOL new_snapshot, BOOL new_thumbnail
|
|||
{
|
||||
S32 old_image_index = mCurImageIndex;
|
||||
mCurImageIndex = (mCurImageIndex + 1) % 2;
|
||||
setWidth(mWidth[old_image_index]);
|
||||
setHeight(mHeight[old_image_index]);
|
||||
setSize(mWidth[old_image_index], mHeight[old_image_index]);
|
||||
mFallAnimTimer.start();
|
||||
}
|
||||
mSnapshotUpToDate = FALSE;
|
||||
|
|
@ -833,7 +832,7 @@ BOOL LLSnapshotLivePreview::onIdle( void* snapshot_preview )
|
|||
previewp->mPreviewImage->getHeight(),
|
||||
previewp->mPreviewImage->getComponents());
|
||||
|
||||
scaled->biasedScaleToPowerOfTwo(512);
|
||||
scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE);
|
||||
previewp->setImageScaled(TRUE);
|
||||
if (formatted->encode(scaled, 0.f))
|
||||
{
|
||||
|
|
@ -960,7 +959,7 @@ void LLSnapshotLivePreview::saveTexture()
|
|||
mPreviewImage->getHeight(),
|
||||
mPreviewImage->getComponents());
|
||||
|
||||
scaled->biasedScaleToPowerOfTwo(512);
|
||||
scaled->biasedScaleToPowerOfTwo(MAX_TEXTURE_SIZE);
|
||||
lldebugs << "scaled texture to " << scaled->getWidth() << "x" << scaled->getHeight() << llendl;
|
||||
|
||||
if (formatted->encode(scaled, 0.0f))
|
||||
|
|
@ -1447,7 +1446,6 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
|
|||
|
||||
if (previewp)
|
||||
{
|
||||
lldebugs << "Setting snapshot type (" << shot_type << "), format (" << shot_format << ")" << llendl;
|
||||
previewp->setSnapshotType(shot_type);
|
||||
previewp->setSnapshotFormat(shot_format);
|
||||
previewp->setSnapshotBufferType(layer_type);
|
||||
|
|
@ -1460,6 +1458,7 @@ void LLFloaterSnapshot::Impl::updateControls(LLFloaterSnapshot* floater)
|
|||
info["have-snapshot"] = got_snap;
|
||||
current_panel->updateControls(info);
|
||||
}
|
||||
lldebugs << "finished updating controls" << llendl;
|
||||
}
|
||||
|
||||
// static
|
||||
|
|
@ -1696,6 +1695,7 @@ void LLFloaterSnapshot::Impl::setFinished(LLFloaterSnapshot* floater, bool finis
|
|||
}
|
||||
}
|
||||
|
||||
// Apply a new resolution selected from the given combobox.
|
||||
// static
|
||||
void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL do_update)
|
||||
{
|
||||
|
|
@ -1738,6 +1738,13 @@ void LLFloaterSnapshot::Impl::updateResolution(LLUICtrl* ctrl, void* data, BOOL
|
|||
lldebugs << "Loading typed res from panel " << spanel->getName() << llendl;
|
||||
new_width = spanel->getTypedPreviewWidth();
|
||||
new_height = spanel->getTypedPreviewHeight();
|
||||
|
||||
// Limit custom size for inventory snapshots to 512x512 px.
|
||||
if (getActiveSnapshotType(view) == LLSnapshotLivePreview::SNAPSHOT_TEXTURE)
|
||||
{
|
||||
new_width = llmin(new_width, MAX_TEXTURE_SIZE);
|
||||
new_height = llmin(new_height, MAX_TEXTURE_SIZE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -1864,11 +1871,11 @@ BOOL LLFloaterSnapshot::Impl::checkImageSize(LLSnapshotLivePreview* previewp, S3
|
|||
//change another value proportionally
|
||||
if(isWidthChanged)
|
||||
{
|
||||
height = (S32)(width / aspect_ratio) ;
|
||||
height = llround(width / aspect_ratio) ;
|
||||
}
|
||||
else
|
||||
{
|
||||
width = (S32)(height * aspect_ratio) ;
|
||||
width = llround(height * aspect_ratio) ;
|
||||
}
|
||||
|
||||
//bound w/h by the max_value
|
||||
|
|
|
|||
|
|
@ -2403,15 +2403,6 @@ void LLIMMgr::addMessage(
|
|||
bool link_name) // If this is true, then we insert the name and link it to a profile
|
||||
{
|
||||
LLUUID other_participant_id = target_id;
|
||||
|
||||
// don't process muted IMs
|
||||
if (LLMuteList::getInstance()->isMuted(
|
||||
other_participant_id,
|
||||
LLMute::flagTextChat) && !LLMuteList::getInstance()->isLinden(from))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LLUUID new_session_id = session_id;
|
||||
if (new_session_id.isNull())
|
||||
{
|
||||
|
|
@ -2452,10 +2443,25 @@ void LLIMMgr::addMessage(
|
|||
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, bonus_info.str());
|
||||
}
|
||||
|
||||
// Logically it would make more sense to reject the session sooner, in another area of the
|
||||
// code, but the session has to be established inside the server before it can be left.
|
||||
if (LLMuteList::getInstance()->isMuted(other_participant_id) && !LLMuteList::getInstance()->isLinden(from))
|
||||
{
|
||||
llwarns << "Leaving IM session from initiating muted resident " << from << llendl;
|
||||
if(!gIMMgr->leaveSession(new_session_id))
|
||||
{
|
||||
llinfos << "Session " << new_session_id << " does not exist." << llendl;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
make_ui_sound("UISndNewIncomingIMSession");
|
||||
}
|
||||
|
||||
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
|
||||
if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat))
|
||||
{
|
||||
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg);
|
||||
}
|
||||
}
|
||||
|
||||
void LLIMMgr::addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args)
|
||||
|
|
@ -2661,18 +2667,15 @@ void LLIMMgr::inviteToSession(
|
|||
const std::string& session_handle,
|
||||
const std::string& session_uri)
|
||||
{
|
||||
//ignore invites from muted residents
|
||||
if (LLMuteList::getInstance()->isMuted(caller_id))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
std::string notify_box_type;
|
||||
// voice invite question is different from default only for group call (EXT-7118)
|
||||
std::string question_type = "VoiceInviteQuestionDefault";
|
||||
|
||||
BOOL ad_hoc_invite = FALSE;
|
||||
BOOL voice_invite = FALSE;
|
||||
bool is_linden = LLMuteList::getInstance()->isLinden(caller_name);
|
||||
|
||||
|
||||
if(type == IM_SESSION_P2P_INVITE)
|
||||
{
|
||||
//P2P is different...they only have voice invitations
|
||||
|
|
@ -2711,7 +2714,18 @@ void LLIMMgr::inviteToSession(
|
|||
payload["session_uri"] = session_uri;
|
||||
payload["notify_box_type"] = notify_box_type;
|
||||
payload["question_type"] = question_type;
|
||||
|
||||
|
||||
//ignore invites from muted residents
|
||||
if (LLMuteList::getInstance()->isMuted(caller_id) && !is_linden)
|
||||
{
|
||||
if (voice_invite && "VoiceInviteQuestionDefault" == question_type)
|
||||
{
|
||||
llinfos << "Rejecting voice call from initiating muted resident " << caller_name << llendl;
|
||||
LLIncomingCallDialog::processCallResponse(1, payload);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
LLVoiceChannel* channelp = LLVoiceChannel::getChannelByID(session_id);
|
||||
if (channelp && channelp->callStarted())
|
||||
{
|
||||
|
|
@ -3234,7 +3248,7 @@ public:
|
|||
chat.mFromID = from_id;
|
||||
chat.mFromName = name;
|
||||
|
||||
if (!is_linden && (is_busy || is_muted))
|
||||
if (!is_linden && is_busy)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -3266,6 +3280,11 @@ public:
|
|||
ll_vector3_from_sd(message_params["position"]),
|
||||
true);
|
||||
|
||||
if (LLMuteList::getInstance()->isMuted(from_id, name, LLMute::flagTextChat))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//K now we want to accept the invitation
|
||||
std::string url = gAgent.getRegion()->getCapability(
|
||||
"ChatSessionRequest");
|
||||
|
|
|
|||
|
|
@ -356,9 +356,9 @@ LLEditWearableDictionary::ColorSwatchCtrls::ColorSwatchCtrls()
|
|||
|
||||
LLEditWearableDictionary::TextureCtrls::TextureCtrls()
|
||||
{
|
||||
addEntry ( TEX_HEAD_BODYPAINT, new PickerControlEntry (TEX_HEAD_BODYPAINT, "Head Tattoos", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Tattoos", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Tattoos", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_HEAD_BODYPAINT, new PickerControlEntry (TEX_HEAD_BODYPAINT, "Head", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_UPPER_BODYPAINT, new PickerControlEntry (TEX_UPPER_BODYPAINT, "Upper Body", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_LOWER_BODYPAINT, new PickerControlEntry (TEX_LOWER_BODYPAINT, "Lower Body", LLUUID::null, TRUE ));
|
||||
addEntry ( TEX_HAIR, new PickerControlEntry (TEX_HAIR, "Texture", LLUUID( gSavedSettings.getString( "UIImgDefaultHairUUID" ) ), FALSE ));
|
||||
addEntry ( TEX_EYES_IRIS, new PickerControlEntry (TEX_EYES_IRIS, "Iris", LLUUID( gSavedSettings.getString( "UIImgDefaultEyesUUID" ) ), FALSE ));
|
||||
addEntry ( TEX_UPPER_SHIRT, new PickerControlEntry (TEX_UPPER_SHIRT, "Fabric", LLUUID( gSavedSettings.getString( "UIImgDefaultShirtUUID" ) ), FALSE ));
|
||||
|
|
|
|||
|
|
@ -408,9 +408,16 @@ void LLScriptFloaterManager::onRemoveNotification(const LLUUID& notification_id)
|
|||
}
|
||||
|
||||
// remove related chiclet
|
||||
LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id);
|
||||
if (LLChicletBar::instanceExists())
|
||||
{
|
||||
LLChicletBar::getInstance()->getChicletPanel()->removeChiclet(notification_id);
|
||||
}
|
||||
|
||||
LLIMWellWindow::getInstance()->removeObjectRow(notification_id);
|
||||
LLIMWellWindow* im_well_window = LLIMWellWindow::findInstance();
|
||||
if (im_well_window)
|
||||
{
|
||||
im_well_window->removeObjectRow(notification_id);
|
||||
}
|
||||
|
||||
mNotifications.erase(notification_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ void LLSysWellWindow::setVisible(BOOL visible)
|
|||
LLTransientDockableFloater::setVisible(visible);
|
||||
|
||||
// update notification channel state
|
||||
initChannel(); // make sure the channel still exists
|
||||
if(mChannel)
|
||||
{
|
||||
mChannel->updateShowToastsState();
|
||||
|
|
@ -598,6 +599,13 @@ LLIMWellWindow* LLIMWellWindow::getInstance(const LLSD& key /*= LLSD()*/)
|
|||
return LLFloaterReg::getTypedInstance<LLIMWellWindow>("im_well_window", key);
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
LLIMWellWindow* LLIMWellWindow::findInstance(const LLSD& key /*= LLSD()*/)
|
||||
{
|
||||
return LLFloaterReg::findTypedInstance<LLIMWellWindow>("im_well_window", key);
|
||||
}
|
||||
|
||||
BOOL LLIMWellWindow::postBuild()
|
||||
{
|
||||
BOOL rv = LLSysWellWindow::postBuild();
|
||||
|
|
@ -751,7 +759,10 @@ void LLIMWellWindow::removeObjectRow(const LLUUID& notification_id)
|
|||
{
|
||||
if (mMessageList->removeItemByValue(notification_id))
|
||||
{
|
||||
mSysWellChiclet->updateWidget(isWindowEmpty());
|
||||
if (mSysWellChiclet)
|
||||
{
|
||||
mSysWellChiclet->updateWidget(isWindowEmpty());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -153,6 +153,7 @@ public:
|
|||
~LLIMWellWindow();
|
||||
|
||||
static LLIMWellWindow* getInstance(const LLSD& key = LLSD());
|
||||
static LLIMWellWindow* findInstance(const LLSD& key = LLSD());
|
||||
static void initClass() { getInstance(); }
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
|
|
|||
|
|
@ -140,7 +140,9 @@ LLToast::LLToast(const LLToast::Params& p)
|
|||
|
||||
// init callbacks if present
|
||||
if(!p.on_delete_toast().empty())
|
||||
{
|
||||
mOnDeleteToastSignal.connect(p.on_delete_toast());
|
||||
}
|
||||
}
|
||||
|
||||
void LLToast::reshape(S32 width, S32 height, BOOL called_from_parent)
|
||||
|
|
@ -236,7 +238,9 @@ void LLToast::setCanFade(bool can_fade)
|
|||
{
|
||||
mCanFade = can_fade;
|
||||
if(!mCanFade)
|
||||
{
|
||||
mTimer->stop();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -328,55 +332,6 @@ void LLToast::draw()
|
|||
drawChild(mHideBtn);
|
||||
}
|
||||
}
|
||||
|
||||
updateHoveredState();
|
||||
|
||||
LLToastLifeTimer* timer = getTimer();
|
||||
if (!timer)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Started timer means the mouse had left the toast previously.
|
||||
// If toast is hovered in the current frame we should handle
|
||||
// a mouse enter event.
|
||||
if(timer->getStarted() && mIsHovered)
|
||||
{
|
||||
mOnToastHoverSignal(this, MOUSE_ENTER);
|
||||
|
||||
updateTransparency();
|
||||
|
||||
//toasts fading is management by Screen Channel
|
||||
|
||||
sendChildToFront(mHideBtn);
|
||||
if(mHideBtn && mHideBtn->getEnabled())
|
||||
{
|
||||
mHideBtn->setVisible(TRUE);
|
||||
}
|
||||
mToastMouseEnterSignal(this, getValue());
|
||||
}
|
||||
// Stopped timer means the mouse had entered the toast previously.
|
||||
// If the toast is not hovered in the current frame we should handle
|
||||
// a mouse leave event.
|
||||
else if(!timer->getStarted() && !mIsHovered)
|
||||
{
|
||||
mOnToastHoverSignal(this, MOUSE_LEAVE);
|
||||
|
||||
updateTransparency();
|
||||
|
||||
//toasts fading is management by Screen Channel
|
||||
|
||||
if(mHideBtn && mHideBtn->getEnabled())
|
||||
{
|
||||
if( mHideBtnPressed )
|
||||
{
|
||||
mHideBtnPressed = false;
|
||||
return;
|
||||
}
|
||||
mHideBtn->setVisible(FALSE);
|
||||
}
|
||||
mToastMouseLeaveSignal(this, getValue());
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
|
@ -440,28 +395,80 @@ void LLToast::updateHoveredState()
|
|||
{
|
||||
// mouse is not over this toast
|
||||
mIsHovered = false;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool is_overlapped_by_other_floater = false;
|
||||
|
||||
const child_list_t* child_list = gFloaterView->getChildList();
|
||||
|
||||
// find this toast in gFloaterView child list to check whether any floater
|
||||
// with higher Z-order is visible under the mouse pointer overlapping this toast
|
||||
child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this);
|
||||
if (r_iter != child_list->rend())
|
||||
{
|
||||
// skip this toast and proceed to views above in Z-order
|
||||
for (++r_iter; r_iter != child_list->rend(); ++r_iter)
|
||||
{
|
||||
LLView* view = *r_iter;
|
||||
is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y);
|
||||
if (is_overlapped_by_other_floater)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mIsHovered = !is_overlapped_by_other_floater;
|
||||
}
|
||||
|
||||
bool is_overlapped_by_other_floater = false;
|
||||
|
||||
const child_list_t* child_list = gFloaterView->getChildList();
|
||||
|
||||
// find this toast in gFloaterView child list to check whether any floater
|
||||
// with higher Z-order is visible under the mouse pointer overlapping this toast
|
||||
child_list_const_reverse_iter_t r_iter = std::find(child_list->rbegin(), child_list->rend(), this);
|
||||
if (r_iter != child_list->rend())
|
||||
{
|
||||
// skip this toast and proceed to views above in Z-order
|
||||
for (++r_iter; r_iter != child_list->rend(); ++r_iter)
|
||||
LLToastLifeTimer* timer = getTimer();
|
||||
|
||||
if (timer)
|
||||
{
|
||||
// Started timer means the mouse had left the toast previously.
|
||||
// If toast is hovered in the current frame we should handle
|
||||
// a mouse enter event.
|
||||
if(timer->getStarted() && mIsHovered)
|
||||
{
|
||||
LLView* view = *r_iter;
|
||||
is_overlapped_by_other_floater = view->isInVisibleChain() && view->calcScreenRect().pointInRect(x, y);
|
||||
if (is_overlapped_by_other_floater) break;
|
||||
mOnToastHoverSignal(this, MOUSE_ENTER);
|
||||
|
||||
updateTransparency();
|
||||
|
||||
//toasts fading is management by Screen Channel
|
||||
|
||||
sendChildToFront(mHideBtn);
|
||||
if(mHideBtn && mHideBtn->getEnabled())
|
||||
{
|
||||
mHideBtn->setVisible(TRUE);
|
||||
}
|
||||
|
||||
mToastMouseEnterSignal(this, getValue());
|
||||
}
|
||||
// Stopped timer means the mouse had entered the toast previously.
|
||||
// If the toast is not hovered in the current frame we should handle
|
||||
// a mouse leave event.
|
||||
else if(!timer->getStarted() && !mIsHovered)
|
||||
{
|
||||
mOnToastHoverSignal(this, MOUSE_LEAVE);
|
||||
|
||||
updateTransparency();
|
||||
|
||||
//toasts fading is management by Screen Channel
|
||||
|
||||
if(mHideBtn && mHideBtn->getEnabled())
|
||||
{
|
||||
if( mHideBtnPressed )
|
||||
{
|
||||
mHideBtnPressed = false;
|
||||
return;
|
||||
}
|
||||
mHideBtn->setVisible(FALSE);
|
||||
}
|
||||
|
||||
mToastMouseLeaveSignal(this, getValue());
|
||||
}
|
||||
}
|
||||
|
||||
mIsHovered = !is_overlapped_by_other_floater;
|
||||
}
|
||||
|
||||
void LLToast::setBackgroundOpaque(BOOL b)
|
||||
|
|
@ -553,3 +560,14 @@ S32 LLToast::notifyParent(const LLSD& info)
|
|||
|
||||
return LLModalDialog::notifyParent(info);
|
||||
}
|
||||
|
||||
//static
|
||||
void LLToast::updateClass()
|
||||
{
|
||||
for (LLInstanceTracker<LLToast>::instance_iter iter = LLInstanceTracker<LLToast>::beginInstances(); iter != LLInstanceTracker<LLToast>::endInstances(); )
|
||||
{
|
||||
LLToast& toast = *iter++;
|
||||
|
||||
toast.updateHoveredState();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
#ifndef LL_LLTOAST_H
|
||||
#define LL_LLTOAST_H
|
||||
|
||||
|
||||
#include "llinstancetracker.h"
|
||||
#include "llpanel.h"
|
||||
#include "llmodaldialog.h"
|
||||
#include "lleventtimer.h"
|
||||
|
|
@ -69,7 +69,7 @@ private :
|
|||
* Represents toast pop-up.
|
||||
* This is a parent view for all toast panels.
|
||||
*/
|
||||
class LLToast : public LLModalDialog
|
||||
class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast>
|
||||
{
|
||||
friend class LLToastLifeTimer;
|
||||
public:
|
||||
|
|
@ -102,6 +102,8 @@ public:
|
|||
|
||||
Params();
|
||||
};
|
||||
|
||||
static void updateClass();
|
||||
|
||||
LLToast(const LLToast::Params& p);
|
||||
virtual ~LLToast();
|
||||
|
|
@ -221,7 +223,7 @@ private:
|
|||
|
||||
F32 mToastLifetime; // in seconds
|
||||
F32 mToastFadingTime; // in seconds
|
||||
|
||||
|
||||
LLPanel* mPanel;
|
||||
LLButton* mHideBtn;
|
||||
|
||||
|
|
|
|||
|
|
@ -2235,6 +2235,10 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
{
|
||||
name = LLTrans::getString("Unnamed");
|
||||
}
|
||||
|
||||
// Preserve the unaltered name for use in group notice mute checking.
|
||||
std::string original_name = name;
|
||||
|
||||
// IDEVO convert new-style "Resident" names for display
|
||||
name = clean_name_from_im(name, dialog);
|
||||
|
||||
|
|
@ -2441,6 +2445,26 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)
|
|||
break;
|
||||
}
|
||||
|
||||
// The group notice packet does not have an AgentID. Obtain one from the name cache.
|
||||
// If last name is "Resident" strip it out so the cache name lookup works.
|
||||
U32 index = original_name.find(" Resident");
|
||||
if (index != std::string::npos)
|
||||
{
|
||||
original_name = original_name.substr(0, index);
|
||||
}
|
||||
std::string legacy_name = gCacheName->buildLegacyName(original_name);
|
||||
LLUUID agent_id;
|
||||
gCacheName->getUUID(legacy_name, agent_id);
|
||||
|
||||
if (agent_id.isNull())
|
||||
{
|
||||
LL_WARNS("Messaging") << "buildLegacyName returned null while processing " << original_name << LL_ENDL;
|
||||
}
|
||||
else if (LLMuteList::getInstance()->isMuted(agent_id))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
notice_bin_bucket = (struct notice_bucket_full_t*) &binary_bucket[0];
|
||||
U8 has_inventory = notice_bin_bucket->header.has_inventory;
|
||||
U8 asset_type = notice_bin_bucket->header.asset_type;
|
||||
|
|
@ -5206,6 +5230,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
BOOL is_dest_group = FALSE;
|
||||
S32 amount = 0;
|
||||
std::string item_description;
|
||||
BOOL success = FALSE;
|
||||
|
||||
msg->getS32("TransactionInfo", "TransactionType", transaction_type);
|
||||
msg->getUUID("TransactionInfo", "SourceID", source_id);
|
||||
|
|
@ -5214,6 +5239,7 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
msg->getBOOL("TransactionInfo", "IsDestGroup", is_dest_group);
|
||||
msg->getS32("TransactionInfo", "Amount", amount);
|
||||
msg->getString("TransactionInfo", "ItemDescription", item_description);
|
||||
msg->getBOOL("MoneyData", "TransactionSuccess", success);
|
||||
LL_INFOS("Money") << "MoneyBalanceReply source " << source_id
|
||||
<< " dest " << dest_id
|
||||
<< " type " << transaction_type
|
||||
|
|
@ -5275,28 +5301,32 @@ static void process_money_balance_reply_extended(LLMessageSystem* msg)
|
|||
{
|
||||
if (dest_id.notNull())
|
||||
{
|
||||
message = LLTrans::getString("you_paid_ldollars", args);
|
||||
message = success ? LLTrans::getString("you_paid_ldollars", args) :
|
||||
LLTrans::getString("you_paid_failure_ldollars", args);
|
||||
}
|
||||
else
|
||||
{
|
||||
// transaction fee to the system, eg, to create a group
|
||||
message = LLTrans::getString("you_paid_ldollars_no_name", args);
|
||||
message = success ? LLTrans::getString("you_paid_ldollars_no_name", args) :
|
||||
LLTrans::getString("you_paid_failure_ldollars_no_name", args);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (dest_id.notNull())
|
||||
{
|
||||
message = LLTrans::getString("you_paid_ldollars_no_reason", args);
|
||||
message = success ? LLTrans::getString("you_paid_ldollars_no_reason", args) :
|
||||
LLTrans::getString("you_paid_failure_ldollars_no_reason", args);
|
||||
}
|
||||
else
|
||||
{
|
||||
// no target, no reason, you just paid money
|
||||
message = LLTrans::getString("you_paid_ldollars_no_info", args);
|
||||
message = success ? LLTrans::getString("you_paid_ldollars_no_info", args) :
|
||||
LLTrans::getString("you_paid_failure_ldollars_no_info", args);
|
||||
}
|
||||
}
|
||||
final_args["MESSAGE"] = message;
|
||||
notification = "PaymentSent";
|
||||
notification = success ? "PaymentSent" : "PaymentFailure";
|
||||
}
|
||||
else {
|
||||
// ...someone paid you
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@
|
|||
<menu_item_call label="Model..." name="Upload Model"/>
|
||||
<menu_item_call label="Model Wizard..." name="Upload Model Wizard"/>
|
||||
<menu_item_call label="Mange (L$[COST] pr. fil)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Sæt standardværdier for upload rettigheder" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Fortyd" name="Undo"/>
|
||||
<menu_item_call label="Gendan" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
|
||||
<menu_item_call label="Modell..." name="Upload Model"/>
|
||||
<menu_item_call label="Mehrfach-Upload ([COST] L$ pro Datei)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Hochlade-Berechtigungen (Standard) festlegen" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Rückgängig" name="Undo"/>
|
||||
<menu_item_call label="Wiederholen" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
legacy_header_height="18"
|
||||
background_visible="true"
|
||||
default_tab_group="1"
|
||||
height="350"
|
||||
height="355"
|
||||
help_topic="floater_im_box"
|
||||
layout="topleft"
|
||||
name="panel_im"
|
||||
|
|
|
|||
|
|
@ -1713,7 +1713,17 @@
|
|||
function="ToggleControl"
|
||||
parameter="MouseSmooth" />
|
||||
</menu_item_check>
|
||||
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Release Keys"
|
||||
name="Release Keys">
|
||||
<menu_item_call.on_click
|
||||
function="Tools.ReleaseKeys"
|
||||
parameter="" />
|
||||
<menu_item_call.on_enable
|
||||
function="Tools.EnableReleaseKeys"
|
||||
parameter="" />
|
||||
</menu_item_call>
|
||||
<menu_item_separator/>
|
||||
|
||||
<menu
|
||||
|
|
@ -1743,17 +1753,7 @@
|
|||
function="Floater.Toggle"
|
||||
parameter="search" />
|
||||
</menu_item_check>
|
||||
<menu_item_call
|
||||
enabled="false"
|
||||
label="Release Keys"
|
||||
name="Release Keys">
|
||||
<menu_item_call.on_click
|
||||
function="Tools.ReleaseKeys"
|
||||
parameter="" />
|
||||
<menu_item_call.on_enable
|
||||
function="Tools.EnableReleaseKeys"
|
||||
parameter="" />
|
||||
</menu_item_call>
|
||||
|
||||
<!-- This second, alternative shortcut for Show Advanced Menu is for backward compatibility. The main shortcut has been changed so it's Linux-friendly, where the old shortcut is typically eaten by the window manager. -->
|
||||
<menu_item_check
|
||||
label="Show Advanced Menu - legacy shortcut"
|
||||
|
|
|
|||
|
|
@ -5516,6 +5516,15 @@ Please select at least one type of content to search (General, Moderate, or Adul
|
|||
[MESSAGE]
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="notify.tga"
|
||||
name="PaymentFailure"
|
||||
persist="true"
|
||||
type="notify">
|
||||
<tag>funds</tag>
|
||||
[MESSAGE]
|
||||
</notification>
|
||||
|
||||
<!-- EventNotification couldn't be persist since server decide is it necessary to notify
|
||||
user about subscribed event via LLEventNotifier-->
|
||||
<notification
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@
|
|||
label="Call"
|
||||
name="call_btn"
|
||||
width="130"
|
||||
top="5" />
|
||||
top="0" />
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
|
|
@ -75,7 +75,7 @@
|
|||
height="20"
|
||||
label="Leave Call"
|
||||
name="end_call_btn"
|
||||
top="5"/>
|
||||
top="0"/>
|
||||
</layout_panel>
|
||||
<layout_panel
|
||||
auto_resize="false"
|
||||
|
|
@ -92,7 +92,7 @@
|
|||
height="20"
|
||||
label="Voice Controls"
|
||||
name="voice_ctrls_btn"
|
||||
top="5"
|
||||
top="0"
|
||||
use_ellipses="true" />
|
||||
</layout_panel>
|
||||
</layout_stack>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
top="0"
|
||||
width="311" />
|
||||
</accordion_tab>
|
||||
<!-- The Attachments title is overwritten by the definition of "Attachments remain" in strings.xml -->
|
||||
<accordion_tab
|
||||
layout="topleft"
|
||||
name="tab_attachments"
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@
|
|||
default_image_name="Default"
|
||||
follows="left|top"
|
||||
height="80"
|
||||
label="Head Tattoos"
|
||||
label="Head"
|
||||
layout="topleft"
|
||||
left="25"
|
||||
name="Head Tattoos"
|
||||
name="Head"
|
||||
tool_tip="Click to choose a picture"
|
||||
top="10"
|
||||
width="74" >
|
||||
|
|
@ -43,10 +43,10 @@
|
|||
default_image_name="Default"
|
||||
follows="left|top"
|
||||
height="80"
|
||||
label="Upper Tattoos"
|
||||
label="Upper body"
|
||||
layout="topleft"
|
||||
left_pad="20"
|
||||
name="Upper Tattoos"
|
||||
name="Upper Body"
|
||||
tool_tip="Click to choose a picture"
|
||||
top="10"
|
||||
width="74" >
|
||||
|
|
@ -59,10 +59,10 @@
|
|||
default_image_name="Default"
|
||||
follows="left|top"
|
||||
height="80"
|
||||
label="Lower Tattoos"
|
||||
label="Lower body"
|
||||
layout="topleft"
|
||||
left_pad="20"
|
||||
name="Lower Tattoos"
|
||||
name="Lower Body"
|
||||
tool_tip="Click to choose a picture"
|
||||
top="10"
|
||||
width="74" >
|
||||
|
|
|
|||
|
|
@ -2133,6 +2133,7 @@ Returns a string with the requested data about the region
|
|||
<string name="InvFolder All">All</string>
|
||||
|
||||
<string name="no_attachments">No attachments worn</string>
|
||||
<string name="Attachments remain">Attachments ([COUNT] slots remain)</string>
|
||||
|
||||
<!-- inventory FVBridge -->
|
||||
<!-- This is used in llpanelinventory.cpp when constructing a context menu for an item for Sale -->
|
||||
|
|
@ -3358,6 +3359,10 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
|
|||
<string name="you_paid_ldollars_no_info">You paid L$[AMOUNT].</string>
|
||||
<string name="you_paid_ldollars_no_reason">You paid [NAME] L$[AMOUNT].</string>
|
||||
<string name="you_paid_ldollars_no_name">You paid L$[AMOUNT] [REASON].</string>
|
||||
<string name="you_paid_failure_ldollars">You failed to pay [NAME] L$[AMOUNT] [REASON].</string>
|
||||
<string name="you_paid_failure_ldollars_no_info">You failed to pay L$[AMOUNT].</string>
|
||||
<string name="you_paid_failure_ldollars_no_reason">You failed to pay [NAME] L$[AMOUNT].</string>
|
||||
<string name="you_paid_failure_ldollars_no_name">You failed to pay L$[AMOUNT] [REASON].</string>
|
||||
<string name="for item">for [ITEM]</string>
|
||||
<string name="for a parcel of land">for a parcel of land</string>
|
||||
<string name="for a land access pass">for a land access pass</string>
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ para cubrir esta parcela.
|
|||
Podrá o no unirse o dividirse.
|
||||
</text>
|
||||
<text name="covenant_text">
|
||||
Debes aceptar el Contrato del Estado:
|
||||
Debes aceptar el Contrato del estado:
|
||||
</text>
|
||||
<text left="470" name="covenant_timestamp_text"/>
|
||||
<text_editor name="covenant_editor">
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="Animación ([COST] L$)..." name="Upload Animation"/>
|
||||
<menu_item_call label="Modelo..." name="Upload Model"/>
|
||||
<menu_item_call label="Masivo ([COST] L$ por archivo)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Configurar los permisos por defecto de subida" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Deshacer" name="Undo"/>
|
||||
<menu_item_call label="Rehacer" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
(desconocido)
|
||||
</text>
|
||||
<text name="owner_text">
|
||||
Propietario del Estado:
|
||||
Propietario del estado:
|
||||
</text>
|
||||
<text name="estate_owner">
|
||||
(desconocido)
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
</string>
|
||||
<button label="?" name="abuse_email_address_help"/>
|
||||
<button label="Aplicar" name="apply_btn"/>
|
||||
<button label="Expulsar a un Residente del Estado..." name="kick_user_from_estate_btn"/>
|
||||
<button label="Expulsar a un Residente del estado..." name="kick_user_from_estate_btn"/>
|
||||
<button label="Enviar un mensaje al estado..." name="message_estate_btn"/>
|
||||
<text name="estate_manager_label">
|
||||
Administradores del estado:
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="Animation ([COST] L$)..." name="Upload Animation"/>
|
||||
<menu_item_call label="Modèle..." name="Upload Model"/>
|
||||
<menu_item_call label="Lot ([COST] L$ par fichier)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Définir les droits de chargement par défaut" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Annuler" name="Undo"/>
|
||||
<menu_item_call label="Refaire" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="Animazione ([COST] L$)..." name="Upload Animation"/>
|
||||
<menu_item_call label="Modella..." name="Upload Model"/>
|
||||
<menu_item_call label="In blocco ([COST] L$ per file)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Definisci diritti di caricamento predefiniti" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Annulla" name="Undo"/>
|
||||
<menu_item_call label="Ripeti" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="アニメーション(L$[COST])..." name="Upload Animation"/>
|
||||
<menu_item_call label="モデル" name="Upload Model"/>
|
||||
<menu_item_call label="一括 (ファイルにつきL$[COST])..." name="Bulk Upload"/>
|
||||
<menu_item_call label="デフォルトのアップロード権限を設定" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="元に戻す" name="Undo"/>
|
||||
<menu_item_call label="やり直し" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@
|
|||
<menu_item_call label="dźwięk (L$[COST])..." name="Upload Sound"/>
|
||||
<menu_item_call label="animację (L$[COST])..." name="Upload Animation"/>
|
||||
<menu_item_call label="zbiór plików (L$[COST] za jeden plik)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Cofnij" name="Undo"/>
|
||||
<menu_item_call label="Ponów" name="Redo"/>
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@
|
|||
-->
|
||||
<floater name="inspect_avatar">
|
||||
<string name="Subtitle">
|
||||
[IDADE]
|
||||
[AGE]
|
||||
</string>
|
||||
<string name="Details">
|
||||
[PERFIL_SL]
|
||||
[SL_PROFILE]
|
||||
</string>
|
||||
<text name="user_details">
|
||||
This is my second life description and I really think it is great. But for some reason my description is super extra long because I like to talk a whole lot
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@
|
|||
</menu>
|
||||
<menu_item_call label="Link" name="Link"/>
|
||||
<menu_item_call label="Desconectar links" name="Unlink"/>
|
||||
<menu_item_check label="Edit Linked Parts" name="Edit Linked Parts"/>
|
||||
<menu_item_check label="Editar partes linkadas" name="Edit Linked Parts"/>
|
||||
<menu label="Selecionar partes conectadas" name="Select Linked Parts">
|
||||
<menu_item_call label="Selecionar próxima parte" name="Select Next Part"/>
|
||||
<menu_item_call label="Selecionar parte anterior" name="Select Previous Part"/>
|
||||
|
|
@ -110,7 +110,7 @@
|
|||
<menu_item_call label="Pegar" name="Menu Object Take"/>
|
||||
<menu_item_call label="Pegar uma cópia" name="Take Copy"/>
|
||||
<menu_item_call label="Salvar no meu inventário" name="Save Object Back to My Inventory"/>
|
||||
<menu_item_call label="Save Back to Object Contents" name="Save Object Back to Object Contents"/>
|
||||
<menu_item_call label="Salvar objeto de volta aos conteúdos do objeto" name="Save Object Back to Object Contents"/>
|
||||
<menu_item_call label="Devolver objeto" name="Return Object back to Owner"/>
|
||||
</menu>
|
||||
<menu label="Scripts" name="Scripts">
|
||||
|
|
@ -140,6 +140,7 @@
|
|||
<menu_item_call label="Animação (L$[COST])..." name="Upload Animation"/>
|
||||
<menu_item_call label="Modelar..." name="Upload Model"/>
|
||||
<menu_item_call label="Volume (L$[COST] por arquivo)..." name="Bulk Upload"/>
|
||||
<menu_item_call label="Autorizações de upload padrão" name="perm prefs"/>
|
||||
</menu>
|
||||
<menu_item_call label="Desfazer" name="Undo"/>
|
||||
<menu_item_call label="Repetir" name="Redo"/>
|
||||
|
|
@ -165,7 +166,7 @@
|
|||
</menu>
|
||||
<menu label="Realces e visibilidade" name="Highlighting and Visibility">
|
||||
<menu_item_check label="Efeito baliza piscando" name="Cheesy Beacon"/>
|
||||
<menu_item_check label="Hide Particles" name="Hide Particles"/>
|
||||
<menu_item_check label="Esconder partículas" name="Hide Particles"/>
|
||||
<menu_item_check label="Ocultar seleções" name="Hide Selected"/>
|
||||
<menu_item_check label="Realçar transparentes" name="Highlight Transparent"/>
|
||||
<menu_item_check label="Mostrar anexos HUD" name="Show HUD Attachments"/>
|
||||
|
|
@ -183,7 +184,7 @@
|
|||
<menu_item_check label="Volume" name="Volume"/>
|
||||
<menu_item_check label="Grama" name="Grass"/>
|
||||
<menu_item_check label="Nuvens" name="Clouds"/>
|
||||
<menu_item_check label="Particles" name="Particles"/>
|
||||
<menu_item_check label="Partículas" name="Particles"/>
|
||||
<menu_item_check label="Elevação" name="Bump"/>
|
||||
</menu>
|
||||
<menu label="Recursos de renderização" name="Rendering Features">
|
||||
|
|
|
|||
|
|
@ -3886,16 +3886,16 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
|
|||
[NAME] lhe pagou L$ [AMOUNT]
|
||||
</string>
|
||||
<string name="you_paid_ldollars">
|
||||
You pagou L$[AMOUNT] por [REASON] a [NAME].
|
||||
Você pagou L$[AMOUNT] por [REASON] a [NAME].
|
||||
</string>
|
||||
<string name="you_paid_ldollars_no_info">
|
||||
Você acaba de pagar L$[AMOUNT].
|
||||
</string>
|
||||
<string name="you_paid_ldollars_no_reason">
|
||||
You pagou L$[AMOUNT] a [NAME].
|
||||
Você pagou L$[AMOUNT] a [NAME].
|
||||
</string>
|
||||
<string name="you_paid_ldollars_no_name">
|
||||
You pagou L$[AMOUNT] por [REASON].
|
||||
Você pagou L$[AMOUNT] por [REASON].
|
||||
</string>
|
||||
<string name="for item">
|
||||
por [ITEM]
|
||||
|
|
|
|||
Loading…
Reference in New Issue