summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/llaudio/llaudiodecodemgr.cpp24
-rw-r--r--indra/llcommon/llversionserver.h2
-rw-r--r--indra/llui/llaccordionctrl.h2
-rw-r--r--indra/llui/llfloater.cpp14
-rw-r--r--indra/llui/llfloater.h3
-rw-r--r--indra/llui/lltextbase.cpp5
-rw-r--r--indra/llui/llurlentry.cpp2
-rw-r--r--indra/llwindow/llkeyboard.cpp7
-rw-r--r--indra/llxuixml/lltrans.h11
-rw-r--r--indra/newview/English.lproj/InfoPlist.strings4
-rw-r--r--indra/newview/Info-SecondLife.plist2
-rw-r--r--indra/newview/llagentcamera.cpp18
-rw-r--r--indra/newview/llagentwearables.cpp2
-rw-r--r--indra/newview/llagentwearablesfetch.cpp2
-rw-r--r--indra/newview/llappearancemgr.cpp12
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/llfloatergroups.cpp3
-rw-r--r--indra/newview/llfolderview.cpp68
-rw-r--r--indra/newview/llfolderview.h4
-rw-r--r--indra/newview/llinventorybridge.cpp5
-rw-r--r--indra/newview/lloutfitslist.cpp15
-rw-r--r--indra/newview/llpanellandmarks.cpp3
-rw-r--r--indra/newview/llpaneloutfitedit.cpp14
-rw-r--r--indra/newview/llpaneloutfitedit.h1
-rw-r--r--indra/newview/llpanelpick.cpp3
-rw-r--r--indra/newview/llpanelplaceinfo.cpp4
-rw-r--r--indra/newview/llpaneltopinfobar.cpp23
-rw-r--r--indra/newview/llpaneltopinfobar.h5
-rw-r--r--indra/newview/llsidepanelappearance.cpp2
-rw-r--r--indra/newview/llstylemap.cpp12
-rw-r--r--indra/newview/lltexturefetch.cpp167
-rw-r--r--indra/newview/lltexturefetch.h14
-rw-r--r--indra/newview/llviewerjointattachment.cpp20
-rw-r--r--indra/newview/llviewermenu.cpp13
-rw-r--r--indra/newview/llviewerobject.cpp25
-rw-r--r--indra/newview/llviewerobject.h10
-rw-r--r--indra/newview/llviewertexture.cpp9
-rw-r--r--indra/newview/llviewertexturelist.cpp16
-rw-r--r--indra/newview/llvoavatar.cpp12
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/llvoavatarself.cpp4
-rw-r--r--indra/newview/llwearableitemslist.cpp64
-rw-r--r--indra/newview/llwearableitemslist.h4
-rw-r--r--indra/newview/res/viewerRes.rc8
-rw-r--r--indra/newview/skins/default/xui/da/floater_preview_gesture.xml7
-rw-r--r--indra/newview/skins/default/xui/da/floater_world_map.xml11
-rw-r--r--indra/newview/skins/default/xui/da/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/da/notifications.xml9
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_notices.xml2
-rw-r--r--indra/newview/skins/default/xui/da/panel_group_roles.xml18
-rw-r--r--indra/newview/skins/default/xui/da/panel_nearby_media.xml14
-rw-r--r--indra/newview/skins/default/xui/da/panel_preferences_sound.xml10
-rw-r--r--indra/newview/skins/default/xui/da/panel_teleport_history.xml3
-rw-r--r--indra/newview/skins/default/xui/da/sidepanel_item_info.xml13
-rw-r--r--indra/newview/skins/default/xui/da/strings.xml89
-rw-r--r--indra/newview/skins/default/xui/de/floater_preview_gesture.xml1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_gesture.xml2
-rw-r--r--indra/newview/skins/default/xui/en/floater_search.xml8
-rw-r--r--indra/newview/skins/default/xui/en/notifications.xml13
-rw-r--r--indra/newview/skins/default/xui/en/outfit_accordion_tab.xml1
-rw-r--r--indra/newview/skins/default/xui/en/strings.xml7
-rw-r--r--indra/newview/skins/default/xui/fr/floater_about_land.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_postcard.xml4
-rw-r--r--indra/newview/skins/default/xui/fr/floater_tools.xml10
-rw-r--r--indra/newview/skins/default/xui/fr/notifications.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_group_notices.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/panel_landmarks.xml2
-rw-r--r--indra/newview/skins/default/xui/fr/strings.xml8
-rw-r--r--indra/newview/skins/default/xui/it/floater_preview_gesture.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/floater_about_land.xml10
-rw-r--r--indra/newview/skins/default/xui/pl/floater_animation_preview.xml28
-rw-r--r--indra/newview/skins/default/xui/pl/floater_avatar_textures.xml3
-rw-r--r--indra/newview/skins/default/xui/pl/floater_bulk_perms.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_camera.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_customize.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_event.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/floater_gesture.xml4
-rw-r--r--indra/newview/skins/default/xui/pl/floater_god_tools.xml26
-rw-r--r--indra/newview/skins/default/xui/pl/floater_image_preview.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/floater_inventory.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/floater_preview_gesture.xml7
-rw-r--r--indra/newview/skins/default/xui/pl/floater_world_map.xml11
-rw-r--r--indra/newview/skins/default/xui/pl/menu_viewer.xml2
-rw-r--r--indra/newview/skins/default/xui/pl/notifications.xml9
-rw-r--r--indra/newview/skins/default/xui/pl/panel_group_roles.xml18
-rw-r--r--indra/newview/skins/default/xui/pl/panel_login.xml8
-rw-r--r--indra/newview/skins/default/xui/pl/panel_nearby_media.xml6
-rw-r--r--indra/newview/skins/default/xui/pl/panel_preferences_sound.xml12
-rw-r--r--indra/newview/skins/default/xui/pl/panel_teleport_history.xml3
-rw-r--r--indra/newview/skins/default/xui/pl/sidepanel_item_info.xml17
-rw-r--r--indra/newview/skins/default/xui/pl/strings.xml89
93 files changed, 752 insertions, 435 deletions
diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
index 290206ee22..fc2190707a 100644
--- a/indra/llaudio/llaudiodecodemgr.cpp
+++ b/indra/llaudio/llaudiodecodemgr.cpp
@@ -230,19 +230,29 @@ BOOL LLVorbisDecodeState::initDecode()
bool abort_decode = false;
- if( vi->channels < 1 || vi->channels > LLVORBIS_CLIP_MAX_CHANNELS )
+ if (vi)
+ {
+ if( vi->channels < 1 || vi->channels > LLVORBIS_CLIP_MAX_CHANNELS )
+ {
+ abort_decode = true;
+ llwarns << "Bad channel count: " << vi->channels << llendl;
+ }
+ }
+ else // !vi
{
abort_decode = true;
- llwarns << "Bad channel count: " << vi->channels << llendl;
+ llwarns << "No default bitstream found" << llendl;
}
- if( (size_t)sample_count > LLVORBIS_CLIP_REJECT_SAMPLES )
+ if( (size_t)sample_count > LLVORBIS_CLIP_REJECT_SAMPLES ||
+ (size_t)sample_count <= 0)
{
abort_decode = true;
llwarns << "Illegal sample count: " << sample_count << llendl;
}
- if( size_guess > LLVORBIS_CLIP_REJECT_SIZE )
+ if( size_guess > LLVORBIS_CLIP_REJECT_SIZE ||
+ size_guess < 0)
{
abort_decode = true;
llwarns << "Illegal sample size: " << size_guess << llendl;
@@ -251,7 +261,11 @@ BOOL LLVorbisDecodeState::initDecode()
if( abort_decode )
{
llwarns << "Canceling initDecode. Bad asset: " << mUUID << llendl;
- llwarns << "Bad asset encoded by: " << ov_comment(&mVF,-1)->vendor << llendl;
+ vorbis_comment* comment = ov_comment(&mVF,-1);
+ if (comment && comment->vendor)
+ {
+ llwarns << "Bad asset encoded by: " << comment->vendor << llendl;
+ }
delete mInFilep;
mInFilep = NULL;
return FALSE;
diff --git a/indra/llcommon/llversionserver.h b/indra/llcommon/llversionserver.h
index 87fe7001e0..ddda9fb6af 100644
--- a/indra/llcommon/llversionserver.h
+++ b/indra/llcommon/llversionserver.h
@@ -36,7 +36,7 @@
const S32 LL_VERSION_MAJOR = 2;
const S32 LL_VERSION_MINOR = 1;
const S32 LL_VERSION_PATCH = 0;
-const S32 LL_VERSION_BUILD = 0;
+const S32 LL_VERSION_BUILD = 13828;
const char * const LL_CHANNEL = "Second Life Server";
diff --git a/indra/llui/llaccordionctrl.h b/indra/llui/llaccordionctrl.h
index f26a380e5f..6fc9ca86a3 100644
--- a/indra/llui/llaccordionctrl.h
+++ b/indra/llui/llaccordionctrl.h
@@ -139,7 +139,7 @@ public:
*/
const LLAccordionCtrlTab* getExpandedTab() const;
- const LLAccordionCtrlTab* getSelectedTab() const { return mSelectedTab; }
+ LLAccordionCtrlTab* getSelectedTab() const { return mSelectedTab; }
bool getFitParent() const {return mFitParent;}
diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 22d6f6ca52..838f93d3f9 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2285,6 +2285,7 @@ void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom)
S32 floater_header_size = default_params.header_height;
static LLUICachedControl<S32> minimized_width ("UIMinimizedWidth", 0);
LLRect snap_rect_local = getLocalSnapRect();
+ snap_rect_local.mTop += mMinimizePositionVOffset;
for(S32 col = snap_rect_local.mLeft;
col < snap_rect_local.getWidth() - minimized_width;
col += minimized_width)
@@ -2382,6 +2383,19 @@ BOOL LLFloaterView::allChildrenClosed()
return true;
}
+void LLFloaterView::shiftFloaters(S32 x_offset, S32 y_offset)
+{
+ for (child_list_const_iter_t it = getChildList()->begin(); it != getChildList()->end(); ++it)
+ {
+ LLFloater* floaterp = dynamic_cast<LLFloater*>(*it);
+
+ if (floaterp && floaterp->isMinimized())
+ {
+ floaterp->translate(x_offset, y_offset);
+ }
+ }
+}
+
void LLFloaterView::refresh()
{
// Constrain children to be entirely on the screen
diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h
index 42f422f91c..e7d365238b 100644
--- a/indra/llui/llfloater.h
+++ b/indra/llui/llfloater.h
@@ -455,6 +455,7 @@ public:
// Given a child of gFloaterView, make sure this view can fit entirely onscreen.
void adjustToFitScreen(LLFloater* floater, BOOL allow_partial_outside);
+ void setMinimizePositionVerticalOffset(S32 offset) { mMinimizePositionVOffset = offset; }
void getMinimizePosition( S32 *left, S32 *bottom);
void restoreAll(); // un-minimize all floaters
typedef std::set<LLView*> skip_list_t;
@@ -471,6 +472,7 @@ public:
// attempt to close all floaters
void closeAllChildren(bool app_quitting);
BOOL allChildrenClosed();
+ void shiftFloaters(S32 x_offset, S32 y_offset);
LLFloater* getFrontmost() const;
LLFloater* getBackmost() const;
@@ -490,6 +492,7 @@ private:
BOOL mFocusCycleMode;
S32 mSnapOffsetBottom;
S32 mSnapOffsetRight;
+ S32 mMinimizePositionVOffset;
};
//
diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index cde08c7b19..3792f18c97 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -2723,7 +2723,10 @@ LLOnHoverChangeableTextSegment::LLOnHoverChangeableTextSegment( LLStyleConstSP s
F32 LLOnHoverChangeableTextSegment::draw(S32 start, S32 end, S32 selection_start, S32 selection_end, const LLRect& draw_rect)
{
F32 result = LLNormalTextSegment::draw(start, end, selection_start, selection_end, draw_rect);
- mStyle = mNormalStyle;
+ if (end == mEnd - mStart)
+ {
+ mStyle = mNormalStyle;
+ }
return result;
}
diff --git a/indra/llui/llurlentry.cpp b/indra/llui/llurlentry.cpp
index 17d211fb36..bf7b25910f 100644
--- a/indra/llui/llurlentry.cpp
+++ b/indra/llui/llurlentry.cpp
@@ -366,7 +366,7 @@ std::string LLUrlEntryAgent::getTooltip(const std::string &string) const
bool LLUrlEntryAgent::underlineOnHoverOnly(const std::string &string) const
{
std::string url = getUrl(string);
- return LLStringUtil::endsWith(url, "/about");
+ return LLStringUtil::endsWith(url, "/about") || LLStringUtil::endsWith(url, "/inspect");
}
std::string LLUrlEntryAgent::getLabel(const std::string &url, const LLUrlLabelCallback &cb)
diff --git a/indra/llwindow/llkeyboard.cpp b/indra/llwindow/llkeyboard.cpp
index 16cbf815e0..8f26f980d1 100644
--- a/indra/llwindow/llkeyboard.cpp
+++ b/indra/llwindow/llkeyboard.cpp
@@ -343,6 +343,13 @@ std::string LLKeyboard::stringFromKey(KEY key)
buffer[1] = '\0';
res = std::string(buffer);
}
+
+ LLKeyStringTranslatorFunc *trans = gKeyboard->mStringTranslator;
+ if (trans != NULL)
+ {
+ res = trans(res.c_str());
+ }
+
return res;
}
diff --git a/indra/llxuixml/lltrans.h b/indra/llxuixml/lltrans.h
index 856b9e04fc..6c8d28b346 100644
--- a/indra/llxuixml/lltrans.h
+++ b/indra/llxuixml/lltrans.h
@@ -103,11 +103,12 @@ public:
return findString(result, xml_desc, empty);
}
- static std::string getKeyboardString(const char* keystring)
- {
- // These map directly - no need to specialize
- return getString( ll_safe_string(keystring) );
- }
+ static std::string getKeyboardString(const char* keystring)
+ {
+ std::string key_str(keystring);
+ std::string trans_str;
+ return findString(trans_str, "Key_" + key_str) ? trans_str : key_str;
+ }
// get the default args
static const LLStringUtil::format_map_t& getDefaultArgs()
diff --git a/indra/newview/English.lproj/InfoPlist.strings b/indra/newview/English.lproj/InfoPlist.strings
index fc531f93d4..5c7cacedec 100644
--- a/indra/newview/English.lproj/InfoPlist.strings
+++ b/indra/newview/English.lproj/InfoPlist.strings
@@ -2,6 +2,6 @@
CFBundleName = "Second Life";
-CFBundleShortVersionString = "Second Life version 2.1.0.0";
-CFBundleGetInfoString = "Second Life version 2.1.0.0, Copyright 2004-2009 Linden Research, Inc.";
+CFBundleShortVersionString = "Second Life version 2.1.0.13828";
+CFBundleGetInfoString = "Second Life version 2.1.0.13828, Copyright 2004-2009 Linden Research, Inc.";
diff --git a/indra/newview/Info-SecondLife.plist b/indra/newview/Info-SecondLife.plist
index 9bc95f9b95..f7b11b217c 100644
--- a/indra/newview/Info-SecondLife.plist
+++ b/indra/newview/Info-SecondLife.plist
@@ -60,7 +60,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
- <string>2.1.0.0</string>
+ <string>2.1.0.13828</string>
<key>CSResourcesFileMapped</key>
<true/>
</dict>
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index 4dc78e9a1d..e97e152a38 100644
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -1149,10 +1149,9 @@ void LLAgentCamera::updateCamera()
static LLFastTimer::DeclareTimer ftm("Camera");
LLFastTimer t(ftm);
- //Ventrella - changed camera_skyward to the new global "mCameraUpVector"
+ // - changed camera_skyward to the new global "mCameraUpVector"
mCameraUpVector = LLVector3::z_axis;
//LLVector3 camera_skyward(0.f, 0.f, 1.f);
- //end Ventrella
U32 camera_mode = mCameraAnimating ? mLastCameraMode : mCameraMode;
@@ -1162,10 +1161,8 @@ void LLAgentCamera::updateCamera()
gAgentAvatarp->isSitting() &&
camera_mode == CAMERA_MODE_MOUSELOOK)
{
- //Ventrella
//changed camera_skyward to the new global "mCameraUpVector"
mCameraUpVector = mCameraUpVector * gAgentAvatarp->getRenderRotation();
- //end Ventrella
}
if (cameraThirdPerson() && mFocusOnAvatar && LLFollowCamMgr::getActiveFollowCamParams())
@@ -1173,13 +1170,11 @@ void LLAgentCamera::updateCamera()
changeCameraToFollow();
}
- //Ventrella
//NOTE - this needs to be integrated into a general upVector system here within llAgent.
if ( camera_mode == CAMERA_MODE_FOLLOW && mFocusOnAvatar )
{
mCameraUpVector = mFollowCam.getUpVector();
}
- //end Ventrella
if (mSitCameraEnabled)
{
@@ -1256,7 +1251,6 @@ void LLAgentCamera::updateCamera()
// lerp camera focus offset
mCameraFocusOffset = lerp(mCameraFocusOffset, mCameraFocusOffsetTarget, LLCriticalDamp::getInterpolant(CAMERA_FOCUS_HALF_LIFE));
- //Ventrella
if ( mCameraMode == CAMERA_MODE_FOLLOW )
{
if (isAgentAvatarValid())
@@ -1283,7 +1277,6 @@ void LLAgentCamera::updateCamera()
}
}
}
- // end Ventrella
BOOL hit_limit;
LLVector3d camera_pos_global;
@@ -1414,10 +1407,8 @@ void LLAgentCamera::updateCamera()
// Move the camera
- //Ventrella
LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, mCameraUpVector, focus_agent);
//LLViewerCamera::getInstance()->updateCameraLocation(mCameraPositionAgent, camera_skyward, focus_agent);
- //end Ventrella
// Change FOV
LLViewerCamera::getInstance()->setView(LLViewerCamera::getInstance()->getDefaultFOV() / (1.f + mCameraCurrentFOVZoomFactor));
@@ -1532,12 +1523,11 @@ LLVector3d LLAgentCamera::calcFocusPositionTargetGlobal()
clearFocusObject();
}
- // Ventrella
if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)
{
mFocusTargetGlobal = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedFocus());
return mFocusTargetGlobal;
- }// End Ventrella
+ }
else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
{
LLVector3d at_axis(1.0, 0.0, 0.0);
@@ -1706,11 +1696,10 @@ LLVector3d LLAgentCamera::calcCameraPositionTargetGlobal(BOOL *hit_limit)
LLVector3d camera_position_global;
- // Ventrella
if (mCameraMode == CAMERA_MODE_FOLLOW && mFocusOnAvatar)
{
camera_position_global = gAgent.getPosGlobalFromAgent(mFollowCam.getSimulatedPosition());
- }// End Ventrella
+ }
else if (mCameraMode == CAMERA_MODE_MOUSELOOK)
{
if (!isAgentAvatarValid() || gAgentAvatarp->mDrawable.isNull())
@@ -2130,7 +2119,6 @@ void LLAgentCamera::changeCameraToDefault()
}
-// Ventrella
//-----------------------------------------------------------------------------
// changeCameraToFollow()
//-----------------------------------------------------------------------------
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 337878cf96..5db16d9250 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1756,7 +1756,7 @@ void LLAgentWearables::userUpdateAttachments(LLInventoryModel::item_array_t& obj
LLViewerObject *objectp = (*attachment_iter);
if (objectp)
{
- LLUUID object_item_id = objectp->getItemID();
+ LLUUID object_item_id = objectp->getAttachmentItemID();
if (requested_item_ids.find(object_item_id) != requested_item_ids.end())
{
// Object currently worn, was requested.
diff --git a/indra/newview/llagentwearablesfetch.cpp b/indra/newview/llagentwearablesfetch.cpp
index d911d123f4..f6bb1b9bc9 100644
--- a/indra/newview/llagentwearablesfetch.cpp
+++ b/indra/newview/llagentwearablesfetch.cpp
@@ -215,7 +215,7 @@ void LLInitialWearablesFetch::processWearablesMessage()
{
LLViewerObject* attached_object = (*attachment_iter);
if (!attached_object) continue;
- const LLUUID& item_id = attached_object->getItemID();
+ const LLUUID& item_id = attached_object->getAttachmentItemID();
if (item_id.isNull()) continue;
ids.push_back(item_id);
}
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index cecb2ee6ad..b844803cb6 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -1305,16 +1305,8 @@ bool LLAppearanceMgr::getCanReplaceCOF(const LLUUID& outfit_cat_id)
return false;
}
- // Check whether the outfit contains any non-worn wearables.
- LLInventoryModel::cat_array_t cats;
- LLInventoryModel::item_array_t items;
- LLFindWearablesEx not_worn(/*is_worn=*/ false, /*include_body_parts=*/ true);
- gInventory.collectDescendentsIf(outfit_cat_id,
- cats,
- items,
- LLInventoryModel::EXCLUDE_TRASH,
- not_worn);
- return items.size() > 0;
+ // Check whether the outfit contains the full set of body parts (shape+skin+hair+eyes).
+ return getCanMakeFolderIntoOutfit(outfit_cat_id);
}
void LLAppearanceMgr::purgeBaseOutfitLink(const LLUUID& category)
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index 7c33923f04..7204e6c39c 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -699,8 +699,9 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL
{
LLStyle::Params link_params(style_params);
link_params.overwriteFrom(LLStyleMap::instance().lookupAgent(chat.mFromID));
- // Convert the name to a hotlink and add to message.
- mEditor->appendText(chat.mFromName + delimiter, false, link_params);
+ // Add link to avatar's inspector and delimiter to message.
+ mEditor->appendText(link_params.link_href, false, style_params);
+ mEditor->appendText(delimiter, false, style_params);
}
else
{
diff --git a/indra/newview/llfloatergroups.cpp b/indra/newview/llfloatergroups.cpp
index 8558345efa..834f517734 100644
--- a/indra/newview/llfloatergroups.cpp
+++ b/indra/newview/llfloatergroups.cpp
@@ -47,7 +47,6 @@
#include "llbutton.h"
#include "llgroupactions.h"
#include "llscrolllistctrl.h"
-#include "llselectmgr.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "lltrans.h"
@@ -90,8 +89,6 @@ BOOL LLFloaterGroupPicker::postBuild()
list_ctrl->setContextMenu(LLScrollListCtrl::MENU_GROUP);
}
- LLSelectMgr::getInstance()->mUpdateSignal.connect(boost::bind(&LLFloaterGroupPicker::onBtnCancel, this));
-
childSetAction("OK", onBtnOK, this);
childSetAction("Cancel", onBtnCancel, this);
diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 49d80a0249..d37886806b 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -62,6 +62,7 @@
#include "llviewerwindow.h"
#include "llvoavatar.h"
#include "llfloaterproperties.h"
+#include "llnotificationsutil.h"
// Linden library includes
#include "lldbstrings.h"
@@ -104,7 +105,6 @@ void copy_selected_item(void* user_data);
void open_selected_items(void* user_data);
void properties_selected_items(void* user_data);
void paste_items(void* user_data);
-void renamer_focus_lost( LLFocusableElement* handler, void* user_data );
//---------------------------------------------------------------------------
@@ -274,6 +274,8 @@ LLFolderView::LLFolderView(const Params& p)
// Destroys the object
LLFolderView::~LLFolderView( void )
{
+ closeRenamer();
+
// The release focus call can potentially call the
// scrollcontainer, which can potentially be called with a partly
// destroyed scollcontainer. Just null it out here, and no worries
@@ -289,8 +291,6 @@ LLFolderView::~LLFolderView( void )
LLView::deleteViewByHandle(mPopupMenuHandle);
- gViewerWindow->removePopup(mRenamer);
-
mAutoOpenItems.removeAllNodes();
clearSelection();
mItems.clear();
@@ -561,9 +561,7 @@ void LLFolderView::addToSelectionList(LLFolderViewItem* item)
void LLFolderView::removeFromSelectionList(LLFolderViewItem* item)
{
- // If items are filtered while background fetch is in progress
- // scrollbar resets to the first filtered item. See EXT-3981.
- if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && mSelectedItems.size())
+ if (mSelectedItems.size())
{
mSelectedItems.back()->setIsCurSelection(FALSE);
}
@@ -999,12 +997,7 @@ void LLFolderView::finishRenamingItem( void )
mRenameItem->rename( mRenamer->getText() );
}
- gViewerWindow->removePopup(mRenamer);
-
- if( mRenameItem )
- {
- setSelectionFromRoot( mRenameItem, TRUE );
- }
+ closeRenamer();
// List is re-sorted alphabeticly, so scroll to make sure the selected item is visible.
scrollToShowSelection();
@@ -1012,20 +1005,26 @@ void LLFolderView::finishRenamingItem( void )
void LLFolderView::closeRenamer( void )
{
- // will commit current name (which could be same as original name)
- mRenamer->setFocus( FALSE );
- mRenamer->setVisible( FALSE );
- gViewerWindow->removePopup(mRenamer);
-
- if( mRenameItem )
+ if (mRenamer && mRenamer->getVisible())
{
- setSelectionFromRoot( mRenameItem, TRUE );
- mRenameItem = NULL;
+ // Triggers onRenamerLost() that actually closes the renamer.
+ gViewerWindow->removePopup(mRenamer);
}
}
void LLFolderView::removeSelectedItems( void )
{
+ if (mSelectedItems.empty()) return;
+ LLSD args;
+ args["QUESTION"] = LLTrans::getString(mSelectedItems.size() > 1 ? "DeleteItems" : "DeleteItem");
+ LLNotificationsUtil::add("DeleteItems", args, LLSD(), boost::bind(&LLFolderView::onItemsRemovalConfirmation, this, _1, _2));
+}
+
+void LLFolderView::onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response)
+{
+ S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+ if (option != 0) return; // canceled
+
if(getVisible() && getEnabled())
{
// just in case we're removing the renaming item.
@@ -1445,8 +1444,7 @@ void LLFolderView::startRenamingSelectedItem( void )
mRenamer->setVisible( TRUE );
// set focus will fail unless item is visible
mRenamer->setFocus( TRUE );
- mRenamer->setTopLostCallback(boost::bind(&LLFolderView::onRenamerLost, this, _1));
- mRenamer->setFocusLostCallback(boost::bind(&LLFolderView::onRenamerLost, this, _1));
+ mRenamer->setTopLostCallback(boost::bind(&LLFolderView::onRenamerLost, this));
gViewerWindow->addPopup(mRenamer);
}
}
@@ -1967,10 +1965,7 @@ BOOL LLFolderView::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
void LLFolderView::deleteAllChildren()
{
- if(mRenamer == gFocusMgr.getTopCtrl())
- {
- gViewerWindow->removePopup(mRenamer);
- }
+ closeRenamer();
LLView::deleteViewByHandle(mPopupMenuHandle);
mPopupMenuHandle = LLHandle<LLView>();
mRenamer = NULL;
@@ -1981,7 +1976,9 @@ void LLFolderView::deleteAllChildren()
void LLFolderView::scrollToShowSelection()
{
- if (mSelectedItems.size())
+ // If items are filtered while background fetch is in progress
+ // scrollbar resets to the first filtered item. See EXT-3981.
+ if (!LLInventoryModelBackgroundFetch::instance().backgroundFetchActive() && mSelectedItems.size())
{
mNeedsScroll = TRUE;
}
@@ -2453,13 +2450,20 @@ S32 LLFolderView::notify(const LLSD& info)
/// Local function definitions
///----------------------------------------------------------------------------
-void LLFolderView::onRenamerLost( LLFocusableElement* renamer)
+void LLFolderView::onRenamerLost()
{
- mRenameItem = NULL;
- LLUICtrl* uictrl = dynamic_cast<LLUICtrl*>(renamer);
- if (uictrl)
+ if (mRenamer && mRenamer->getVisible())
+ {
+ mRenamer->setVisible(FALSE);
+
+ // will commit current name (which could be same as original name)
+ mRenamer->setFocus(FALSE);
+ }
+
+ if( mRenameItem )
{
- uictrl->setVisible(FALSE);
+ setSelectionFromRoot( mRenameItem, TRUE );
+ mRenameItem = NULL;
}
}
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index a7763e8eeb..21004fdb16 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -283,7 +283,7 @@ protected:
LLScrollContainer* mScrollContainer; // NULL if this is not a child of a scroll container.
void commitRename( const LLSD& data );
- void onRenamerLost( LLFocusableElement* renamer);
+ void onRenamerLost();
void finishRenamingItem( void );
void closeRenamer( void );
@@ -293,6 +293,8 @@ protected:
BOOL addNoOptions(LLMenuGL* menu) const;
+ void onItemsRemovalConfirmation(const LLSD& notification, const LLSD& response);
+
protected:
LLHandle<LLView> mPopupMenuHandle;
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 7e710ce8e1..53622f7188 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3989,6 +3989,11 @@ std::string LLObjectBridge::getLabelSuffix() const
{
if (get_is_item_worn(mUUID))
{
+ if (!isAgentAvatarValid())
+ {
+ return LLItemBridge::getLabelSuffix() + LLTrans::getString("worn");
+ }
+
std::string attachment_point_name = gAgentAvatarp->getAttachedPointName(mUUID);
// e.g. "(worn on ...)" / "(attached to ...)"
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index f921bca623..f2207e5c00 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -403,6 +403,12 @@ void LLOutfitsList::onOpen(const LLSD& /*info*/)
mIsInitialized = true;
}
+
+ LLAccordionCtrlTab* selected_tab = mAccordion->getSelectedTab();
+ if (!selected_tab) return;
+
+ // Pass focus to the selected outfit tab.
+ selected_tab->showAndFocusHeader();
}
void LLOutfitsList::refreshList(const LLUUID& category_id)
@@ -1038,14 +1044,7 @@ void LLOutfitsList::wearSelectedItems()
return;
}
- uuid_vec_t::const_iterator it;
- // Wear items from all selected lists(if possible- add, else replace)
- for (it = selected_uuids.begin(); it != selected_uuids.end()-1; ++it)
- {
- LLAppearanceMgr::getInstance()->wearItemOnAvatar(*it, false, false);
- }
- // call update only when wearing last item
- LLAppearanceMgr::getInstance()->wearItemOnAvatar(*it, true, false);
+ wear_multiple(selected_uuids, false);
}
void LLOutfitsList::onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y)
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index b399e41791..6f47fc60b0 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -522,6 +522,9 @@ void LLLandmarksPanel::setParcelID(const LLUUID& parcel_id)
{
if (!parcel_id.isNull())
{
+ //ext-4655, defensive. remove now incase this gets called twice without a remove
+ LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_id, this);
+
LLRemoteParcelInfoProcessor::getInstance()->addObserver(parcel_id, this);
LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id);
}
diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp
index 0464aa377e..cfd31b6829 100644
--- a/indra/newview/llpaneloutfitedit.cpp
+++ b/indra/newview/llpaneloutfitedit.cpp
@@ -543,12 +543,26 @@ BOOL LLPanelOutfitEdit::postBuild()
childSetAction(REVERT_BTN, boost::bind(&LLAppearanceMgr::wearBaseOutfit, LLAppearanceMgr::getInstance()));
+ /*
+ * By default AT_CLOTHING are sorted by (in in MY OUTFITS):
+ * - by type (types order determined in LLWearableType::EType)
+ * - each LLWearableType::EType by outer layer on top
+ *
+ * In Add More panel AT_CLOTHING should be sorted in a such way:
+ * - by type (types order determined in LLWearableType::EType)
+ * - each LLWearableType::EType by name (EXT-8205)
+ */
+ mWearableListViewItemsComparator = new LLWearableItemTypeNameComparator();
+ mWearableListViewItemsComparator->setOrder(LLAssetType::AT_CLOTHING, LLWearableItemTypeNameComparator::ORDER_RANK_1, false, true);
+
mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel");
mWearableItemsList = getChild<LLWearableItemsList>("list_view");
mWearableItemsList->setCommitOnSelectionChange(true);
mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this));
mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this));
+ mWearableItemsList->setComparator(mWearableListViewItemsComparator);
+
mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this));
return TRUE;
}
diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h
index 871ed8d7ec..8d0325a4d6 100644
--- a/indra/newview/llpaneloutfitedit.h
+++ b/indra/newview/llpaneloutfitedit.h
@@ -232,6 +232,7 @@ private:
LLFilteredWearableListManager* mWearableListManager;
LLWearableItemsList* mWearableItemsList;
LLPanel* mWearablesListViewPanel;
+ LLWearableItemTypeNameComparator* mWearableListViewItemsComparator;
LLCOFDragAndDropObserver* mCOFDragAndDropObserver;
diff --git a/indra/newview/llpanelpick.cpp b/indra/newview/llpanelpick.cpp
index 11b51f4dd4..54eb21422e 100644
--- a/indra/newview/llpanelpick.cpp
+++ b/indra/newview/llpanelpick.cpp
@@ -210,6 +210,9 @@ void LLPanelPickInfo::sendParcelInfoRequest()
{
if (mParcelId != mRequestedId)
{
+ //ext-4655, remove now incase this gets called twice without a remove
+ LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedId, this);
+
LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelId, this);
LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelId);
diff --git a/indra/newview/llpanelplaceinfo.cpp b/indra/newview/llpanelplaceinfo.cpp
index 1ca4a048a4..095cd79aaf 100644
--- a/indra/newview/llpanelplaceinfo.cpp
+++ b/indra/newview/llpanelplaceinfo.cpp
@@ -133,6 +133,10 @@ void LLPanelPlaceInfo::sendParcelInfoRequest()
{
if (mParcelID != mRequestedID)
{
+ //ext-4655, defensive. remove now incase this gets called twice without a remove
+ //as panel never closes its ok atm (but wrong :)
+ LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mRequestedID, this);
+
LLRemoteParcelInfoProcessor::getInstance()->addObserver(mParcelID, this);
LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(mParcelID);
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index 68dc1cdf71..e73d1fb7c2 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -161,6 +161,8 @@ BOOL LLPanelTopInfoBar::postBuild()
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->addAgentParcelChangedCallback(
boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this));
+ setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChange, this, _2));
+
return TRUE;
}
@@ -174,6 +176,27 @@ void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged()
setParcelInfoText(new_text);
}
+// when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of
+// PanelTopInfoBar. See EXT-7951.
+void LLPanelTopInfoBar::onVisibilityChange(const LLSD& show)
+{
+ // this height is used as a vertical offset for ALREADY MINIMIZED floaters
+ // when PanelTopInfoBar visibility changes
+ S32 height = getRect().getHeight();
+
+ // this vertical offset is used for a start minimize position of floaters that
+ // are NOT MIMIMIZED YET
+ S32 minimize_pos_offset = 0;
+
+ if (show.asBoolean())
+ {
+ height = minimize_pos_offset = -height;
+ }
+
+ gFloaterView->shiftFloaters(0, height);
+ gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset);
+}
+
void LLPanelTopInfoBar::draw()
{
updateParcelInfoText();
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 6e6fbc08ab..0603ee744f 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -58,6 +58,11 @@ public:
*/
void handleLoginComplete();
+ /**
+ * Called when the top info bar gets shown or hidden
+ */
+ void onVisibilityChange(const LLSD& show);
+
private:
class LLParcelChangeObserver;
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index adfd457664..33a464fea6 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -473,7 +473,7 @@ void LLSidepanelAppearance::fetchInventory()
{
LLViewerObject* attached_object = (*attachment_iter);
if (!attached_object) continue;
- const LLUUID& item_id = attached_object->getItemID();
+ const LLUUID& item_id = attached_object->getAttachmentItemID();
if (item_id.isNull()) continue;
ids.push_back(item_id);
}
diff --git a/indra/newview/llstylemap.cpp b/indra/newview/llstylemap.cpp
index 8fab3bb361..b3d7dddde8 100644
--- a/indra/newview/llstylemap.cpp
+++ b/indra/newview/llstylemap.cpp
@@ -46,20 +46,12 @@ const LLStyle::Params &LLStyleMap::lookupAgent(const LLUUID &source)
if (mMap.find(source) == mMap.end())
{
LLStyle::Params style_params;
- if (source != LLUUID::null && source != gAgent.getID() )
+ if (source != LLUUID::null)
{
style_params.color.control = "HTMLLinkColor";
style_params.readonly_color.control = "HTMLLinkColor";
- style_params.link_href =
- LLSLURL("agent", source, "inspect").getSLURLString();
+ style_params.link_href = LLSLURL("agent", source, "inspect").getSLURLString();
}
- else
- {
- // Make the resident's own name white and don't make the name clickable.
- style_params.color = LLColor4::white;
- style_params.readonly_color = LLColor4::white;
- }
-
mMap[source] = style_params;
}
return mMap[source];
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 65a40a5b3a..f4899d0d5d 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -54,6 +54,7 @@
#include "llviewertexturelist.h"
#include "llviewertexture.h"
#include "llviewerregion.h"
+#include "llviewerstats.h"
#include "llworld.h"
//////////////////////////////////////////////////////////////////////////////
@@ -150,7 +151,7 @@ public:
~LLTextureFetchWorker();
void relese() { --mActiveCount; }
- void callbackHttpGet(const LLChannelDescriptors& channels,
+ S32 callbackHttpGet(const LLChannelDescriptors& channels,
const LLIOPipe::buffer_ptr_t& buffer,
bool partial, bool success);
void callbackCacheRead(bool success, LLImageFormatted* image,
@@ -335,8 +336,9 @@ public:
worker->setGetStatus(status, reason);
// llwarns << "CURL GET FAILED, status:" << status << " reason:" << reason << llendl;
}
- mFetcher->removeFromHTTPQueue(mID);
- worker->callbackHttpGet(channels, buffer, partial, success);
+
+ S32 data_size = worker->callbackHttpGet(channels, buffer, partial, success);
+ mFetcher->removeFromHTTPQueue(mID, data_size);
}
else
{
@@ -850,19 +852,10 @@ bool LLTextureFetchWorker::doWork(S32 param)
{
if(mCanUseHTTP)
{
- // *TODO: Integrate this with llviewerthrottle
- // Note: LLViewerThrottle uses dynamic throttling which makes sense for UDP,
- // but probably not for Textures.
- // Set the throttle to the entire bandwidth, assuming UDP packets will get priority
- // when they are needed
- F32 max_bandwidth = mFetcher->mMaxBandwidth;
- if (mFetcher->isHTTPThrottled(mDesiredSize) ||
- mFetcher->getTextureBandwidth() > max_bandwidth)
- {
- // Make normal priority and return (i.e. wait until there is room in the queue)
- setPriority(LLWorkerThread::PRIORITY_NORMAL | mWorkPriority);
- return false;
- }
+ //NOTE:
+ //it seems ok to let sim control the UDP traffic
+ //so there is no throttle for http here.
+ //
mFetcher->removeFromNetworkQueue(this, false);
@@ -872,10 +865,17 @@ bool LLTextureFetchWorker::doWork(S32 param)
cur_size = mFormattedImage->getDataSize(); // amount of data we already have
if (mFormattedImage->getDiscardLevel() == 0)
{
- // We already have all the data, just decode it
- mLoadedDiscard = mFormattedImage->getDiscardLevel();
- mState = DECODE_IMAGE;
- return false;
+ if(cur_size > 0)
+ {
+ // We already have all the data, just decode it
+ mLoadedDiscard = mFormattedImage->getDiscardLevel();
+ mState = DECODE_IMAGE;
+ return false;
+ }
+ else
+ {
+ return true ; //abort.
+ }
}
}
mRequestedSize = mDesiredSize;
@@ -892,7 +892,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
mGetReason.clear();
LL_DEBUGS("Texture") << "HTTP GET: " << mID << " Offset: " << offset
<< " Bytes: " << mRequestedSize
- << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << max_bandwidth
+ << " Bandwidth(kbps): " << mFetcher->getTextureBandwidth() << "/" << mFetcher->mMaxBandwidth
<< LL_ENDL;
setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
mState = WAIT_HTTP_REQ;
@@ -972,6 +972,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
else
{
resetFormattedData();
+ mState = DONE;
return true; // failed
}
}
@@ -982,6 +983,17 @@ bool LLTextureFetchWorker::doWork(S32 param)
}
}
+ llassert_always(mBufferSize == cur_size + mRequestedSize);
+ if(!mBufferSize)//no data received.
+ {
+ delete[] mBuffer;
+ mBuffer = NULL;
+
+ //abort.
+ mState = DONE;
+ return true;
+ }
+
if (mFormattedImage.isNull())
{
// For now, create formatted image based on extension
@@ -992,8 +1004,7 @@ bool LLTextureFetchWorker::doWork(S32 param)
mFormattedImage = new LLImageJ2C; // default
}
}
-
- llassert_always(mBufferSize == cur_size + mRequestedSize);
+
if (mHaveAllData && mRequestedDiscard == 0) //the image file is fully loaded.
{
mFileSize = mBufferSize;
@@ -1052,7 +1063,12 @@ bool LLTextureFetchWorker::doWork(S32 param)
if (mFormattedImage->getDataSize() <= 0)
{
- llerrs << "Decode entered with invalid mFormattedImage. ID = " << mID << llendl;
+ //llerrs << "Decode entered with invalid mFormattedImage. ID = " << mID << llendl;
+
+ //abort, don't decode
+ mState = DONE;
+ setPriority(LLWorkerThread::PRIORITY_LOW | mWorkPriority);
+ return true;
}
if (mLoadedDiscard < 0)
{
@@ -1249,8 +1265,7 @@ bool LLTextureFetchWorker::deleteOK()
if ((haveWork() &&
// not ok to delete from these states
- ((mState == WAIT_HTTP_REQ) ||
- (mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))
+ ((mState >= WRITE_TO_CACHE && mState <= WAIT_ON_WRITE))))
{
delete_ok = false;
}
@@ -1329,29 +1344,29 @@ bool LLTextureFetchWorker::processSimulatorPackets()
//////////////////////////////////////////////////////////////////////////////
-void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
+S32 LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
const LLIOPipe::buffer_ptr_t& buffer,
bool partial, bool success)
{
+ S32 data_size = 0 ;
+
LLMutexLock lock(&mWorkMutex);
if (mState != WAIT_HTTP_REQ)
{
llwarns << "callbackHttpGet for unrequested fetch worker: " << mID
<< " req=" << mSentRequest << " state= " << mState << llendl;
- return;
+ return data_size;
}
if (mLoaded)
{
llwarns << "Duplicate callback for " << mID.asString() << llendl;
- return; // ignore duplicate callback
+ return data_size ; // ignore duplicate callback
}
if (success)
{
// get length of stream:
- S32 data_size = buffer->countAfter(channels.in(), NULL);
-
- gTextureList.sTextureBits += data_size * 8; // Approximate - does not include header bits
+ data_size = buffer->countAfter(channels.in(), NULL);
LL_DEBUGS("Texture") << "HTTP RECEIVED: " << mID.asString() << " Bytes: " << data_size << LL_ENDL;
if (data_size > 0)
@@ -1388,6 +1403,8 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
}
mLoaded = TRUE;
setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
+
+ return data_size ;
}
//////////////////////////////////////////////////////////////////////////////
@@ -1506,15 +1523,11 @@ LLTextureFetch::LLTextureFetch(LLTextureCache* cache, LLImageDecodeThread* image
mTextureCache(cache),
mImageDecodeThread(imagedecodethread),
mTextureBandwidth(0),
+ mHTTPTextureBits(0),
mCurlGetRequest(NULL)
{
mMaxBandwidth = gSavedSettings.getF32("ThrottleBandwidthKBPS");
mTextureInfo.setUpLogging(gSavedSettings.getBOOL("LogTextureDownloadsToViewerLog"), gSavedSettings.getBOOL("LogTextureDownloadsToSimulator"), gSavedSettings.getU32("TextureLoggingThreshold"));
-
- for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)
- {
- mHTTPThrottleFlag[i] = FALSE ;
- }
}
LLTextureFetch::~LLTextureFetch()
@@ -1656,69 +1669,11 @@ void LLTextureFetch::addToHTTPQueue(const LLUUID& id)
mHTTPTextureQueue.insert(id);
}
-void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id)
+void LLTextureFetch::removeFromHTTPQueue(const LLUUID& id, S32 received_size)
{
LLMutexLock lock(&mNetworkQueueMutex);
mHTTPTextureQueue.erase(id);
-}
-
-void LLTextureFetch::clearHTTPThrottleFlag()
-{
- static const F32 WAIT_TIME = 0.3f ; //seconds.
- static LLFrameTimer timer ;
-
- if(timer.getElapsedTimeF32() < WAIT_TIME) //wait for WAIT_TIME
- {
- return ;
- }
- timer.reset() ;
-
- LLMutexLock lock(&mNetworkQueueMutex);
- for(S32 i = 0 ; i < TOTAL_TEXTURE_TYPES; i++)//reset the http throttle flags.
- {
- mHTTPThrottleFlag[i] = FALSE ;
- }
-}
-
-//check if need to throttle this fetching request.
-//rule: if a request can not be inserted into the http queue due to a full queue,
-// block all future insertions of requests with larger fetching size requirement.
-//because:
-// later insertions are usually at lower priorities; and
-// small textures need chance to be fetched.
-bool LLTextureFetch::isHTTPThrottled(S32 requested_size)
-{
- static const S32 SMALL_TEXTURE_MAX_SIZE = 64 * 64 * 4 ;
- static const S32 MEDIUM_TEXTURE_MAX_SIZE = 256 * 256 * 4 ;
- static const U32 MAX_HTTP_QUEUE_SIZE = 8 ;
-
- //determine the class of the texture: SMALL, MEDIUM, or LARGE.
- S32 type = LARGE_TEXTURE ;
- if(requested_size <= SMALL_TEXTURE_MAX_SIZE)
- {
- type = SMALL_TEXTURE ;
- }
- else if(requested_size <= MEDIUM_TEXTURE_MAX_SIZE)
- {
- type = MEDIUM_TEXTURE ;
- }
-
- LLMutexLock lock(&mNetworkQueueMutex);
-
- if(mHTTPTextureQueue.size() >= MAX_HTTP_QUEUE_SIZE)//if the http queue is full.
- {
- if(!mHTTPThrottleFlag[type + 1])
- {
- for(S32 i = type + 1 ; i < TOTAL_TEXTURE_TYPES; i++) //block all requests with fetching size larger than this request.
- {
- mHTTPThrottleFlag[i] = TRUE ;
- }
- }
-
- return true ;
- }
-
- return mHTTPThrottleFlag[type] ; //true if this request can not be inserted to the http queue.
+ mHTTPTextureBits += received_size * 8; // Approximate - does not include header bits
}
void LLTextureFetch::deleteRequest(const LLUUID& id, bool cancel)
@@ -1866,12 +1821,19 @@ bool LLTextureFetch::updateRequestPriority(const LLUUID& id, F32 priority)
//virtual
S32 LLTextureFetch::update(U32 max_time_ms)
{
- S32 res;
-
static LLCachedControl<F32> band_width(gSavedSettings,"ThrottleBandwidthKBPS");
- mMaxBandwidth = band_width ;
-
- res = LLWorkerThread::update(max_time_ms);
+
+ {
+ mNetworkQueueMutex.lock() ;
+ mMaxBandwidth = band_width ;
+
+ gTextureList.sTextureBits += mHTTPTextureBits ;
+ mHTTPTextureBits = 0 ;
+
+ mNetworkQueueMutex.unlock() ;
+ }
+
+ S32 res = LLWorkerThread::update(max_time_ms);
if (!mDebugPause)
{
@@ -1887,7 +1849,6 @@ S32 LLTextureFetch::update(U32 max_time_ms)
lldebugs << "processed: " << processed << " messages." << llendl;
}
}
- clearHTTPThrottleFlag();
return res;
}
diff --git a/indra/newview/lltexturefetch.h b/indra/newview/lltexturefetch.h
index c31c38b04a..2024165e7e 100644
--- a/indra/newview/lltexturefetch.h
+++ b/indra/newview/lltexturefetch.h
@@ -94,9 +94,7 @@ protected:
void addToNetworkQueue(LLTextureFetchWorker* worker);
void removeFromNetworkQueue(LLTextureFetchWorker* worker, bool cancel);
void addToHTTPQueue(const LLUUID& id);
- void removeFromHTTPQueue(const LLUUID& id);
- bool isHTTPThrottled(S32 requested_size);
- void clearHTTPThrottleFlag();
+ void removeFromHTTPQueue(const LLUUID& id, S32 received_size = 0);
void removeRequest(LLTextureFetchWorker* worker, bool cancel);
// Called from worker thread (during doWork)
void processCurlRequests();
@@ -136,15 +134,7 @@ private:
F32 mMaxBandwidth;
LLTextureInfo mTextureInfo;
- enum
- {
- SMALL_TEXTURE = 0 , //size <= 64 * 64
- MEDIUM_TEXTURE, //size <= 256 * 256
- LARGE_TEXTURE, //size > 256 * 256
- DUMMY,
- TOTAL_TEXTURE_TYPES
- };
- BOOL mHTTPThrottleFlag[TOTAL_TEXTURE_TYPES];
+ U32 mHTTPTextureBits;
};
#endif // LL_LLTEXTUREFETCH_H
diff --git a/indra/newview/llviewerjointattachment.cpp b/indra/newview/llviewerjointattachment.cpp
index 2b4b78d82d..da4960b69d 100644
--- a/indra/newview/llviewerjointattachment.cpp
+++ b/indra/newview/llviewerjointattachment.cpp
@@ -172,19 +172,7 @@ BOOL LLViewerJointAttachment::addObject(LLViewerObject* object)
// re-connect object to the joint correctly
}
- // Find the inventory item ID of the attached object
- LLNameValue* item_id_nv = object->getNVPair("AttachItemID");
- if( item_id_nv )
- {
- const char* s = item_id_nv->getString();
- if( s )
- {
- LLUUID item_id;
- item_id.set(s);
- object->setItemID(item_id);
- lldebugs << "getNVPair( AttachItemID ) = " << item_id << llendl;
- }
- }
+ object->extractAttachmentItemID();
mAttachedObjects.push_back(object);
setupDrawable(object);
@@ -303,7 +291,7 @@ void LLViewerJointAttachment::removeObject(LLViewerObject *object)
{
mUpdateXform = FALSE;
}
- object->setItemID(LLUUID::null);
+ object->setAttachmentItemID(LLUUID::null);
}
//-----------------------------------------------------------------------------
@@ -429,7 +417,7 @@ const LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &o
++iter)
{
const LLViewerObject* attached_object = (*iter);
- if (attached_object->getItemID() == object_id)
+ if (attached_object->getAttachmentItemID() == object_id)
{
return attached_object;
}
@@ -444,7 +432,7 @@ LLViewerObject *LLViewerJointAttachment::getAttachedObject(const LLUUID &object_
++iter)
{
LLViewerObject* attached_object = (*iter);
- if (attached_object->getItemID() == object_id)
+ if (attached_object->getAttachmentItemID() == object_id)
{
return attached_object;
}
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 92195f0a4d..2a72e255d0 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -1083,6 +1083,8 @@ class LLAdvancedToggleWireframe : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
gUseWireframe = !(gUseWireframe);
+ LLPipeline::updateRenderDeferred();
+ gPipeline.resetVertexBuffers();
return true;
}
};
@@ -5950,7 +5952,8 @@ void LLObjectAttachToAvatar::confirmReplaceAttachment(S32 option, LLViewerJointA
delta = delta * 0.5f;
walkToSpot -= delta;
- CallbackData* user_data = new CallbackData(attachment_point, mReplace); // *TODO: leak if the callback isn't called?
+ // The callback will be called even if avatar fails to get close enough to the object, so we won't get a memory leak.
+ CallbackData* user_data = new CallbackData(attachment_point, mReplace);
gAgent.startAutoPilotGlobal(gAgent.getPosGlobalFromAgent(walkToSpot), "Attach", NULL, onNearAttachObject, user_data, stop_distance);
gAgentCamera.clearFocusObject();
}
@@ -6071,7 +6074,7 @@ static bool onEnableAttachmentLabel(LLUICtrl* ctrl, const LLSD& data)
const LLViewerObject* attached_object = (*attachment_iter);
if (attached_object)
{
- LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getItemID());
+ LLViewerInventoryItem* itemp = gInventory.getItem(attached_object->getAttachmentItemID());
if (itemp)
{
label += std::string(" (") + itemp->getName() + std::string(")");
@@ -6190,14 +6193,14 @@ class LLAttachmentEnableDrop : public view_listener_t
{
// make sure item is in your inventory (it could be a delayed attach message being sent from the sim)
// so check to see if the item is in the inventory already
- item = gInventory.getItem((*attachment_iter)->getItemID());
+ item = gInventory.getItem((*attachment_iter)->getAttachmentItemID());
if (!item)
{
// Item does not exist, make an observer to enable the pie menu
// when the item finishes fetching worst case scenario
// if a fetch is already out there (being sent from a slow sim)
// we refetch and there are 2 fetches
- LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getItemID());
+ LLWornItemFetchedObserver* worn_item_fetched = new LLWornItemFetchedObserver((*attachment_iter)->getAttachmentItemID());
worn_item_fetched->startFetch();
gInventory.addObserver(worn_item_fetched);
}
@@ -6544,7 +6547,7 @@ void handle_dump_attachments(void*)
!attached_object->mDrawable->isRenderType(0));
LLVector3 pos;
if (visible) pos = attached_object->mDrawable->getPosition();
- llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getItemID()
+ llinfos << "ATTACHMENT " << key << ": item_id=" << attached_object->getAttachmentItemID()
<< (attached_object ? " present " : " absent ")
<< (visible ? "visible " : "invisible ")
<< " at " << pos
diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp
index 15bdf126c5..d3e6f01bc8 100644
--- a/indra/newview/llviewerobject.cpp
+++ b/indra/newview/llviewerobject.cpp
@@ -5233,3 +5233,28 @@ void LLViewerObject::resetChildrenPosition(const LLVector3& offset, BOOL simplif
return ;
}
+const LLUUID &LLViewerObject::getAttachmentItemID() const
+{
+ return mAttachmentItemID;
+}
+
+void LLViewerObject::setAttachmentItemID(const LLUUID &id)
+{
+ mAttachmentItemID = id;
+}
+
+const LLUUID &LLViewerObject::extractAttachmentItemID()
+{
+ LLUUID item_id = LLUUID::null;
+ LLNameValue* item_id_nv = getNVPair("AttachItemID");
+ if( item_id_nv )
+ {
+ const char* s = item_id_nv->getString();
+ if( s )
+ {
+ item_id.set(s);
+ }
+ }
+ setAttachmentItemID(item_id);
+ return getAttachmentItemID();
+}
diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h
index be83fb7ef8..33fda9fa2d 100644
--- a/indra/newview/llviewerobject.h
+++ b/indra/newview/llviewerobject.h
@@ -678,11 +678,15 @@ protected:
private:
static S32 sNumObjects;
+ //--------------------------------------------------------------------
+ // For objects that are attachments
+ //--------------------------------------------------------------------
public:
- const LLUUID &getItemID() const { return mAttachmentItemID; }
- void setItemID(const LLUUID &id) { mAttachmentItemID = id; }
+ const LLUUID &getAttachmentItemID() const;
+ void setAttachmentItemID(const LLUUID &id);
+ const LLUUID &extractAttachmentItemID(); // find&set the inventory item ID of the attached object
private:
- LLUUID mAttachmentItemID; // ItemID when item is in user inventory.
+ LLUUID mAttachmentItemID; // ItemID of the associated object is in user inventory.
};
///////////////////
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index 9d4f6fdd0c..8491b19f89 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -814,7 +814,7 @@ void LLViewerTexture::generateGLTexture()
LLImageGL* LLViewerTexture::getGLTexture() const
{
llassert(mGLTexturep.notNull()) ;
-
+
return mGLTexturep ;
}
@@ -1489,8 +1489,13 @@ void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height)
//virtual
void LLViewerFetchedTexture::processTextureStats()
{
- if(mFullyLoaded)
+ if(mForceToSaveRawImage && mDesiredSavedRawDiscardLevel >= 0) //force to refetch the texture.
{
+ mDesiredDiscardLevel = llmin(mDesiredDiscardLevel, (S8)mDesiredSavedRawDiscardLevel) ;
+ }
+
+ if(mFullyLoaded)
+ {
if(mDesiredDiscardLevel <= mMinDesiredDiscardLevel)//already loaded
{
return ;
diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp
index 31f0998fab..02097ea06d 100644
--- a/indra/newview/llviewertexturelist.cpp
+++ b/indra/newview/llviewertexturelist.cpp
@@ -853,14 +853,14 @@ F32 LLViewerTextureList::updateImagesFetchTextures(F32 max_time)
}
min_count--;
}
- if (fetch_count == 0)
- {
- gDebugTimers[0].pause();
- }
- else
- {
- gDebugTimers[0].unpause();
- }
+ //if (fetch_count == 0)
+ //{
+ // gDebugTimers[0].pause();
+ //}
+ //else
+ //{
+ // gDebugTimers[0].unpause();
+ //}
return image_op_timer.getElapsedTimeF32();
}
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index 298ac28ca8..455900eb3a 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2753,7 +2753,7 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
{
// update chat bubble
//--------------------------------------------------------------------
- // draw text label over characters head
+ // draw text label over character's head
//--------------------------------------------------------------------
if (mChatTimer.getElapsedTimeF32() > BUBBLE_CHAT_TIME)
{
@@ -5553,6 +5553,7 @@ BOOL LLVOAvatar::setParent(LLViewerObject* parent)
void LLVOAvatar::addChild(LLViewerObject *childp)
{
+ childp->extractAttachmentItemID(); // find the inventory item this object is associated with.
LLViewerObject::addChild(childp);
if (childp->mDrawable)
{
@@ -5642,6 +5643,15 @@ BOOL LLVOAvatar::canAttachMoreObjects() const
}
//-----------------------------------------------------------------------------
+// canAttachMoreObjects()
+// Returns true if we can attach <n> more objects.
+//-----------------------------------------------------------------------------
+BOOL LLVOAvatar::canAttachMoreObjects(U32 n) const
+{
+ return (getNumAttachments() + n) <= MAX_AGENT_ATTACHMENTS;
+}
+
+//-----------------------------------------------------------------------------
// lazyAttach()
//-----------------------------------------------------------------------------
void LLVOAvatar::lazyAttach()
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index 5de08e8e27..3f603dda8b 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -687,6 +687,7 @@ public:
void rebuildHUD();
void resetHUDAttachments();
BOOL canAttachMoreObjects() const;
+ BOOL canAttachMoreObjects(U32 n) const;
protected:
U32 getNumAttachments() const; // O(N), not O(1)
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index bddde08ca9..95402c2e06 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1067,7 +1067,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
// Should just be the last object added
if (attachment->isObjectAttached(viewer_object))
{
- const LLUUID& attachment_id = viewer_object->getItemID();
+ const LLUUID& attachment_id = viewer_object->getAttachmentItemID();
LLAppearanceMgr::instance().registerAttachment(attachment_id);
}
@@ -1077,7 +1077,7 @@ const LLViewerJointAttachment *LLVOAvatarSelf::attachObject(LLViewerObject *view
//virtual
BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
{
- const LLUUID attachment_id = viewer_object->getItemID();
+ const LLUUID attachment_id = viewer_object->getAttachmentItemID();
if (LLVOAvatar::detachObject(viewer_object))
{
// the simulator should automatically handle permission revocation
diff --git a/indra/newview/llwearableitemslist.cpp b/indra/newview/llwearableitemslist.cpp
index 194213f880..4d916db714 100644
--- a/indra/newview/llwearableitemslist.cpp
+++ b/indra/newview/llwearableitemslist.cpp
@@ -527,6 +527,8 @@ bool LLWearableItemTypeNameComparator::doCompare(const LLPanelInventoryListItemB
const LLWearableType::EType item_wearable_type2 = wearable_item2->getWearableType();
if (item_wearable_type1 != item_wearable_type2)
+ // If items are of different LLWearableType::EType types they are compared
+ // by LLWearableType::EType. types order determined in LLWearableType::EType.
{
// If items are of different LLWearableType::EType types they are compared
// by LLWearableType::EType. types order determined in LLWearableType::EType.
@@ -549,6 +551,7 @@ LLWearableItemTypeNameComparator::ETypeListOrder LLWearableItemTypeNameComparato
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
+
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about order rang of items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
@@ -562,25 +565,30 @@ bool LLWearableItemTypeNameComparator::sortAssetTypeByName(LLAssetType::EType it
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
+
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
return true;
}
+
return const_it->second.mSortAssetTypeByName;
}
+
bool LLWearableItemTypeNameComparator::sortWearableTypeByName(LLAssetType::EType item_type) const
{
wearable_type_order_map_t::const_iterator const_it = mWearableOrder.find(item_type);
+
if(const_it == mWearableOrder.end())
{
llwarns<<"Absent information about sorting items of "<<LLAssetType::getDesc(item_type)<<" type"<<llendl;
return true;
}
+
return const_it->second.mSortWearableTypeByName;
}
@@ -869,7 +877,7 @@ void LLWearableItemsList::ContextMenu::updateItemsVisibility(LLContextMenu* menu
setMenuItemVisible(menu, "wear_wear", n_already_worn == 0 && n_worn == 0 && can_be_worn);
setMenuItemEnabled(menu, "wear_wear", n_already_worn == 0 && n_worn == 0);
setMenuItemVisible(menu, "wear_add", wear_add_visible);
- setMenuItemEnabled(menu, "wear_add", n_items == 1 && canAddWearable(ids.front()));
+ setMenuItemEnabled(menu, "wear_add", canAddWearables(ids));
setMenuItemVisible(menu, "wear_replace", n_worn == 0 && n_already_worn != 0 && can_be_worn);
//visible only when one item selected and this item is worn
setMenuItemVisible(menu, "edit", !standalone && mask & (MASK_CLOTHING|MASK_BODYPART) && n_worn == n_items && n_worn == 1);
@@ -978,31 +986,61 @@ void LLWearableItemsList::ContextMenu::createNewWearable(const LLUUID& item_id)
LLAgentWearables::createWearable(item->getWearableType(), true);
}
-// Can we wear another wearable of the given item's wearable type?
+// Returns true if all the given objects and clothes can be added.
// static
-bool LLWearableItemsList::ContextMenu::canAddWearable(const LLUUID& item_id)
+bool LLWearableItemsList::ContextMenu::canAddWearables(const uuid_vec_t& item_ids)
{
// TODO: investigate wearables may not be loaded at this point EXT-8231
- LLViewerInventoryItem* item = gInventory.getItem(item_id);
- if (!item)
+ U32 n_objects = 0;
+ boost::unordered_map<LLWearableType::EType, U32> clothes_by_type;
+
+ // Count given clothes (by wearable type) and objects.
+ for (uuid_vec_t::const_iterator it = item_ids.begin(); it != item_ids.end(); ++it)
{
- return false;
+ LLViewerInventoryItem* item = gInventory.getItem(*it);
+ if (!item)
+ {
+ return false;
+ }
+
+ if (item->getType() == LLAssetType::AT_OBJECT)
+ {
+ ++n_objects;
+ }
+ else if (item->getType() == LLAssetType::AT_CLOTHING)
+ {
+ ++clothes_by_type[item->getWearableType()];
+ }
+ else
+ {
+ llwarns << "Unexpected wearable type" << llendl;
+ return false;
+ }
}
- if (item->getType() == LLAssetType::AT_OBJECT)
+ // Check whether we can add all the objects.
+ if (!isAgentAvatarValid() || !gAgentAvatarp->canAttachMoreObjects(n_objects))
{
- // *TODO: is this the right check?
- return isAgentAvatarValid() && gAgentAvatarp->canAttachMoreObjects();
+ return false;
}
- if (item->getType() != LLAssetType::AT_CLOTHING)
+ // Check whether we can add all the clothes.
+ boost::unordered_map<LLWearableType::EType, U32>::const_iterator m_it;
+ for (m_it = clothes_by_type.begin(); m_it != clothes_by_type.end(); ++m_it)
{
- return false;
+ LLWearableType::EType w_type = m_it->first;
+ U32 n_clothes = m_it->second;
+
+ U32 wearable_count = gAgentWearables.getWearableCount(w_type);
+ if ((wearable_count + n_clothes) > LLAgentWearables::MAX_CLOTHING_PER_TYPE)
+ {
+ return false;
+ }
+
}
- U32 wearable_count = gAgentWearables.getWearableCount(item->getWearableType());
- return wearable_count < LLAgentWearables::MAX_CLOTHING_PER_TYPE;
+ return true;
}
// EOF
diff --git a/indra/newview/llwearableitemslist.h b/indra/newview/llwearableitemslist.h
index 81f1cd1b40..b5e64abad0 100644
--- a/indra/newview/llwearableitemslist.h
+++ b/indra/newview/llwearableitemslist.h
@@ -325,7 +325,7 @@ protected:
/**
* All information about sort order is stored in mWearableOrder map
*
- * mWearableOrder : KYES VALUES
+ * mWearableOrder : KEYS VALUES
* [LLAssetType] [struct LLWearableTypeOrder]
*
*---------------------------------------------------------------------------------------------
@@ -431,7 +431,7 @@ public:
static void setMenuItemEnabled(LLContextMenu* menu, const std::string& name, bool val);
static void updateMask(U32& mask, LLAssetType::EType at);
static void createNewWearable(const LLUUID& item_id);
- static bool canAddWearable(const LLUUID& item_id);
+ static bool canAddWearables(const uuid_vec_t& item_ids);
LLWearableItemsList* mParent;
};
diff --git a/indra/newview/res/viewerRes.rc b/indra/newview/res/viewerRes.rc
index df2fb2a6ea..9bafc28705 100644
--- a/indra/newview/res/viewerRes.rc
+++ b/indra/newview/res/viewerRes.rc
@@ -129,8 +129,8 @@ TOOLSIT CURSOR "toolsit.cur"
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 2,1,0,0
- PRODUCTVERSION 2,1,0,0
+ FILEVERSION 2,1,0,13828
+ PRODUCTVERSION 2,1,0,13828
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -147,12 +147,12 @@ BEGIN
BEGIN
VALUE "CompanyName", "Linden Lab"
VALUE "FileDescription", "Second Life"
- VALUE "FileVersion", "2.1.0.0"
+ VALUE "FileVersion", "2.1.0.13828"
VALUE "InternalName", "Second Life"
VALUE "LegalCopyright", "Copyright © 2001-2008, Linden Research, Inc."
VALUE "OriginalFilename", "SecondLife.exe"
VALUE "ProductName", "Second Life"
- VALUE "ProductVersion", "2.1.0.0"
+ VALUE "ProductVersion", "2.1.0.13828"
END
END
BLOCK "VarFileInfo"
diff --git a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
index a26f2f95c9..bd2b194717 100644
--- a/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/da/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
<text name="library_label">
Type:
</text>
- <scroll_list name="library_list"/>
+ <scroll_list name="library_list">
+ <scroll_list.rows name="action_animation" value="Animation"/>
+ <scroll_list.rows name="action_sound" value="Lyd"/>
+ <scroll_list.rows name="action_chat" value="Chat"/>
+ <scroll_list.rows name="action_wait" value="Vent"/>
+ </scroll_list>
<button label="Tilføj &gt;&gt;" name="add_btn"/>
<text name="steps_label">
Trin:
diff --git a/indra/newview/skins/default/xui/da/floater_world_map.xml b/indra/newview/skins/default/xui/da/floater_world_map.xml
index ca18faa0bb..97364e0f9f 100644
--- a/indra/newview/skins/default/xui/da/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/da/floater_world_map.xml
@@ -19,12 +19,12 @@
<text name="land_sale_label">
Land til salg
</text>
- <text name="by_owner_label">
- efter ejer
- </text>
<text name="auction_label">
land auktion
</text>
+ <text name="by_owner_label">
+ efter ejer
+ </text>
<button name="Go Home" tool_tip="Teleportér til min hjemmelokation"/>
<text name="Home_label">
Hjem
@@ -35,7 +35,7 @@
<text name="pg_label">
Generelt
</text>
- <check_box name="events_mature_chk"/>
+ <check_box initial_value="true" name="events_mature_chk"/>
<text name="events_mature_label">
Moderat
</text>
@@ -58,6 +58,9 @@
<search_editor label="Regioner efter navn" name="location" tool_tip="Indtast navn på en region"/>
<button label="Find" name="DoSearch" tool_tip="Led efter region"/>
<button name="Clear" tool_tip="Fjern søgelinier og nulstil kort"/>
+ <text name="events_label">
+ Lokation:
+ </text>
<button label="Teleport" name="Teleport" tool_tip="Teleportér til valgte sted"/>
<button label="Kopiér SLurl" name="copy_slurl" tool_tip="Kopierer nuværende lokation som SLurl der kan sendes på web."/>
<button label="Vis valgte" name="Show Destination" tool_tip="Centrér kortet på valgte lokation"/>
diff --git a/indra/newview/skins/default/xui/da/menu_viewer.xml b/indra/newview/skins/default/xui/da/menu_viewer.xml
index bb4ee1800a..fa74568c2d 100644
--- a/indra/newview/skins/default/xui/da/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/da/menu_viewer.xml
@@ -92,6 +92,7 @@
<menu_item_call label="Sæt scripts til &quot;Not Running&quot;" name="Set Scripts to Not Running"/>
</menu>
<menu label="Valg" name="Options">
+ <menu_item_call label="Sæt standard rettigher for upload" name="perm prefs"/>
<menu_item_check label="Vis avancerede rettigheder" name="DebugPermissions"/>
<menu_item_check label="Vælg kun egne objekter" name="Select Only My Objects"/>
<menu_item_check label="Vis kun flytbare objekter" name="Select Only Movable Objects"/>
@@ -109,7 +110,6 @@
<menu_item_call label="Lyd (L$[COST])..." name="Upload Sound"/>
<menu_item_call label="Animation (L$[COST])..." name="Upload Animation"/>
<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>
<menu label="Hjælp" name="Help">
diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml
index 73a42e7fb8..62d9c5a203 100644
--- a/indra/newview/skins/default/xui/da/notifications.xml
+++ b/indra/newview/skins/default/xui/da/notifications.xml
@@ -231,7 +231,7 @@ Er du sikker på at du vil fortsætte?
Slet favorit &lt;nolink&gt;[PICK]&lt;/nolink&gt;?
</notification>
<notification name="DeleteOutfits">
- Slet det valgte sæt?
+ Slet valgte sæt?
<usetemplate name="okcancelbuttons" notext="Annullér" yestext="OK"/>
</notification>
<notification name="CacheWillClear">
@@ -1635,8 +1635,8 @@ Check venligst din netværks- og firewall setup.
Avatar &apos;[NAME]&apos; forsvandt helt &quot;uploaded&quot;.
</notification>
<notification name="AvatarRezSelfBakeNotification">
- ( [EXISTENCE] seconds alive )
-Du sendte en [RESOLUTION] tekstur til &apos;[BODYREGION]&apos; efter [TIME] sekunder.
+ ( [EXISTENCE] sekunder i live )
+You [ACTION] a [RESOLUTION] baked texture for &apos;[BODYREGION]&apos; after [TIME] seconds.
</notification>
<notification name="ConfirmLeaveCall">
Er du sikker på at du vil forlade dette opkald?
@@ -1660,4 +1660,7 @@ Hvis du bliver ved med at have problemer, besøg venligst [SUPPORT_SITE].
Hvis du selv ejer land, kan du benytte det til hjemme lokation.
Ellers kan du se på verdenskortet og finde steder markeret med &quot;Infohub&quot;.
</global>
+ <global name="You died and have been teleported to your home location">
+ Du døde og er blevet teleporteret til din hjemmelokation.
+ </global>
</notifications>
diff --git a/indra/newview/skins/default/xui/da/panel_group_notices.xml b/indra/newview/skins/default/xui/da/panel_group_notices.xml
index d8e8cb3c2a..0a0b8f5e04 100644
--- a/indra/newview/skins/default/xui/da/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_notices.xml
@@ -24,7 +24,7 @@ Maksimum er 200 pr. gruppe pr. dag
<text name="notice_list_none_found">
Ingen fundet
</text>
- <button label="Lav en ny besked" label_selected="Lav ny besked" name="create_new_notice" tool_tip="Lav en ny besked"/>
+ <button label="Ny besked" label_selected="Lav ny besked" name="create_new_notice" tool_tip="Lav en ny besked"/>
<button label="Genopfrisk" label_selected="Genopfrisk liste" name="refresh_notices" tool_tip="Genopfrisk beskedliste"/>
<panel label="Lav ny besked" name="panel_create_new_notice">
<text name="lbl">
diff --git a/indra/newview/skins/default/xui/da/panel_group_roles.xml b/indra/newview/skins/default/xui/da/panel_group_roles.xml
index 3ab3dd8bf8..ebc773f7ed 100644
--- a/indra/newview/skins/default/xui/da/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/da/panel_group_roles.xml
@@ -13,6 +13,9 @@
Vælg flere medlemmer ved at holde Ctrl-tasten nede og
klik på deres navne.
</panel.string>
+ <panel.string name="donation_area">
+ [AREA] m²
+ </panel.string>
<filter_editor label="Filtrér medlemmer" name="filter_input"/>
<name_list name="member_list">
<name_list.columns label="Medlemsnavn" name="name"/>
@@ -76,21 +79,15 @@ ting i denne gruppe. Der er en bred vifte af rettigheder.
<text name="static">
Rolle navn
</text>
- <line_editor name="role_name">
- Ansatte
- </line_editor>
+ <line_editor name="role_name"/>
<text name="static3">
Rolle titel
</text>
- <line_editor name="role_title">
- (venter)
- </line_editor>
+ <line_editor name="role_title"/>
<text name="static2">
Beskrivelse
</text>
- <text_editor name="role_description">
- (venter)
- </text_editor>
+ <text_editor name="role_description"/>
<text name="static4">
Tildelte roller
</text>
@@ -105,9 +102,6 @@ ting i denne gruppe. Der er en bred vifte af rettigheder.
</scroll_list>
</panel>
<panel name="actions_footer">
- <text name="static">
- Beskrivelse
- </text>
<text_editor name="action_description">
Denne rettigheder &apos;Udmeld medlemmer fra denne gruppe&apos;. Kun en ejer kan udmelde en anden ejer.
</text_editor>
diff --git a/indra/newview/skins/default/xui/da/panel_nearby_media.xml b/indra/newview/skins/default/xui/da/panel_nearby_media.xml
index a269e35f4b..b4be70a22a 100644
--- a/indra/newview/skins/default/xui/da/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/da/panel_nearby_media.xml
@@ -45,25 +45,25 @@
<panel name="media_controls_panel">
<layout_stack name="media_controls">
<layout_panel name="stop">
- <button name="stop_btn" tool_tip="Stop valgte medie"/>
+ <button name="stop_btn" tool_tip="Stop valgte media"/>
</layout_panel>
<layout_panel name="play">
- <button name="play_btn" tool_tip="Afspil valgte medie"/>
+ <button name="play_btn" tool_tip="Afspil valgte media"/>
</layout_panel>
<layout_panel name="pause">
- <button name="pause_btn" tool_tip="Pause valgt medie"/>
+ <button name="pause_btn" tool_tip="Pause valgte media"/>
</layout_panel>
<layout_panel name="volume_slider_ctrl">
- <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Lydstyrke for valgte medie"/>
+ <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Lydstyrke for valgte media"/>
</layout_panel>
<layout_panel name="mute">
- <button name="mute_btn" tool_tip="Sluk lyd fra valgte medie"/>
+ <button name="mute_btn" tool_tip="Sluk lyd for valgte media"/>
</layout_panel>
<layout_panel name="zoom">
- <button name="zoom_btn" tool_tip="Zoom til valgte medie"/>
+ <button name="zoom_btn" tool_tip="Zoom til valgte media"/>
</layout_panel>
<layout_panel name="unzoom">
- <button name="unzoom_btn" tool_tip="Zoom tilbage fra valgte medie"/>
+ <button name="unzoom_btn" tool_tip="Zoom tilbage fra valgte media"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml
index a1b47c3c1f..18cb0e47b9 100644
--- a/indra/newview/skins/default/xui/da/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/da/panel_preferences_sound.xml
@@ -11,8 +11,8 @@
<check_box label="Aktiveret" name="enable_media"/>
<slider label="Stemme chat" name="Voice Volume"/>
<check_box label="Aktiveret" name="enable_voice_check"/>
- <check_box label="Tillad media at afspilles automatisk" name="media_auto_play_btn" tool_tip="Vælg dette for at media afspille automatisk hvis det ønsker det" />
- <check_box label="Afspil media vedhæftet andre avatarer" name="media_show_on_others_btn" tool_tip="Deaktiver dette for at skjule vedhæftet media for avatarer i nærheden" />
+ <check_box label="Tillad media at afspilles automatisk" name="media_auto_play_btn" tool_tip="Vælg dette for at media afspille automatisk hvis det ønsker det" value="true"/>
+ <check_box label="Afspil media vedhæftet andre avatarer" name="media_show_on_others_btn" tool_tip="Deaktiver dette for at skjule vedhæftet media for avatarer i nærheden" value="true"/>
<text name="voice_chat_settings">
Stemme chat opsætning
</text>
@@ -28,6 +28,12 @@
<panel.string name="default_text">
Standard
</panel.string>
+ <panel.string name="default system device">
+ Standard systemenhed
+ </panel.string>
+ <panel.string name="no device">
+ Ingen enheder
+ </panel.string>
<text name="Input">
Input
</text>
diff --git a/indra/newview/skins/default/xui/da/panel_teleport_history.xml b/indra/newview/skins/default/xui/da/panel_teleport_history.xml
index 8a01659ffa..e6e78028f5 100644
--- a/indra/newview/skins/default/xui/da/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/da/panel_teleport_history.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Teleport History">
<accordion name="history_accordion">
+ <no_matched_tabs_text name="no_matched_teleports_msg" value="Fandt du ikke hvad du søgte? Prøv [secondlife:///app/search/places/[SEARCH_TERM] Search]."/>
+ <no_visible_tabs_text name="no_teleports_msg" value="Teleport historik er tom. Prøv [secondlife:///app/search/places/ Search]."/>
<accordion_tab name="today" title="I dag"/>
<accordion_tab name="yesterday" title="I går"/>
<accordion_tab name="2_days_ago" title="2 dage siden"/>
- 5
<accordion_tab name="3_days_ago" title="3 dage siden"/>
<accordion_tab name="4_days_ago" title="4 dage siden"/>
<accordion_tab name="5_days_ago" title="5 dage siden"/>
diff --git a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
index b1ec2c44df..2350af8d49 100644
--- a/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/da/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
</panel.string>
<text name="title" value="Profil for genstand"/>
<text name="origin" value="(Beholdning)"/>
- <panel label=""
- name="item_profile">
+ <panel label="" name="item_profile">
<text name="LabelItemNameTitle">
Navn:
</text>
@@ -40,7 +39,7 @@
</text>
<button label="Profil..." name="BtnOwner"/>
<text name="LabelAcquiredTitle">
- Erhvervet:
+ Anskaffet:
</text>
<text name="LabelAcquiredDate"/>
<panel name="perms_inv">
@@ -49,21 +48,21 @@
</text>
<check_box label="Redigere" name="CheckOwnerModify"/>
<check_box label="Kopiere" name="CheckOwnerCopy"/>
- <check_box label="Give væk" name="CheckOwnerTransfer"/>
+ <check_box label="Overfør" name="CheckOwnerTransfer"/>
<text name="AnyoneLabel">
- Enhver:
+ Alle:
</text>
<check_box label="Kopiere" name="CheckEveryoneCopy"/>
<text name="GroupLabel">
Gruppe:
</text>
- <check_box label="Dele" name="CheckShareWithGroup" tool_tip="Tillad alle medlemmer i den aktive gruppe at dele dine &apos;redigere&apos; rettigheder for dette objekt. Du skal dedikere for at åbne for rolle begrænsninger."/>
+ <check_box label="Del" name="CheckShareWithGroup" tool_tip="Giver alle medlemmer adgang til at give gruppen ret til at ændre rettigheder for dette objekt. Du skal dedikere for at åbne for rolle begrænsninger."/>
<text name="NextOwnerLabel">
Næste ejer:
</text>
<check_box label="Redigere" name="CheckNextOwnerModify"/>
<check_box label="Kopiere" name="CheckNextOwnerCopy"/>
- <check_box label="Give væk" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
+ <check_box label="Overføre" name="CheckNextOwnerTransfer" tool_tip="Næste ejer kan give væk eller sælge dette objekt"/>
</panel>
<check_box label="Til salg" name="CheckPurchase"/>
<combo_box name="combobox sale copy">
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 9b33ca6f0d..3152661fd4 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -642,6 +642,9 @@
<string name="worldmap_offline">
Offline
</string>
+ <string name="worldmap_item_tooltip_format">
+ [AREA] m² L$[PRICE]
+ </string>
<string name="worldmap_results_none_found">
Ingen fundet.
</string>
@@ -1031,6 +1034,7 @@
<string name="AnimFlagStop" value=" Stop Animation : "/>
<string name="AnimFlagStart" value=" Start Animation : "/>
<string name="Wave" value=" Vink "/>
+ <string name="GestureActionNone" value="Ingen"/>
<string name="HelloAvatar" value=" Hej, avatar! "/>
<string name="ViewAllGestures" value=" Se alle &gt;&gt;"/>
<string name="GetMoreGestures" value="FÃ¥ mere &gt;&gt;"/>
@@ -1113,12 +1117,12 @@
<string name="InvFolder Favorite">
Favoritter
</string>
- <string name="InvFolder favorite">
- Favoritter
- </string>
<string name="InvFolder Current Outfit">
Nuværende sæt
</string>
+ <string name="InvFolder Initial Outfits">
+ Start sæt
+ </string>
<string name="InvFolder My Outfits">
Mine sæt
</string>
@@ -1438,6 +1442,7 @@
<string name="SummaryForTheWeek" value="Opsummering for denne uge, begyndende med "/>
<string name="NextStipendDay" value="Næste stipendie dag er "/>
<string name="GroupIndividualShare" value=" Gruppe Individuel Delt"/>
+ <string name="GroupColumn" value="Gruppe"/>
<string name="Balance">
Balance
</string>
@@ -1651,6 +1656,12 @@
<string name="BusyModeResponseDefault">
Beboeren du sendte en besked er &apos;optaget&apos;, hvilket betyder at han/hun ikke vil forstyrres. Din besked vil blive vis i hans/hendes IM panel til senere visning.
</string>
+ <string name="NoOutfits">
+ You don&apos;t have any outfits yet. Try [secondlife:///app/search/all/ Search]
+ </string>
+ <string name="NoOutfitsTabsMatched">
+ Fandt du ikke hvad du søgte? Prøv [secondlife:///app/search/all/[SEARCH_TERM] Search].
+ </string>
<string name="MuteByName">
(Efter navn)
</string>
@@ -3571,6 +3582,9 @@ Hvis du bliver ved med at modtage denne besked, kontakt venligst [SUPPORT_SITE].
<string name="group_role_owners">
Ejere
</string>
+ <string name="group_member_status_online">
+ Online
+ </string>
<string name="uploading_abuse_report">
Uploader...
@@ -3624,9 +3638,15 @@ Krænkelsesanmeldelse
<string name="Invalid Wearable">
Kan ikke tages på
</string>
+ <string name="New Gesture">
+ Ny bevægelse
+ </string>
<string name="New Script">
Nyt script
</string>
+ <string name="New Note">
+ Ny note
+ </string>
<string name="New Folder">
Ny folder
</string>
@@ -3684,6 +3704,15 @@ Krænkelsesanmeldelse
<string name="Male - Wow">
Mand - Wow
</string>
+ <string name="Female - Chuckle">
+ Kvinde - Kluklatter
+ </string>
+ <string name="Female - Cry">
+ Kvinde - gråd
+ </string>
+ <string name="Female - Embarrassed">
+ Kvinde - Flov
+ </string>
<string name="Female - Excuse me">
Kvinde - Undskyld mig
</string>
@@ -3702,9 +3731,21 @@ Krænkelsesanmeldelse
<string name="Female - Hey">
Kvinde - Hey
</string>
+ <string name="Female - Hey baby">
+ Kvinde - Hey baby
+ </string>
<string name="Female - Laugh">
Kvinde - Latter
</string>
+ <string name="Female - Looking good">
+ Kvinde - &quot;Ser godt ud&quot;
+ </string>
+ <string name="Female - Over here">
+ Kvinde - Herovre
+ </string>
+ <string name="Female - Please">
+ Kvinde - Be´ om
+ </string>
<string name="Female - Repulsed">
Kvinde - Frastødt
</string>
@@ -3754,4 +3795,46 @@ Krænkelsesanmeldelse
<string name="dateTimePM">
PM
</string>
+ <string name="LocalEstimateUSD">
+ US$ [AMOUNT]
+ </string>
+ <string name="Membership">
+ Medlemsskab
+ </string>
+ <string name="Roles">
+ Roller
+ </string>
+ <string name="Group Identity">
+ Gruppe identitet
+ </string>
+ <string name="Parcel Management">
+ Parcel håndtering
+ </string>
+ <string name="Parcel Identity">
+ Parcel identitet
+ </string>
+ <string name="Parcel Settings">
+ Parcel opsætning
+ </string>
+ <string name="Parcel Powers">
+ Parcel beføjelser
+ </string>
+ <string name="Parcel Access">
+ Parcel adgang
+ </string>
+ <string name="Parcel Content">
+ Parcel indhold
+ </string>
+ <string name="Object Management">
+ Objekt håndtering
+ </string>
+ <string name="Accounting">
+ Regnskab
+ </string>
+ <string name="Notices">
+ Beskeder
+ </string>
+ <string name="Chat">
+ Chat
+ </string>
</strings>
diff --git a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
index c3c017ae97..6d3635fa8d 100644
--- a/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/de/floater_preview_gesture.xml
@@ -64,6 +64,7 @@
</radio_group>
<check_box label="bis alle Animationen beendet sind" name="wait_anim_check"/>
<check_box label="Zeit in Sekunden:" name="wait_time_check"/>
+ <line_editor name="wait_time_editor"/>
<text name="help_label">
Alle Schritte werden gleichzeitig ausgeführt, wenn keine Pausen hinzugefügt wurden.
</text>
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 7be9cfbb71..691472633e 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -310,7 +310,7 @@
left_delta="0"
name="wait_time_check"
top_delta="20"
- width="100" />
+ width="115" />
<line_editor
follows="top|left"
height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml
index 49b3b58113..354f1de85e 100644
--- a/indra/newview/skins/default/xui/en/floater_search.xml
+++ b/indra/newview/skins/default/xui/en/floater_search.xml
@@ -22,7 +22,7 @@
Done
</floater.string>
<layout_stack
- bottom="595"
+ height="580"
follows="left|right|top|bottom"
layout="topleft"
left="10"
@@ -30,6 +30,7 @@
top="20"
width="630">
<layout_panel
+ height="570"
layout="topleft"
left_delta="0"
top_delta="0"
@@ -37,13 +38,12 @@
user_resize="false"
width="630">
<web_browser
- bottom="-10"
follows="left|right|top|bottom"
layout="topleft"
left="0"
name="browser"
top="0"
- height="555"
+ height="540"
width="630" />
<text
follows="bottom|left"
@@ -51,7 +51,7 @@
layout="topleft"
left_delta="0"
name="status_text"
- top_pad="7"
+ top_pad="10"
width="150" />
<text
visible="false"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index a2d06f77a9..60b0b1e8dc 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4023,6 +4023,19 @@ Are you sure you want to quit?
<notification
icon="alertmodal.tga"
+ name="DeleteItems"
+ type="alertmodal">
+ [QUESTION]
+ <usetemplate
+ ignoretext="Confirm before deleting items"
+ name="okcancelignore"
+ notext="Cancel"
+ yestext="OK"/>
+ <unique/>
+ </notification>
+
+ <notification
+ icon="alertmodal.tga"
name="HelpReportAbuseEmailLL"
type="alert">
Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards].
diff --git a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
index 06bd1e9ff4..20ff492c0f 100644
--- a/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
+++ b/indra/newview/skins/default/xui/en/outfit_accordion_tab.xml
@@ -9,6 +9,7 @@
layout="topleft"
name="Mockup Tab"
selection_enabled="true"
+ tab_stop="false"
title="Mockup Tab"
translate="false"
width="0">
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 9941732c30..7a292ab943 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2282,6 +2282,9 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh
<string name="accel-win-alt">Alt+</string>
<string name="accel-win-shift">Shift+</string>
+ <string name="Key_Esc">Esc</string>
+ <string name="Key_Home">Home</string>
+
<!-- Previews -->
<string name="FileSaved">File Saved</string>
<string name="Receiving">Receiving</string>
@@ -3258,4 +3261,8 @@ Abuse Report</string>
<string name="Notices">Notices</string>
<string name="Chat">Chat</string>
+ <!-- Question strings for delete items notifications -->
+ <string name="DeleteItems">Delete selected items?</string>
+ <string name="DeleteItem">Delete selected item?</string>
+
</strings>
diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 5c71e50282..5263de4532 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -220,7 +220,7 @@ ou divisé.
[COUNT] sur [MAX] ([DELETED] seront supprimés)
</panel.string>
<text name="parcel_object_bonus">
- Facteur Bonus Objets : [BONUS]
+ Facteur Bonus objets : [BONUS]
</text>
<text name="Simulator primitive usage:">
Utilisation des primitives :
diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
index 87c8847cbd..0ce17b9dc6 100644
--- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
@@ -80,12 +80,12 @@
</text>
<spinner label="Heure" name="WLLengthOfDayHour"/>
<spinner label="Min" name="WLLengthOfDayMin"/>
- <spinner label="S" name="WLLengthOfDaySec"/>
+ <spinner label="Sec" name="WLLengthOfDaySec"/>
<text name="DayCycleText3">
Aperçu :
</text>
<button label="Lire" label_selected="Lire" name="WLAnimSky"/>
- <button label="Stop !" label_selected="Stop" name="WLStopAnimSky"/>
+ <button label="Arrêter" label_selected="Stop" name="WLStopAnimSky"/>
<button label="Utiliser heure domaine" label_selected="Aller heure domaine" name="WLUseLindenTime"/>
<button label="Enregistrer jour test" label_selected="Enregistrer jour test" name="WLSaveDayCycle"/>
<button label="Charger jour test" label_selected="Charger jour test" name="WLLoadDayCycle"/>
diff --git a/indra/newview/skins/default/xui/fr/floater_postcard.xml b/indra/newview/skins/default/xui/fr/floater_postcard.xml
index 0f3a4541e2..91a943ef15 100644
--- a/indra/newview/skins/default/xui/fr/floater_postcard.xml
+++ b/indra/newview/skins/default/xui/fr/floater_postcard.xml
@@ -16,7 +16,7 @@
Objet :
</text>
<line_editor left="143" name="subject_form" width="130" left_delta="146"/>
- <line_editor label="Saisissez votre objet ici." name="subject_form"/>
+ <line_editor label="Saisir ici votre objet" name="subject_form"/>
<text name="msg_label">
Message :
</text>
@@ -24,7 +24,7 @@
<check_box label="Contenu adulte" name="mature_check" tool_tip="Cette carte postale est à caractère adulte."/>
<button label="?" name="publish_help_btn"/>
<text_editor name="msg_form">
- Saisissez votre message ici.
+ Saisir ici votre message.
</text_editor>
<text name="fine_print">
Si le destinataire s&apos;inscrit sur [SECOND_LIFE], vous recevrez un bonus.
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 26d097d549..92f02ad1fa 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="toolbox floater" short_title="OUTILS POUR LA CONSTRUCTION" title="">
<floater.string name="status_rotate">
- Pour faire tourner l&apos;objet, faîtes glisser les bandes de couleur.
+ Pour faire tourner l&apos;objet, faites glisser les bandes de couleur.
</floater.string>
<floater.string name="status_scale">
Pour étirer le côté sélectionné, cliquez et faites glisser.
@@ -54,7 +54,7 @@
</radio_group>
<radio_group name="move_radio_group">
<radio_item label="Déplacer" name="radio move"/>
- <radio_item label="Orbite (Ctrl)" name="radio lift"/>
+ <radio_item label="Soulever (Ctrl)" name="radio lift"/>
<radio_item label="Faire tourner (Ctrl+Maj)" name="radio spin"/>
</radio_group>
<radio_group name="edit_radio_group">
@@ -190,7 +190,7 @@
Cliquer pour :
</text>
<combo_box name="clickaction" width="178">
- <combo_box.item label="Toucher (défaut)" name="Touch/grab(default)"/>
+ <combo_box.item label="Toucher (par défaut)" name="Touch/grab(default)"/>
<combo_box.item label="S&apos;asseoir sur l&apos;objet" name="Sitonobject"/>
<combo_box.item label="Acheter l&apos;objet" name="Buyobject"/>
<combo_box.item label="Payer l&apos;objet" name="Payobject"/>
@@ -402,8 +402,8 @@
Application
</text>
<combo_box name="combobox texgen">
- <combo_box.item label="Défaut" name="Default"/>
- <combo_box.item label="Planar" name="Planar"/>
+ <combo_box.item label="Par défaut" name="Default"/>
+ <combo_box.item label="Plan" name="Planar"/>
</combo_box>
<text name="label shininess">
Brillance
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 6cfc2b5c66..c1321b71ea 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -1683,7 +1683,7 @@ Publier cette petite annonce maintenant pour [AMOUNT] L$ ?
<usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/>
</notification>
<notification label="Envoyer un message à la région" name="MessageRegion">
- Saisissez une message qui sera envoyé à tous les résidents présents dans cette région.
+ Saisissez un message qui sera envoyé à tous les résidents présents dans cette région.
<form name="form">
<input name="message"/>
<button name="OK" text="OK"/>
diff --git a/indra/newview/skins/default/xui/fr/panel_group_notices.xml b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
index bcf2cc8ec9..3364dd9dbc 100644
--- a/indra/newview/skins/default/xui/fr/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/fr/panel_group_notices.xml
@@ -21,7 +21,7 @@ Vous pouvez désactiver la réception des notices dans l&apos;onglet Général.
<text name="notice_list_none_found">
Aucun résultat
</text>
- <button label="Nouvelle notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/>
+ <button label="Nouv. notice" label_selected="Créer une notice" name="create_new_notice" tool_tip="Créer une notice"/>
<button label="Rafraîchir" label_selected="Rafraîchir la liste" name="refresh_notices" tool_tip="Actualiser la liste des notices"/>
<panel label="Créer une notice" name="panel_create_new_notice">
<text name="lbl">
diff --git a/indra/newview/skins/default/xui/fr/panel_landmarks.xml b/indra/newview/skins/default/xui/fr/panel_landmarks.xml
index 9c15b0bbd3..9e0d08958b 100644
--- a/indra/newview/skins/default/xui/fr/panel_landmarks.xml
+++ b/indra/newview/skins/default/xui/fr/panel_landmarks.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Landmarks">
<accordion name="landmarks_accordion">
- <accordion_tab name="tab_favorites" title="Barre des Favoris"/>
+ <accordion_tab name="tab_favorites" title="Barre des favoris"/>
<accordion_tab name="tab_landmarks" title="Mes repères"/>
<accordion_tab name="tab_inventory" title="Mon inventaire"/>
<accordion_tab name="tab_library" title="Bibliothèque"/>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 6cab902ab6..1204d3325a 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -415,7 +415,7 @@
image targa
</string>
<string name="trash">
- Poubelle
+ Corbeille
</string>
<string name="jpeg image">
image jpeg
@@ -1127,7 +1127,7 @@
Parties du corps
</string>
<string name="InvFolder Trash">
- Poubelle
+ Corbeille
</string>
<string name="InvFolder Photo Album">
Albums photo
@@ -3780,7 +3780,7 @@ de l&apos;infraction signalée
Homme - Demander pardon
</string>
<string name="Male - Get lost">
- Homme - Dire d&apos;aller au diable
+ Homme - Get lost
</string>
<string name="Male - Blow kiss">
Homme - Envoyer un baiser
@@ -3822,7 +3822,7 @@ de l&apos;infraction signalée
Femme - Demander pardon
</string>
<string name="Female - Get lost">
- Femme - Dire d&apos;aller au diable
+ Femme - Get lost
</string>
<string name="Female - Blow kiss">
Femme - Envoyer un baiser
diff --git a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
index 9c4006b4e6..7e29db6336 100644
--- a/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/it/floater_preview_gesture.xml
@@ -30,15 +30,15 @@
<text name="trigger_label">
Parole chiave:
</text>
- <text left="208" name="replace_text" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave &apos;salve&apos; con &apos;ciao&apos; modificherà la chat &apos;Volevo solo dire salve&apos; in &apos;Volevo solo dire ciao&apos; e avvierà la gesture!">
+ <text name="replace_text" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave &apos;salve&apos; con &apos;ciao&apos; modificherà la chat &apos;Volevo solo dire salve&apos; in &apos;Volevo solo dire ciao&apos; e avvierà la gesture!">
Sostituisci con:
</text>
<line_editor name="replace_editor" tool_tip="Sostituisci le parole chiave con questi termini. Per esempio, sostituire la parola chiave &apos;salve&apos; con &apos;ciao&apos; modificherà la chat &apos;Volevo solo dire salve&apos; in &apos;Volevo solo dire ciao&apos; e avvierà la gesture!"/>
<text name="key_label">
Scorciatoia da tastiera:
</text>
- <combo_box label="Nessuno" left="156" name="modifier_combo" width="76"/>
- <combo_box label="Nessuno" left_delta="80" name="key_combo" width="76"/>
+ <combo_box label="Nessuno" name="modifier_combo" />
+ <combo_box label="Nessuno" name="key_combo" />
<text name="library_label">
Libreria:
</text>
@@ -62,9 +62,9 @@
<radio_item label="Attiva" name="start"/>
<radio_item label="Ferma" name="stop"/>
</radio_group>
- <check_box label="finché le animazioni sono eseguite" left="226" name="wait_anim_check"/>
+ <check_box label="finché le animazioni sono eseguite" name="wait_anim_check"/>
<check_box label="durata in secondi:" name="wait_time_check"/>
- <line_editor left_delta="114" name="wait_time_editor"/>
+ <line_editor name="wait_time_editor"/>
<text name="help_label">
Tutte le fasi avvengono contemporaneamente, a meno che non aggiungi fasi di attesa.
</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_about_land.xml b/indra/newview/skins/default/xui/pl/floater_about_land.xml
index d0521fefc3..c68e1c72ce 100644
--- a/indra/newview/skins/default/xui/pl/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/pl/floater_about_land.xml
@@ -327,7 +327,7 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
<check_box label="Wszyscy" name="edit objects check"/>
<check_box label="Grupa" name="edit group objects check"/>
<text name="allow_label3">
- Nowe Obiekty:
+ Nowe obiekty:
</text>
<check_box label="Wszyscy" name="all object entry check"/>
<check_box label="Grupa" name="group object entry check"/>
@@ -380,7 +380,7 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
Punkt LÄ…dowania: [LANDING]
</text>
<button label="Ustaw" label_selected="Ustaw" name="Set" tool_tip="Ustal miejsce lądowania dla przybywających gości. Używa położenia Twojego awatara na tej posiadłości."/>
- <button label="Nowy" label_selected="Nowy" name="Clear" tool_tip="Clear the landing point."/>
+ <button label="Nowy" label_selected="Nowy" name="Clear" tool_tip="Usuń dotychczasowe miejsce lądowania."/>
<text name="Teleport Routing: ">
Trasa teleportacji:
</text>
@@ -399,7 +399,7 @@ Jedynie większe posiadłości mogą być umieszczone w bazie wyszukiwarki.
URL mediów:
</text>
<button label="Ustaw" name="set_media_url"/>
- <check_box label="Ukryj URL mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym Użytkownikom. Nie dotyczy to jednak typów HTML."/>
+ <check_box label="Ukryj URL mediów" name="hide_media_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów wszystkim nieautoryzowanym Rezydentom. Nie dotyczy to jednak typów HTML."/>
<text name="Description:">
Opis:
</text>
@@ -431,14 +431,14 @@ Mediów:
<check_box label="Ukryj URL muzyki" name="hide_music_url" tool_tip="Wybranie tej opcji, zablokuje widok adresu do medów muzycznych w posiadłości wszystkim nieautoryzowanym Użytkownikom"/>
<check_box label="Rozmowy dozwolone" name="parcel_enable_voice_channel"/>
<check_box label="Rozmowy dozwolone (ustawione przez MajÄ…tek)" name="parcel_enable_voice_channel_is_estate_disabled"/>
- <check_box label="Ogranicz komunikację głosową w tej posiadłości." name="parcel_enable_voice_channel_local"/>
+ <check_box label="Ogranicz komunikację głosową w tej Posiadłości." name="parcel_enable_voice_channel_local"/>
</panel>
<panel label="DOSTĘP" name="land_access_panel">
<panel.string name="access_estate_defined">
(Zdefiniowane przez MajÄ…tek)
</panel.string>
<panel.string name="allow_public_access">
- Udostępnij dostęp publiczny ([MATURITY])
+ Udostępnij publicznie ([MATURITY])
</panel.string>
<panel.string name="estate_override">
Jedna lub więcej z tych opcji ustawiona jest z poziomu Posiadłości
diff --git a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
index d8ae185687..3402d8d31f 100644
--- a/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_animation_preview.xml
@@ -26,7 +26,7 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
Plik BVH nie może zostać otworzony.
</floater.string>
<floater.string name="E_ST_NO_HIER">
- Niewłaściwy nagłówek HIERARCHI.
+ Niewłaściwy nagłówek HIERARCHII.
</floater.string>
<floater.string name="E_ST_NO_JOINT">
ROOT oraz JOINT nieodnalezione.
@@ -104,7 +104,7 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
Brak otrzymania wartości morfizacji.
</floater.string>
<floater.string name="E_ST_NO_XLT_EMOTE">
- Niemożliwość przeczytania nazwy emocji.
+ Nie można odczytać nazwy emocji.
</floater.string>
<floater.string name="E_ST_BAD_ROOT">
Nieprawidłowa nazwa, użyj &quot;hip&quot;.
@@ -120,7 +120,7 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
<spinner label="Od(%)" name="loop_in_point" tool_tip="Wybierz punkt, od którego chcesz zacząć powtarzać animację"/>
<spinner label="Do(%)" name="loop_out_point" tool_tip="Wybierz punkt, od którego chcesz zakończyć powtarzanie animacji"/>
<text name="hand_label">
- Pozycja Ręki
+ Pozycja ręki
</text>
<combo_box label="" name="hand_pose_combo" tool_tip="Kontroluje co robi ręka podczas animacji">
<combo_box.item label="RozciÄ…gaj" name="Spread"/>
@@ -128,14 +128,14 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
<combo_box.item label="Wskazuj" name="PointBoth"/>
<combo_box.item label="Pięść" name="Fist"/>
<combo_box.item label="Lewa-Odpocznij" name="RelaxedLeft"/>
- <combo_box.item label="Wskazuj LewÄ…" name="PointLeft"/>
- <combo_box.item label="Zaciśnij Lewą" name="FistLeft"/>
- <combo_box.item label="Prawa-Odpocznij" name="RelaxedRight"/>
- <combo_box.item label="Wskazuj PrawÄ…" name="PointRight"/>
- <combo_box.item label="Zaciśnij Prawą" name="FistRight"/>
- <combo_box.item label="Salutuj PrawÄ…" name="SaluteRight"/>
+ <combo_box.item label="Wskazuj lewÄ…" name="PointLeft"/>
+ <combo_box.item label="Zaciśnij lewą" name="FistLeft"/>
+ <combo_box.item label="Prawa-odpocznij" name="RelaxedRight"/>
+ <combo_box.item label="Wskazuj prawÄ…" name="PointRight"/>
+ <combo_box.item label="Zaciśnij prawą" name="FistRight"/>
+ <combo_box.item label="Salutuj prawÄ…" name="SaluteRight"/>
<combo_box.item label="Pisz" name="Typing"/>
- <combo_box.item label="Prawa-Pokój" name="PeaceRight"/>
+ <combo_box.item label="Prawa-pokój" name="PeaceRight"/>
</combo_box>
<text name="emote_label">
Ekspresja
@@ -145,18 +145,18 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
<item label="Aaaaah" name="Aaaaah" value="Aaaaah"/>
<item label="Obawa" name="Afraid" value="Obawa"/>
<item label="Złość" name="Angry" value="Złość"/>
- <item label="Duży Uśmiech" name="BigSmile" value="Duży uśmiech"/>
+ <item label="Duży uśmiech" name="BigSmile" value="Duży uśmiech"/>
<item label="Znudzenie" name="Bored" value="Znudzenie"/>
<item label="PÅ‚acz" name="Cry" value="PÅ‚acz"/>
<item label="Wzgarda" name="Disdain" value="Wzgarda"/>
<item label="Zakłopotanie" name="Embarrassed" value="Zakłopotanie"/>
- <item label="Marszczenie Brwi" name="Frown" value="Marszczenie brwi"/>
+ <item label="Marszczenie brwi" name="Frown" value="Marszczenie brwi"/>
<item label="Pocałunek" name="Kiss" value="Pocałunek"/>
<item label="Åšmiech" name="Laugh" value="Åšmiech"/>
<item label="Plllppt" name="Plllppt" value="Plllppt"/>
<item label="Odrzucenie" name="Repulsed" value="Odrzucenie"/>
<item label="Smutek" name="Sad" value="Smutek"/>
- <item label="Wzruszenie Ramionami" name="Shrug" value="Wzruszenie ramionami"/>
+ <item label="Wzruszenie ramionami" name="Shrug" value="Wzruszenie ramionami"/>
<item label="Uśmiech" name="Smile" value="Uśmiech"/>
<item label="Niespodzianka" name="Surprise" value="Niespodzianka"/>
<item label="Mrugnięcie" name="Wink" value="Mrugnięcie"/>
@@ -175,7 +175,7 @@ Maksymalna długość pliku animacji wynosi [MAX_LENGTH] sekund.
<spinner label="Złagodzić na zewnątrz (sekund)" name="ease_out_time" tool_tip="Ilość Czasu (w sekundach), w których animacje oddzielają się"/>
<button label="" name="play_btn" tool_tip="Odtwarzaj animacjÄ™"/>
<button name="pause_btn" tool_tip="Zatrzymaj animacjÄ™"/>
- <button label="" name="stop_btn" tool_tip="Stop animation playback"/>
+ <button label="" name="stop_btn" tool_tip="Zakończ odtwarzanie animacji"/>
<slider label="" name="playback_slider"/>
<text name="bad_animation_text">
Brak możliwości wczytania pliku animacji.
diff --git a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
index 5c623e251f..45b9e066e9 100644
--- a/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/pl/floater_avatar_textures.xml
@@ -6,8 +6,7 @@
<scroll_container name="profile_scroll">
<panel name="scroll_content_panel">
<text name="label">
- Baked
-Textures
+ Tekstury bakowane
</text>
<text name="composite_label">
Tekstury kompozytowe
diff --git a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
index f4721b05d8..ed2e037d3c 100644
--- a/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
+++ b/indra/newview/skins/default/xui/pl/floater_bulk_perms.xml
@@ -48,7 +48,7 @@
</text>
<check_box label="Modyfikuje" name="next_owner_modify"/>
<check_box label="Kopiuje" name="next_owner_copy"/>
- <check_box initial_value="true" label="Oddaj/Sprzedaj" name="next_owner_transfer" tool_tip="Następny właściciel może oddać lub sprzedać ten obiekt."/>
+ <check_box initial_value="true" label="Oddaj/Sprzedaj" name="next_owner_transfer" tool_tip="Następny Właściciel może oddać lub sprzedać ten obiekt."/>
<button label="OK" name="apply"/>
<button label="Anuluj" name="close"/>
</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_camera.xml b/indra/newview/skins/default/xui/pl/floater_camera.xml
index bdff791609..5b9dd47616 100644
--- a/indra/newview/skins/default/xui/pl/floater_camera.xml
+++ b/indra/newview/skins/default/xui/pl/floater_camera.xml
@@ -16,7 +16,7 @@
W prawo lub w lewo
</floater.string>
<floater.string name="presets_mode_title">
- Preset Views
+ Ustaw widok
</floater.string>
<floater.string name="free_mode_title">
Zobacz obiekt
@@ -58,7 +58,7 @@
</panel>
</panel>
<panel name="buttons">
- <button label="" name="presets_btn" tool_tip="Preset Views"/>
+ <button label="" name="presets_btn" tool_tip="Ustaw widok"/>
<button label="" name="pan_btn" tool_tip="Kamera horyzontalna"/>
<button label="" name="avatarview_btn" tool_tip="Ustawienia"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/floater_customize.xml b/indra/newview/skins/default/xui/pl/floater_customize.xml
index dd1d5cf684..373e74ffe0 100644
--- a/indra/newview/skins/default/xui/pl/floater_customize.xml
+++ b/indra/newview/skins/default/xui/pl/floater_customize.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="floater customize" title="WYGLÄ„D">
<tab_container name="customize tab container">
- <text label="Części Ciała" name="body_parts_placeholder">
+ <text label="Części ciała" name="body_parts_placeholder">
Części ciała
</text>
<panel label="Kształt" name="Shape">
@@ -157,7 +157,7 @@
<texture_picker label="Materiał" name="Fabric" tool_tip="Kliknij by wybrać teksturę"/>
<color_swatch label="Kolor/Barwa" name="Color/Tint" tool_tip="Kliknij aby wybrać kolor"/>
<button label="Zdejmij" label_selected="Zdejmij" name="Take Off"/>
- <button label="Nowa Koszula" label_selected="Nowa Koszula" name="Create New"/>
+ <button label="Nowa koszula" label_selected="Nowa Koszula" name="Create New"/>
<button label="Zapisz" label_selected="Zapisz" name="Save"/>
<button label="Zapisz jako..." label_selected="Zapisz jako..." name="Save As"/>
<button label="Wróć" label_selected="Wróć" name="Revert"/>
@@ -183,7 +183,7 @@
Nie posiadasz prawa do modyfikowania tej koszuli.
</text>
<text name="Item Action Label">
- Koszulka:
+ Koszula:
</text>
</panel>
<panel label="Spodnie" name="Pants">
@@ -504,7 +504,7 @@
<text name="not worn instructions">
Załóż nową maskę alpha poprzez przeciągnięcie jej ze swojej szafy na awatara. Alternatywnie, możesz także stworzyć własną z plików roboczych.
</text>
- <button label="Stwórz nową Alpha" label_selected="Utwórz Nową Alpha" name="Create New"/>
+ <button label="Stwórz nową Alpha" label_selected="Utwórz nową Alpha" name="Create New"/>
<text name="no modify instructions">
Nie posiadasz uprawnień do modyfikowania tych ubrań/części ciała.
</text>
diff --git a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
index e7f73faca7..f3929df3e3 100644
--- a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<floater name="Day Cycle Floater" title="EDYTOR CYKLU DNIA">
<tab_container name="Day Cycle Tabs">
- <panel label="Cykl Dnia" name="Day Cycle">
+ <panel label="Cykl dnia" name="Day Cycle">
<button label="?" name="WLDayCycleHelp"/>
<multi_slider label="" name="WLTimeSlider"/>
<multi_slider label="" name="WLDayCycleKeys"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_event.xml b/indra/newview/skins/default/xui/pl/floater_event.xml
index 7588493464..80862bfd2f 100644
--- a/indra/newview/skins/default/xui/pl/floater_event.xml
+++ b/indra/newview/skins/default/xui/pl/floater_event.xml
@@ -16,7 +16,7 @@
Adult
</floater.string>
<floater.string name="general">
- PG
+ General
</floater.string>
<floater.string name="unknown">
Nieznana
@@ -62,8 +62,8 @@
</expandable_text>
</layout_panel>
<layout_panel name="button_panel">
- <button name="create_event_btn" tool_tip="Stwórz Imprezę"/>
- <button name="god_delete_event_btn" tool_tip="Skasuj ImprezÄ™"/>
+ <button name="create_event_btn" tool_tip="Stwórz imprezę"/>
+ <button name="god_delete_event_btn" tool_tip="Skasuj imprezÄ™"/>
<button label="Zawiadom mnie" name="notify_btn"/>
<button label="Teleportuj" name="teleport_btn"/>
<button label="Mapa" name="map_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_gesture.xml b/indra/newview/skins/default/xui/pl/floater_gesture.xml
index 750a9e4a66..0c27e4d0bb 100644
--- a/indra/newview/skins/default/xui/pl/floater_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_gesture.xml
@@ -18,8 +18,8 @@
<panel label="bottom_panel" name="bottom_panel">
<menu_button name="gear_btn" tool_tip="Więcej opcji"/>
<button name="new_gesture_btn" tool_tip="Stwórz nową gesturę"/>
- <button name="activate_btn" tool_tip="Aktywuj/Dezaktywuj wybrany gest"/>
- <button name="del_btn" tool_tip="Usuń gest"/>
+ <button name="activate_btn" tool_tip="Aktywuj/Dezaktywuj wybranÄ… gesturÄ™"/>
+ <button name="del_btn" tool_tip="Usuń gesturę"/>
</panel>
<button label="Edytuj" name="edit_btn"/>
<button label="Odtwarzaj" name="play_btn"/>
diff --git a/indra/newview/skins/default/xui/pl/floater_god_tools.xml b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
index 1f4502b9a4..828898de54 100644
--- a/indra/newview/skins/default/xui/pl/floater_god_tools.xml
+++ b/indra/newview/skins/default/xui/pl/floater_god_tools.xml
@@ -10,16 +10,16 @@
</text>
<line_editor left="115" name="region name" width="178"/>
<check_box label="Wstęp" name="check prelude" tool_tip="Set this to make the region a prelude"/>
- <check_box label="Korekta Słońca" name="check fixed sun" tool_tip="Skorektuj ustawienia pozycji słońca."/>
+ <check_box label="Korekta słońca" name="check fixed sun" tool_tip="Skoryguj ustawienia pozycji słońca."/>
<check_box height="32" label="Zresetuj pozycję Miejsca Startowego" name="check reset home" tool_tip="Zresetuj miejsce startu Rezydentów po teleportacji"/>
<check_box bottom_delta="-32" label="Widoczny" name="check visible" tool_tip="Wybierz tą opcję by ustawić region widocznym dla wszystkich."/>
<check_box label="Zniszczenia" name="check damage" tool_tip="Wybierz tę opcję by uruchomić opcję zniszczeń w regionie."/>
- <check_box label="Zablokuj Monitorowanie Trafficu" name="block dwell" tool_tip="Wybierz tą opcję by zablokować monitorowanie trafficu w regionie."/>
- <check_box label="Zablokuj Terraformowanie" name="block terraform" tool_tip="Wybierz tą opcję by zablokować terraforming w regionie"/>
+ <check_box label="Zablokuj monitorowanie trafficu" name="block dwell" tool_tip="Wybierz tą opcję by zablokować monitorowanie trafficu w regionie."/>
+ <check_box label="Zablokuj terraformowanie" name="block terraform" tool_tip="Wybierz tą opcję by zablokować terraforming w regionie"/>
<check_box label="Piaskownica" name="is sandbox" tool_tip="Toggle whether this is a sandbox region"/>
<button label="Ustal teren" label_selected="Ustal teren" name="Bake Terrain" tool_tip="Zapamiętaj obecny teren jako początkowy dla cofnięcia modyfikacji terenu." width="138"/>
<button label="Cofnięcie modyfikacji" label_selected="Cofnięcie modyfikacji" name="Revert Terrain" tool_tip="Przywróć ustawienia domyślne Regionu." width="138"/>
- <button label="Zamień teren" label_selected="Zamień teren" name="Swap Terrain" tool_tip="Swap current terrain with default" width="138"/>
+ <button label="Zamień teren" label_selected="Zamień teren" name="Swap Terrain" tool_tip="Zmień bieżący teren domyślnie" width="138"/>
<text name="estate id">
ID Regionu:
</text>
@@ -46,8 +46,8 @@
L$/m²:
</text>
<spinner name="land cost"/>
- <button label="Odśwież" label_selected="Odśwież" name="Refresh" tool_tip="Click here to refresh the above information"/>
- <button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Click here to apply any changes from above"/>
+ <button label="Odśwież" label_selected="Odśwież" name="Refresh" tool_tip="Kliknij tutaj aby odswieżyć powyższe informacje"/>
+ <button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Kliknij tutaj aby zastosować powyższe zmiany"/>
<button label="Wybierz Region" label_selected="Wybierz Region" left="156" name="Select Region" tool_tip="Wybierz cały Region za pomocą narzędzi edycji terenu" width="150"/>
<button label="Automatyczne zapisanie" label_selected="Automatyczne zapisanie" left="156" name="Autosave now" tool_tip="Save gzipped state to autosave directory" width="150"/>
</panel>
@@ -58,17 +58,17 @@
<text left_delta="110" name="region name">
Welsh
</text>
- <check_box label="Wyłącz skrypty" name="disable scripts" tool_tip="Set this to disable all scripts in this region"/>
+ <check_box label="Wyłącz skrypty" name="disable scripts" tool_tip="Wybierz aby wyłączyć skrypty w tym Regionie"/>
<check_box label="Deaktywuj kolizje" name="disable collisions" tool_tip="Set this to disable non-agent collisions in this region"/>
- <check_box label="WylÄ…cz fizykÄ™" name="disable physics" tool_tip="Set this to disable all physics in this region"/>
- <button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Click here to apply any changes from above"/>
- <button label="Ustaw Cel" label_selected="Set Target" name="Set Target" tool_tip="Set the target avatar for object deletion"/>
+ <check_box label="Wylącz fizykę" name="disable physics" tool_tip="Wybierz aby wyłączyć fizykę w tym Regionie"/>
+ <button label="Zastosuj" label_selected="Zastosuj" name="Apply" tool_tip="Kliknij tu aby zastosować powyższe zmiany"/>
+ <button label="Ustaw cel" label_selected="Ustaw cel" name="Set Target" tool_tip="Ustaw docelowego awatara w celu skasowania obiektów"/>
<text name="target_avatar_name">
(brak)
</text>
- <button label="Usuń cel z oskryptowanych obiektów na innych posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na innych posiadłościach" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Delete all scripted objects owned by the target on land not owned by the target. (no copy) objects will be returned."/>
- <button label="Usuń cel z oskryptowanych obiektów na jakichkolwiek posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na jakichkolwiek posiadłościach" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Delete all scripted objects owned by the target in this region. (no copy) objects will be returned."/>
- <button label="Usuń wszystkie cele i obiekty" label_selected="Usuń wszystkie cele i obiekty" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Delete all objects owned by the target in this region. (no copy) objects will be returned."/>
+ <button label="Usuń cel z oskryptowanych obiektów na innych posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na innych posiadłościach" name="Delete Target&apos;s Scripted Objects On Others Land" tool_tip="Skasuj wszystkie oskryptowane obiekty posiadane przez cel na Posiadłości, której nie jest właścicielem. (obiekty bez praw kopiowania zostaną zwrócone)"/>
+ <button label="Usuń cel z oskryptowanych obiektów na jakichkolwiek posiadłościach" label_selected="Usuń cel &apos;s skryptowane obiekty na jakichkolwiek posiadłościach" name="Delete Target&apos;s Scripted Objects On *Any* Land" tool_tip="Skasuj wszystkie oksryptowane obiekty posiadane przez cel w tym Regionie. (obiekty bez praw kopiowania zostaną zwrócone)"/>
+ <button label="Usuń wszystkie cele i obiekty" label_selected="Usuń wszystkie cele i obiekty" name="Delete *ALL* Of Target&apos;s Objects" tool_tip="Skasuj wszystkie obiekty posiadane przez cel w tym Regionie. (obiekty bez praw kopiowania zostaną zwrócone)"/>
<button label="Główne kolizje" label_selected="Główne kolizje" name="Get Top Colliders" tool_tip="Gets list of objects experiencing the most narrowphase callbacks"/>
<button label="Główne skrypty" label_selected="Główne skrypty" name="Get Top Scripts" tool_tip="Gets list of objects spending the most time running scripts"/>
<button label="Treść skryptów" label_selected="Treść skryptów" name="Scripts digest" tool_tip="Wyświetla listę wszystkich skryptów i liczbę ich zastosowań."/>
diff --git a/indra/newview/skins/default/xui/pl/floater_image_preview.xml b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
index 6b0770af84..ba9724ff9a 100644
--- a/indra/newview/skins/default/xui/pl/floater_image_preview.xml
+++ b/indra/newview/skins/default/xui/pl/floater_image_preview.xml
@@ -12,12 +12,12 @@
<combo_box label="Rodzaj Ubrania" name="clothing_type_combo">
<item label="Obraz" name="Image" value="Tekstura"/>
<item label="WÅ‚osy" name="Hair" value="WÅ‚osy"/>
- <item label="Damska głowa" name="FemaleHead" value="Głowa kobiety"/>
- <item label="Damska górna część ciała" name="FemaleUpperBody" value="Górna część ciała kobiety"/>
- <item label="Damska górna część ciała" name="FemaleLowerBody" value="Dolna część ciała kobiety"/>
- <item label="Męska głowa" name="MaleHead" value="Głowa mężczyzny"/>
- <item label="Męska górna część ciała" name="MaleUpperBody" value="Górna część ciała mężczyzny"/>
- <item label="Męska dolna część ciała" name="MaleLowerBody" value="Dolna część ciała mężczyzny"/>
+ <item label="GÅ‚owa kobiety" name="FemaleHead" value="GÅ‚owa kobiety"/>
+ <item label="Górna część ciała kobiety" name="FemaleUpperBody" value="Górna część ciała kobiety"/>
+ <item label="Dolna część ciała kobiety" name="FemaleLowerBody" value="Dolna część ciała kobiety"/>
+ <item label="Głowa mężczyzny" name="MaleHead" value="Głowa mężczyzny"/>
+ <item label="Górna część ciała mężczyzny" name="MaleUpperBody" value="Górna część ciała mężczyzny"/>
+ <item label="Dona część ciała mężczyzny" name="MaleLowerBody" value="Dolna część ciała mężczyzny"/>
<item label="Spódnica" name="Skirt" value="Spódnica"/>
<item label="Prim sculptowy" name="SculptedPrim" value="Prim sculptowy"/>
</combo_box>
diff --git a/indra/newview/skins/default/xui/pl/floater_inventory.xml b/indra/newview/skins/default/xui/pl/floater_inventory.xml
index 0dc4d5b96d..c42f57fb55 100644
--- a/indra/newview/skins/default/xui/pl/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/pl/floater_inventory.xml
@@ -7,7 +7,7 @@
MOJA SZAFA (Dostarczanie [ITEM_COUNT] obiektów...) [FILTER]
</floater.string>
<floater.string name="TitleCompleted">
- MOJA SZAFA ([ITEM_COUNT] Obiektów) [FILTER]
+ MOJA SZAFA ([ITEM_COUNT] obiektów) [FILTER]
</floater.string>
<floater.string name="Fetched">
Dostarczono
diff --git a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
index 2756f5e850..9ae63031b6 100644
--- a/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/pl/floater_preview_gesture.xml
@@ -42,7 +42,12 @@
<text name="library_label">
Zbiór:
</text>
- <scroll_list name="library_list"/>
+ <scroll_list name="library_list">
+ <scroll_list.rows name="action_animation" value="Animacja"/>
+ <scroll_list.rows name="action_sound" value="Dźwięk"/>
+ <scroll_list.rows name="action_chat" value="Czat"/>
+ <scroll_list.rows name="action_wait" value="Wstrzymaj"/>
+ </scroll_list>
<button label="Dodaj &gt;&gt;" name="add_btn"/>
<text name="steps_label">
Etapy:
diff --git a/indra/newview/skins/default/xui/pl/floater_world_map.xml b/indra/newview/skins/default/xui/pl/floater_world_map.xml
index 3e62393e7a..5bf394f45a 100644
--- a/indra/newview/skins/default/xui/pl/floater_world_map.xml
+++ b/indra/newview/skins/default/xui/pl/floater_world_map.xml
@@ -19,12 +19,12 @@
<text name="land_sale_label">
Sprzedaż Posiadłości
</text>
- <text name="by_owner_label">
- przez Właściciela
- </text>
<text name="auction_label">
aukcja Posiadłości
</text>
+ <text name="by_owner_label">
+ przez Właściciela
+ </text>
<button name="Go Home" tool_tip="Teleportuj do mojego Miejsca Startowego"/>
<text name="Home_label">
Miejsce Startu
@@ -35,7 +35,7 @@
<text name="pg_label">
Ogólne
</text>
- <check_box name="events_mature_chk"/>
+ <check_box initial_value="true" name="events_mature_chk"/>
<text name="events_mature_label">
Moderuj
</text>
@@ -58,6 +58,9 @@
<search_editor label="Regiony Według Nazwy" name="location" tool_tip="Wpisz nazwę regionu"/>
<button label="Znajdź" name="DoSearch" tool_tip="Szukaj regionu"/>
<button name="Clear" tool_tip="Wyczyść zapamiętane linie oraz zresetuj mapę"/>
+ <text name="events_label">
+ Lokalizacja:
+ </text>
<button label="Teleportuj" name="Teleport" tool_tip="Teleportuj do wybranego miejsca"/>
<button label="Kopiuj SLurl" name="copy_slurl" tool_tip="Kopie obecnego miejsca jako SLurl mogą zostać użyte na stronie internetowej."/>
<button label="Pokaż wybrane" name="Show Destination" tool_tip="Wyśrodkuj mapę w wybranym miejscu"/>
diff --git a/indra/newview/skins/default/xui/pl/menu_viewer.xml b/indra/newview/skins/default/xui/pl/menu_viewer.xml
index 16a89b2b27..97a94584c4 100644
--- a/indra/newview/skins/default/xui/pl/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/pl/menu_viewer.xml
@@ -92,6 +92,7 @@
<menu_item_call label="Wstrzymaj Działanie Skryptów w Selekcji" name="Set Scripts to Not Running"/>
</menu>
<menu label="Opcje" name="Options">
+ <menu_item_call label="Ustaw domyślne pozwolenia ładowania" name="perm prefs"/>
<menu_item_check label="Pokaż Zaawansowane Pozwolenia" name="DebugPermissions"/>
<menu_item_check label="Wybierz Tylko Moje Obiekty" name="Select Only My Objects"/>
<menu_item_check label="Wybierz Tylko Obiekty Przesuwalne" name="Select Only Movable Objects"/>
@@ -109,7 +110,6 @@
<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>
<menu label="Pomoc" name="Help">
diff --git a/indra/newview/skins/default/xui/pl/notifications.xml b/indra/newview/skins/default/xui/pl/notifications.xml
index 58ca77411d..14718e8f6f 100644
--- a/indra/newview/skins/default/xui/pl/notifications.xml
+++ b/indra/newview/skins/default/xui/pl/notifications.xml
@@ -355,7 +355,7 @@ Czy na pewno chcesz kontynuować?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="DeleteOutfits">
- Czy usunąć wybrany strój?
+ Skasować wybrane stroje?
<usetemplate name="okcancelbuttons" notext="Anuluj" yestext="OK"/>
</notification>
<notification name="PromptGoToEventsPage">
@@ -2720,8 +2720,8 @@ Proszę sprawdź swoją sieć i ustawienia firewall.
Awatar &apos;[NAME]&apos; pozostał w pełni załadowany.
</notification>
<notification name="AvatarRezSelfBakeNotification">
- ( [EXISTENCE] sekund w Second Life)
-Załadowano [RESOLUTION] teksturę dla &apos;[BODYREGION]&apos; po [TIME] sekundach.
+ ( [EXISTENCE] sekund w Second Life )
+You [ACTION] a [RESOLUTION] baked texture for &apos;[BODYREGION]&apos; after [TIME] seconds.
</notification>
<notification name="ConfirmLeaveCall">
Czy jestes pewien/pewna, że chcesz zakończyć rozmowę?
@@ -2758,4 +2758,7 @@ Jeżeli wciąż masz problemy sprawdź: [SUPPORT_SITE].
Jeśli jesteś właścicielem posiadłości, możesz ustawić na niej miejsce startu.
W innym przypadku możesz poszukać na mapie miejsca oznaczone jako &quot;Infohub&quot;.
</global>
+ <global name="You died and have been teleported to your home location">
+ Nastąpiła śmierć i teleportacja do Miejsca Startu.
+ </global>
</notifications>
diff --git a/indra/newview/skins/default/xui/pl/panel_group_roles.xml b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
index 8a422e2586..5526694863 100644
--- a/indra/newview/skins/default/xui/pl/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/pl/panel_group_roles.xml
@@ -12,6 +12,9 @@
Możesz dodawać i usuwać Funkcje przypisane do Członków.
Możesz wybrać wielu Członków naciskając Ctrl i klikając na ich imionach.
</panel.string>
+ <panel.string name="donation_area">
+ [AREA] m²
+ </panel.string>
<filter_editor label="Filtruj Członków" name="filter_input"/>
<name_list name="member_list">
<name_list.columns label="Członek" name="name"/>
@@ -75,21 +78,15 @@ Istnieje wiele Przywilei.
<text name="static">
Nazwa Funkcji
</text>
- <line_editor name="role_name">
- Liczba
- </line_editor>
+ <line_editor name="role_name"/>
<text name="static3">
Nazwa Funkcji
</text>
- <line_editor name="role_title">
- (proszę czekać)
- </line_editor>
+ <line_editor name="role_title"/>
<text name="static2">
Opis
</text>
- <text_editor name="role_description">
- (proszę czekać)
- </text_editor>
+ <text_editor name="role_description"/>
<text name="static4">
Przypisane Funkcje
</text>
@@ -104,9 +101,6 @@ Istnieje wiele Przywilei.
</scroll_list>
</panel>
<panel name="actions_footer">
- <text name="static">
- Opis Przywileju
- </text>
<text_editor name="action_description">
Przywilej &apos;Usuń Członka z Grupy&apos;. Tylko Właściciel może usunąć innego Właściciela.
</text_editor>
diff --git a/indra/newview/skins/default/xui/pl/panel_login.xml b/indra/newview/skins/default/xui/pl/panel_login.xml
index 7447efe667..5e4955c28c 100644
--- a/indra/newview/skins/default/xui/pl/panel_login.xml
+++ b/indra/newview/skins/default/xui/pl/panel_login.xml
@@ -12,19 +12,27 @@
Użytkownik:
</text>
<line_editor label="Użytkownik" name="username_edit" tool_tip="[SECOND_LIFE] Użytkownik"/>
+ <text name="password_text">
+ Hasło:
+ </text>
<check_box label="Zapamiętaj Hasło" name="remember_check"/>
<button label="Połącz" name="connect_btn"/>
<text name="start_location_text">
Rozpocznij w:
</text>
<combo_box name="start_location_combo">
+ <combo_box.item label="Ostatnie Miejsce" name="MyLastLocation"/>
<combo_box.item label="Moje Miejsce Startu" name="MyHome"/>
+ <combo_box.item label="&lt;Wpisz Region&gt;" name="Typeregionname"/>
</combo_box>
</layout_panel>
<layout_panel name="links">
<text name="create_new_account_text">
Utwórz nowe konto
</text>
+ <text name="forgot_password_text">
+ Nie pamiętasz hasła?
+ </text>
<text name="login_help">
Potrzebujesz pomocy z logowaniem siÄ™?
</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
index 926ca806ac..a78ab4d6f8 100644
--- a/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/pl/panel_nearby_media.xml
@@ -45,7 +45,7 @@
<panel name="media_controls_panel">
<layout_stack name="media_controls">
<layout_panel name="stop">
- <button name="stop_btn" tool_tip="Wyłącz wybrane media"/>
+ <button name="stop_btn" tool_tip="Zatrzymaj wybrane media"/>
</layout_panel>
<layout_panel name="play">
<button name="play_btn" tool_tip="WÅ‚Ä…cz wybrane media"/>
@@ -57,13 +57,13 @@
<slider_bar initial_value="0.5" name="volume_slider" tool_tip="Głośność audio dla wybranych mediów"/>
</layout_panel>
<layout_panel name="mute">
- <button name="mute_btn" tool_tip="Wycisz audio dla wybranych mediów"/>
+ <button name="mute_btn" tool_tip="Wycisz audio wybranych mediów"/>
</layout_panel>
<layout_panel name="zoom">
<button name="zoom_btn" tool_tip="Przybliż wybrane media"/>
</layout_panel>
<layout_panel name="unzoom">
- <button name="unzoom_btn" tool_tip="Oddal wybrane media"/>
+ <button name="unzoom_btn" tool_tip="Oddal od wybranych mediów"/>
</layout_panel>
</layout_stack>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
index 6ab5be77d8..b0d02179fd 100644
--- a/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/pl/panel_preferences_sound.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel label="Dźwięki" name="Preference Media panel">
<slider label="Główny" name="System Volume"/>
- <check_box label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>
+ <check_box initial_value="true" label="Wycisz podczas minimalizacji" name="mute_when_minimized"/>
<slider label="Interfejs" name="UI Volume"/>
<slider label="Otoczenie" name="Wind Volume"/>
<slider label="Efekty dźwiękowe" name="SFX Volume"/>
@@ -11,8 +11,8 @@
<check_box label="Odtwarzaj media" name="enable_media"/>
<slider label="Komunikacja GÅ‚osowa" name="Voice Volume"/>
<check_box label="Pozwól na rozmowy głosowe" name="enable_voice_check"/>
- <check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz tę funkcję by uruchomić automatyczne uruchamianie mediów"/>
- <check_box label="Uruchom media załączone do innych awatarów" name="media_show_on_others_btn" tool_tip="Odznacz tę funkcję by ukryć media załączone to awatarów w publiżu"/>
+ <check_box label="Automatycznie odtwarzaj media" name="media_auto_play_btn" tool_tip="Zaznacz tę funkcję by uruchomić automatyczne uruchamianie mediów" value="true"/>
+ <check_box label="Uruchom media załączone do innych awatarów" name="media_show_on_others_btn" tool_tip="Odznacz tę funkcję by ukryć media załączone to awatarów w publiżu" value="true"/>
<text name="voice_chat_settings">
Ustawienia Komunikacji GÅ‚osowej
</text>
@@ -28,6 +28,12 @@
<panel.string name="default_text">
Domyślne
</panel.string>
+ <panel.string name="default system device">
+ Domyślne ustawienia sprzętowe
+ </panel.string>
+ <panel.string name="no device">
+ Brak sprzętu
+ </panel.string>
<text name="Input">
Wejściowe
</text>
diff --git a/indra/newview/skins/default/xui/pl/panel_teleport_history.xml b/indra/newview/skins/default/xui/pl/panel_teleport_history.xml
index d143843eaf..b43bd96536 100644
--- a/indra/newview/skins/default/xui/pl/panel_teleport_history.xml
+++ b/indra/newview/skins/default/xui/pl/panel_teleport_history.xml
@@ -1,10 +1,11 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<panel name="Teleport History">
<accordion name="history_accordion">
+ <no_matched_tabs_text name="no_matched_teleports_msg" value="Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/places/[SEARCH_TERM] Szukaj]."/>
+ <no_visible_tabs_text name="no_teleports_msg" value="Historia teleportacji jest pusta. Spróbuj [secondlife:///app/search/places/ Szukaj]."/>
<accordion_tab name="today" title="Dzisiaj"/>
<accordion_tab name="yesterday" title="Wczoraj"/>
<accordion_tab name="2_days_ago" title="2 dni temu"/>
- 5
<accordion_tab name="3_days_ago" title="3 dni temu"/>
<accordion_tab name="4_days_ago" title="4 dni temu"/>
<accordion_tab name="5_days_ago" title="5 dni temu"/>
diff --git a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
index 0c6169c9c0..3282926bcd 100644
--- a/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/pl/sidepanel_item_info.xml
@@ -23,8 +23,7 @@
</panel.string>
<text name="title" value="Profil obiektu"/>
<text name="origin" value="(Szafa)"/>
- <panel label=""
- name="item_profile">
+ <panel label="" name="item_profile">
<text name="LabelItemNameTitle">
Nazwa:
</text>
@@ -45,10 +44,10 @@
<text name="LabelAcquiredDate"/>
<panel name="perms_inv">
<text name="perm_modify">
- Ty możesz:
+ Możesz:
</text>
<check_box label="Zmienia" name="CheckOwnerModify"/>
- <check_box label="Kopiuje" name="CheckOwnerCopy"/>
+ <check_box label="Kopiuj" name="CheckOwnerCopy"/>
<check_box label="Sprzedaje/Oddaje" name="CheckOwnerTransfer"/>
<text name="AnyoneLabel">
Każdy:
@@ -57,18 +56,18 @@
<text name="GroupLabel">
Grupa:
</text>
- <check_box label="Udostępnij" name="CheckShareWithGroup" tool_tip="Pozwól wszystkim członkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz Przypisać aby aktywować ograniczenia wynikające z roli."/>
+ <check_box label="Udostępnij" name="CheckShareWithGroup" tool_tip="Pozwól wszystkim członkom ustawionej grupy na dzielenie prawa do modyfikacji dla tego obiektu. Musisz przypisać obiekt grupie aby aktywować ograniczenia wynikające z roli."/>
<text name="NextOwnerLabel">
Następny Właściciel:
</text>
<check_box label="Modyfikuje" name="CheckNextOwnerModify"/>
<check_box label="Kopiuje" name="CheckNextOwnerCopy"/>
- <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="Następny właściciel może oddać lub sprzedać ten obiekt"/>
+ <check_box label="Sprzedaje/Oddaje" name="CheckNextOwnerTransfer" tool_tip="Następny Właściciel może oddawać lub sprzedawać ten obiekt"/>
</panel>
- <check_box label="Na Sprzedaż" name="CheckPurchase"/>
+ <check_box label="Na sprzedaż" name="CheckPurchase"/>
<combo_box name="combobox sale copy">
- <combo_box.item label="Kopia" name="Copy"/>
- <combo_box.item label="Originał" name="Original"/>
+ <combo_box.item label="Kopiuje" name="Copy"/>
+ <combo_box.item label="Oryginalny" name="Original"/>
</combo_box>
<spinner label="Cena: L$" name="Edit Cost"/>
</panel>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index bd1fb6a5da..e4423dc5ce 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -642,6 +642,9 @@
<string name="worldmap_offline">
Mapa Świata jest Niedostępna
</string>
+ <string name="worldmap_item_tooltip_format">
+ [AREA] m² L$[PRICE]
+ </string>
<string name="worldmap_results_none_found">
Miejsce Nieodnalezione.
</string>
@@ -1031,6 +1034,7 @@
<string name="AnimFlagStop" value=" Zatrzymaj AnimacjÄ™ :"/>
<string name="AnimFlagStart" value=" Rozpocznij AnimacjÄ™ :"/>
<string name="Wave" value=" Wave"/>
+ <string name="GestureActionNone" value="Żadne"/>
<string name="HelloAvatar" value=" Witaj, Awatarze!"/>
<string name="ViewAllGestures" value=" Zobacz Wszystkie &gt;&gt;"/>
<string name="GetMoreGestures" value="Więcej gesturek &gt;&gt;"/>
@@ -1110,12 +1114,12 @@
<string name="InvFolder Gestures">
Gesturki
</string>
- <string name="InvFolder favorite">
- Ulubione
- </string>
<string name="InvFolder Current Outfit">
Obecne Ubranie
</string>
+ <string name="InvFolder Initial Outfits">
+ PoczÄ…tkowe stroje
+ </string>
<string name="InvFolder My Outfits">
Moje Ubranie
</string>
@@ -1435,6 +1439,7 @@
<string name="SummaryForTheWeek" value="Podsumowanie dla tego tygodnia, poczÄ…wszy od "/>
<string name="NextStipendDay" value="Następna wypłata będzie w "/>
<string name="GroupIndividualShare" value=" Groupa Udziały Indywidualne"/>
+ <string name="GroupColumn" value="Grupa"/>
<string name="Balance">
Stan
</string>
@@ -1648,6 +1653,12 @@
<string name="BusyModeResponseDefault">
Rezydent, do którego wysłałeś wiadomość prywatną znajduje się w trybie pracy. Oznacza to, iż Twoja wiadomość zostanie zapisana do przeglądnięcia poźniej.
</string>
+ <string name="NoOutfits">
+ Nie posiadasz jeszcze żadnych strojów. Spróbuj [secondlife:///app/search/all/ Szukaj]
+ </string>
+ <string name="NoOutfitsTabsMatched">
+ Nie znaleziono tego czego szukasz? Spróbuj [secondlife:///app/search/all/[SEARCH_TERM] Szukaj].
+ </string>
<string name="MuteByName">
(Nazwa)
</string>
@@ -3568,6 +3579,9 @@ Jeżeli nadal otrzymujesz ten komunikat, skontaktuj się z [SUPPORT_SITE].
<string name="group_role_owners">
Właściciele
</string>
+ <string name="group_member_status_online">
+ Obecnie w SL
+ </string>
<string name="uploading_abuse_report">
Pobieranie...
@@ -3621,9 +3635,15 @@ Raport o Nadużyciu
<string name="Invalid Wearable">
Nieaktualne ubranie/część ciała
</string>
+ <string name="New Gesture">
+ Nowy gest
+ </string>
<string name="New Script">
Nowy skrypt
</string>
+ <string name="New Note">
+ Stwórz nowe ogłoszenie
+ </string>
<string name="New Folder">
Nowy folder
</string>
@@ -3681,6 +3701,15 @@ Raport o Nadużyciu
<string name="Male - Wow">
Mężczyzna - Wow
</string>
+ <string name="Female - Chuckle">
+ Kobieta - Chichot
+ </string>
+ <string name="Female - Cry">
+ Kobieta - PÅ‚acze
+ </string>
+ <string name="Female - Embarrassed">
+ Kobieta - Zakłopotana
+ </string>
<string name="Female - Excuse me">
Kobieta - Excuse me
</string>
@@ -3699,9 +3728,21 @@ Raport o Nadużyciu
<string name="Female - Hey">
Kobieta - Hey
</string>
+ <string name="Female - Hey baby">
+ Kobieta - Hey baby
+ </string>
<string name="Female - Laugh">
Kobieta - Åšmiech
</string>
+ <string name="Female - Looking good">
+ Kobieta - Looking good
+ </string>
+ <string name="Female - Over here">
+ Kobieta - Over here
+ </string>
+ <string name="Female - Please">
+ Kobieta - Please
+ </string>
<string name="Female - Repulsed">
Kobieta - Odrzucenie
</string>
@@ -3751,4 +3792,46 @@ Raport o Nadużyciu
<string name="dateTimePM">
PM
</string>
+ <string name="LocalEstimateUSD">
+ US$ [AMOUNT]
+ </string>
+ <string name="Membership">
+ Członkostwo
+ </string>
+ <string name="Roles">
+ Funkcje
+ </string>
+ <string name="Group Identity">
+ Status Grupy
+ </string>
+ <string name="Parcel Management">
+ Parcel Management
+ </string>
+ <string name="Parcel Identity">
+ Parcel Identity
+ </string>
+ <string name="Parcel Settings">
+ Parcel Settings
+ </string>
+ <string name="Parcel Powers">
+ Parcel Powers
+ </string>
+ <string name="Parcel Access">
+ Dostęp do posiadłości
+ </string>
+ <string name="Parcel Content">
+ Parcel Content
+ </string>
+ <string name="Object Management">
+ Object Management
+ </string>
+ <string name="Accounting">
+ Accounting
+ </string>
+ <string name="Notices">
+ Ogłoszenia
+ </string>
+ <string name="Chat">
+ Czat
+ </string>
</strings>