summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/cmake/00-Common.cmake4
-rwxr-xr-xindra/develop.py2
-rw-r--r--indra/llmessage/llpumpio.cpp8
-rw-r--r--indra/llui/lltexteditor.cpp140
-rw-r--r--indra/llui/lltexteditor.h16
-rw-r--r--indra/newview/lldrawable.cpp4
-rw-r--r--indra/newview/lltextureview.cpp12
-rw-r--r--indra/newview/llviewerobjectlist.cpp2
-rw-r--r--indra/newview/skins/default/xui/de/floater_inventory.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml6
-rw-r--r--indra/newview/skins/default/xui/de/floater_lsl_guide.xml2
-rw-r--r--indra/newview/skins/default/xui/de/floater_snapshot.xml4
-rw-r--r--indra/newview/skins/default/xui/de/floater_tools.xml20
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_general.xml8
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_land_money.xml15
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_notices.xml6
-rw-r--r--indra/newview/skins/default/xui/de/panel_group_roles.xml14
-rw-r--r--indra/newview/skins/default/xui/de/strings.xml4
-rw-r--r--indra/newview/skins/default/xui/ja/floater_tools.xml2
-rw-r--r--indra/newview/skins/default/xui/ja/strings.xml4
-rwxr-xr-xindra/newview/viewer_manifest.py24
21 files changed, 162 insertions, 139 deletions
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 9a91f235f6..333860a31a 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -49,6 +49,10 @@ if (WINDOWS)
)
if(MSVC80 OR MSVC90)
+ set(CMAKE_CXX_FLAGS_RELEASE
+ "${CMAKE_CXX_FLAGS_RELEASE} -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0"
+ CACHE STRING "C++ compiler release options" FORCE)
+
add_definitions(
/Zc:wchar_t-
)
diff --git a/indra/develop.py b/indra/develop.py
index 3692fac2b3..90e1003d70 100755
--- a/indra/develop.py
+++ b/indra/develop.py
@@ -458,7 +458,7 @@ class WindowsSetup(PlatformSetup):
def _get_generator(self):
if self._generator is None:
- for version in 'vc71 vc80 vc90'.split():
+ for version in 'vc80 vc90 vc71'.split():
if self.find_visual_studio(version):
self._generator = version
print 'Building with ', self.gens[version]['gen']
diff --git a/indra/llmessage/llpumpio.cpp b/indra/llmessage/llpumpio.cpp
index 39e9a8b952..7a6605d16a 100644
--- a/indra/llmessage/llpumpio.cpp
+++ b/indra/llmessage/llpumpio.cpp
@@ -177,7 +177,8 @@ LLPumpIO::LLPumpIO(apr_pool_t* pool) :
mCurrentPool(NULL),
mCurrentPoolReallocCount(0),
mChainsMutex(NULL),
- mCallbackMutex(NULL)
+ mCallbackMutex(NULL),
+ mCurrentChain(mRunningChains.end())
{
LLMemType m1(LLMemType::MTYPE_IO_PUMP);
initialize(pool);
@@ -273,7 +274,10 @@ bool LLPumpIO::setTimeoutSeconds(F32 timeout)
void LLPumpIO::adjustTimeoutSeconds(F32 delta)
{
// If no chain is running, bail
- if(current_chain_t() == mCurrentChain) return;
+ if(mRunningChains.end() == mCurrentChain)
+ {
+ return;
+ }
(*mCurrentChain).adjustTimeoutSeconds(delta);
}
diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp
index f935432e57..197f8d98cf 100644
--- a/indra/llui/lltexteditor.cpp
+++ b/indra/llui/lltexteditor.cpp
@@ -260,7 +260,7 @@ LLTextEditor::LLTextEditor(
mIsSelecting( FALSE ),
mSelectionStart( 0 ),
mSelectionEnd( 0 ),
- mScrolledToBottom( FALSE ),
+ mScrolledToBottom( TRUE ),
mOnScrollEndCallback( NULL ),
mOnScrollEndData( NULL ),
mCursorColor( LLUI::sColorsGroup->getColor( "TextCursorColor" ) ),
@@ -277,14 +277,16 @@ LLTextEditor::LLTextEditor(
mCommitOnFocusLost( FALSE ),
mHideScrollbarForShortDocs( FALSE ),
mTakesNonScrollClicks( TRUE ),
- mTrackBottom( TRUE ),
+ mTrackBottom( FALSE ),
mAllowEmbeddedItems( allow_embedded_items ),
mAcceptCallingCardNames(FALSE),
mHandleEditKeysDirectly( FALSE ),
mMouseDownX(0),
mMouseDownY(0),
mLastSelectionX(-1),
- mLastSelectionY(-1)
+ mLastSelectionY(-1),
+ mReflowNeeded(FALSE),
+ mScrollNeeded(FALSE)
{
mSourceID.generate();
@@ -468,6 +470,13 @@ void LLTextEditor::updateLineStartList(S32 startpos)
mScrollbar->setVisible(!short_doc);
}
+ // if scrolled to bottom, stay at bottom
+ // unless user is editing text
+ // do this after updating page size
+ if (mScrolledToBottom && mTrackBottom && !hasFocus())
+ {
+ endOfDoc();
+ }
}
////////////////////////////////////////////////////////////
@@ -511,8 +520,7 @@ void LLTextEditor::setText(const LLStringExplicit &utf8str)
setCursorPos(0);
deselect();
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
resetDirty();
}
@@ -529,8 +537,7 @@ void LLTextEditor::setWText(const LLWString &wtext)
setCursorPos(0);
deselect();
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
resetDirty();
}
@@ -568,8 +575,7 @@ void LLTextEditor::setWordWrap(BOOL b)
setCursorPos(0);
deselect();
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
@@ -734,6 +740,7 @@ S32 LLTextEditor::getLineStart( S32 line ) const
{
return 0;
}
+
line = llclamp(line, 0, num_lines-1);
S32 segidx = mLineStartList[line].mSegment;
S32 segoffset = mLineStartList[line].mOffset;
@@ -781,14 +788,14 @@ void LLTextEditor::getSegmentAndOffset( S32 startpos, S32* segidxp, S32* offsetp
*offsetp = startpos - (*seg_iter)->getStart();
}
-const LLTextSegment* LLTextEditor::getPreviousSegment()
+const LLTextSegment* LLTextEditor::getPreviousSegment() const
{
// find segment index at character to left of cursor (or rightmost edge of selection)
S32 idx = llmax(0, getSegmentIdxAtOffset(mCursorPos) - 1);
return idx >= 0 ? mSegments[idx] : NULL;
}
-void LLTextEditor::getSelectedSegments(std::vector<const LLTextSegment*>& segments)
+void LLTextEditor::getSelectedSegments(std::vector<const LLTextSegment*>& segments) const
{
S32 left = hasSelection() ? llmin(mSelectionStart, mSelectionEnd) : mCursorPos;
S32 right = hasSelection() ? llmax(mSelectionStart, mSelectionEnd) : mCursorPos;
@@ -875,13 +882,12 @@ void LLTextEditor::setCursor(S32 row, S32 column)
}
doc += column;
setCursorPos(doc - mWText.c_str());
- updateScrollFromCursor();
}
void LLTextEditor::setCursorPos(S32 offset)
{
mCursorPos = llclamp(offset, 0, (S32)getLength());
- updateScrollFromCursor();
+ needsScroll();
// reset desired x cursor position
mDesiredXPixel = -1;
}
@@ -1222,8 +1228,6 @@ BOOL LLTextEditor::handleHover(S32 x, S32 y, MASK mask)
setCursorAtLocalPos( x, y, TRUE );
mSelectionEnd = mCursorPos;
-
- updateScrollFromCursor();
}
lldebugst(LLERR_USER_INPUT) << "hover handled by " << getName() << " (active)" << llendl;
@@ -1317,8 +1321,6 @@ BOOL LLTextEditor::handleMouseUp(S32 x, S32 y, MASK mask)
setCursorAtLocalPos( x, y, TRUE );
endSelection();
-
- updateScrollFromCursor();
}
if( !hasSelection() )
@@ -1839,8 +1841,7 @@ void LLTextEditor::cut()
gClipboard.copyFromSubstring( mWText, left_pos, length, mSourceID );
deleteSelection( FALSE );
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
BOOL LLTextEditor::canCopy() const
@@ -1910,8 +1911,7 @@ void LLTextEditor::paste()
setCursorPos(mCursorPos + insert(mCursorPos, clean_string, FALSE));
deselect();
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
@@ -2235,9 +2235,9 @@ BOOL LLTextEditor::handleKeyHere(KEY key, MASK mask )
if(text_may_have_changed)
{
- updateLineStartList();
+ needsReflow();
}
- updateScrollFromCursor();
+ needsScroll();
}
}
@@ -2280,8 +2280,7 @@ BOOL LLTextEditor::handleUnicodeCharHere(llwchar uni_char)
// Most keystrokes will make the selection box go away, but not all will.
deselect();
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
}
@@ -2339,8 +2338,7 @@ void LLTextEditor::doDelete()
}
}
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
//----------------------------------------------------------------------------
@@ -2383,8 +2381,7 @@ void LLTextEditor::undo()
setCursorPos(pos);
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
BOOL LLTextEditor::canRedo() const
@@ -2426,8 +2423,7 @@ void LLTextEditor::redo()
setCursorPos(pos);
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
void LLTextEditor::onFocusReceived()
@@ -3100,6 +3096,20 @@ void LLTextEditor::drawClippedSegment(const LLWString &text, S32 seg_start, S32
void LLTextEditor::draw()
{
+ // do on-demand reflow
+ if (mReflowNeeded)
+ {
+ updateLineStartList();
+ mReflowNeeded = FALSE;
+ }
+
+ // then update scroll position, as cursor may have moved
+ if (mScrollNeeded)
+ {
+ updateScrollFromCursor();
+ mScrollNeeded = FALSE;
+ }
+
{
LLLocalClipRect clip(LLRect(0, getRect().getHeight(), getRect().getWidth() - (mScrollbar->getVisible() ? SCROLLBAR_SIZE : 0), 0));
@@ -3118,10 +3128,10 @@ void LLTextEditor::draw()
mBorder->setKeyboardFocusHighlight( gFocusMgr.getKeyboardFocus() == this);// && !mReadOnly);
}
+ LLView::draw(); // Draw children (scrollbar and border)
+
// remember if we are supposed to be at the bottom of the buffer
mScrolledToBottom = isScrolledToBottom();
-
- LLView::draw(); // Draw children (scrollbar and border)
}
@@ -3311,7 +3321,7 @@ void LLTextEditor::setCursorAndScrollToEnd()
{
deselect();
endOfDoc();
- updateScrollFromCursor();
+ needsScroll();
}
void LLTextEditor::getLineAndColumnForPosition( S32 position, S32* line, S32* col, BOOL include_wordwrap )
@@ -3438,7 +3448,7 @@ void LLTextEditor::reshape(S32 width, S32 height, BOOL called_from_parent)
// up-to-date mTextRect
updateTextRect();
- updateLineStartList();
+ needsReflow();
// propagate shape information to scrollbar
mScrollbar->setDocSize( getLineCount() );
@@ -3446,14 +3456,6 @@ void LLTextEditor::reshape(S32 width, S32 height, BOOL called_from_parent)
S32 line_height = llround( mGLFont->getLineHeight() );
S32 page_lines = mTextRect.getHeight() / line_height;
mScrollbar->setPageSize( page_lines );
-
- // if scrolled to bottom, stay at bottom
- // unless user is editing text
- // do this after updating page size
- if (mScrolledToBottom && mTrackBottom && !hasFocus())
- {
- endOfDoc();
- }
}
void LLTextEditor::autoIndent()
@@ -3500,8 +3502,7 @@ void LLTextEditor::insertText(const std::string &new_text)
setCursorPos(mCursorPos + insert( mCursorPos, utf8str_to_wstring(new_text), FALSE ));
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
setEnabled( enabled );
}
@@ -3600,7 +3601,7 @@ void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool
mSegments.push_back(segment);
}
- updateLineStartList(old_length);
+ needsReflow();
// Set the cursor and scroll position
// Maintain the scroll position unless the scroll was at the end of the doc (in which
@@ -3639,14 +3640,6 @@ void LLTextEditor::appendText(const std::string &new_text, bool allow_undo, bool
{
blockUndo();
}
-
- // if scrolled to bottom, stay at bottom
- // unless user is editing text
- // do this after updating page size
- if (mScrolledToBottom && mTrackBottom && !hasFocus())
- {
- endOfDoc();
- }
}
void LLTextEditor::removeTextFromEnd(S32 num_chars)
@@ -3661,7 +3654,10 @@ void LLTextEditor::removeTextFromEnd(S32 num_chars)
mSelectionEnd = llclamp(mSelectionEnd, 0, len);
pruneSegments();
+
+ // pruneSegments will invalidate mLineStartList.
updateLineStartList();
+ needsScroll();
}
///////////////////////////////////////////////////////////////////
@@ -3759,8 +3755,7 @@ BOOL LLTextEditor::tryToRevertToPristineState()
}
}
- updateLineStartList();
- updateScrollFromCursor();
+ needsReflow();
}
return isPristine(); // TRUE => success
@@ -3808,6 +3803,7 @@ void LLTextEditor::updateSegments()
{
findEmbeddedItemSegments();
}
+
// Make sure we have at least one segment
if (mSegments.size() == 1 && mSegments[0]->getIsDefault())
{
@@ -3824,6 +3820,7 @@ void LLTextEditor::updateSegments()
}
// Only effective if text was removed from the end of the editor
+// *NOTE: Using this will invalidate references to mSegments from mLineStartList.
void LLTextEditor::pruneSegments()
{
S32 len = mWText.length();
@@ -4066,9 +4063,7 @@ BOOL LLTextEditor::importBuffer(const char* buffer, S32 length )
setCursorPos(0);
deselect();
- updateLineStartList();
- updateScrollFromCursor();
-
+ needsReflow();
return success;
}
@@ -4260,35 +4255,35 @@ S32 LLTextEditor::findHTMLToken(const std::string &line, S32 pos, BOOL reverse)
std::string openers=" \t\n('\"[{<>";
std::string closers=" \t\n)'\"]}><;";
- S32 m2 = 0;
- S32 retval = 0;
+ S32 index = 0;
if (reverse)
{
-
- for (retval=pos; retval >= 0; retval--)
+ for (index=pos; index >= 0; index--)
{
- m2 = openers.find(line.substr(retval,1));
+ char c = line[index];
+ S32 m2 = openers.find(c);
if (m2 >= 0)
{
- break;
+ return index+1;
}
}
- return retval+1;
}
else
{
- for (retval=pos; retval<(S32)line.length(); retval++)
+ for (index=pos; index<(S32)line.length(); index++)
{
- m2 = closers.find(line.substr(retval,1));
+ char c = line[index];
+ S32 m2 = closers.find(c);
if (m2 >= 0)
{
- break;
+ return index;
}
}
- return retval;
- }
+ }
+
+ return index;
}
BOOL LLTextEditor::findHTML(const std::string &line, S32 *begin, S32 *end) const
@@ -4476,9 +4471,8 @@ void LLTextEditor::updatePreedit(const LLWString &preedit_string,
mPreeditStandouts = preedit_standouts;
- updateLineStartList();
+ needsReflow();
setCursorPos(insert_preedit_at + caret_position);
- // updateScrollFromCursor();
// Update of the preedit should be caused by some key strokes.
mKeystrokeTimer.reset();
diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h
index af9908a540..4f41f67ce8 100644
--- a/indra/llui/lltexteditor.h
+++ b/indra/llui/lltexteditor.h
@@ -245,9 +245,9 @@ public:
llwchar getWChar(S32 pos) const { return mWText[pos]; }
LLWString getWSubString(S32 pos, S32 len) const { return mWText.substr(pos, len); }
- const LLTextSegment* getCurrentSegment() { return getSegmentAtOffset(mCursorPos); }
- const LLTextSegment* getPreviousSegment();
- void getSelectedSegments(std::vector<const LLTextSegment*>& segments);
+ const LLTextSegment* getCurrentSegment() const { return getSegmentAtOffset(mCursorPos); }
+ const LLTextSegment* getPreviousSegment() const;
+ void getSelectedSegments(std::vector<const LLTextSegment*>& segments) const;
static bool isPartOfWord(llwchar c) { return (c == '_') || LLStringOps::isAlnum((char)c); }
@@ -433,6 +433,14 @@ private:
void drawText();
void drawClippedSegment(const LLWString &wtext, S32 seg_start, S32 seg_end, F32 x, F32 y, S32 selection_left, S32 selection_right, const LLStyleSP& color, F32* right_x);
+ void needsReflow()
+ {
+ mReflowNeeded = TRUE;
+ // cursor might have moved, need to scroll
+ mScrollNeeded = TRUE;
+ }
+ void needsScroll() { mScrollNeeded = TRUE; }
+
//
// Data
//
@@ -489,6 +497,8 @@ private:
};
typedef std::vector<line_info> line_list_t;
line_list_t mLineStartList;
+ BOOL mReflowNeeded;
+ BOOL mScrollNeeded;
LLFrameTimer mKeystrokeTimer;
diff --git a/indra/newview/lldrawable.cpp b/indra/newview/lldrawable.cpp
index 1592cc0a8b..88fda7a89c 100644
--- a/indra/newview/lldrawable.cpp
+++ b/indra/newview/lldrawable.cpp
@@ -952,6 +952,9 @@ BOOL LLDrawable::isVisible() const
return TRUE;
}
+#if 0
+ //disabling this code fixes DEV-20105. Leaving in place in case some other bug pops up as a a result.
+ //should be safe to just always ask the spatial group for visibility.
if (isActive())
{
if (isRoot())
@@ -974,6 +977,7 @@ BOOL LLDrawable::isVisible() const
}
}
else
+#endif
{
LLSpatialGroup* group = getSpatialGroup();
if (group && group->isVisible())
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 14fa73d3b1..40be40d9f6 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -383,9 +383,9 @@ private:
void LLGLTexMemBar::draw()
{
- S32 bound_mem = LLViewerImage::sBoundTextureMemory;
+ S32 bound_mem = (LLViewerImage::sBoundTextureMemory >> 20);
S32 max_bound_mem = LLViewerImage::sMaxBoundTextureMem;
- S32 total_mem = LLViewerImage::sTotalTextureMemory;
+ S32 total_mem = (LLViewerImage::sTotalTextureMemory >> 20);
S32 max_total_mem = LLViewerImage::sMaxTotalTextureMem;
F32 discard_bias = LLViewerImage::sDesiredDiscardBias;
S32 line_height = (S32)(LLFontGL::sMonospace->getLineHeight() + .5f);
@@ -396,10 +396,10 @@ void LLGLTexMemBar::draw()
std::string text;
text = llformat("GL Tot: %d/%d MB Bound: %d/%d MB Discard Bias: %.2f",
- total_mem/(1024*1024),
- max_total_mem/(1024*1024),
- bound_mem/(1024*1024),
- max_bound_mem/(1024*1024),
+ total_mem,
+ max_total_mem,
+ bound_mem,
+ max_bound_mem,
discard_bias);
LLFontGL::sMonospace->renderUTF8(text, 0, 0, line_height*3,
diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp
index ab06a0f4fb..1fca77ec50 100644
--- a/indra/newview/llviewerobjectlist.cpp
+++ b/indra/newview/llviewerobjectlist.cpp
@@ -903,7 +903,7 @@ void LLViewerObjectList::killAllObjects()
if (!mMapObjects.empty())
{
llwarns << "Some objects still on map object list!" << llendl;
- mActiveObjects.clear();
+ mMapObjects.clear();
}
}
diff --git a/indra/newview/skins/default/xui/de/floater_inventory.xml b/indra/newview/skins/default/xui/de/floater_inventory.xml
index d731d009b5..c8c67240d8 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory.xml
@@ -2,8 +2,8 @@
<floater name="Inventory" title="Inventar">
<search_editor label="Suchanfrage hier eintippen" name="inventory search editor" />
<tab_container name="inventory filter tabs">
- <inventory_panel label="All Items" name="All Items" />
- <inventory_panel label="Recent Items" name="Recent Items" />
+ <inventory_panel label="Alle Objekte" name="All Items" />
+ <inventory_panel label="Letzte Objekte" name="Recent Items" />
</tab_container>
<menu_bar name="Inventory Menu">
<menu label="Datei" name="File">
diff --git a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
index 1477cdb694..2b63a90a19 100644
--- a/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
+++ b/indra/newview/skins/default/xui/de/floater_inventory_item_properties.xml
@@ -49,17 +49,17 @@
</text>
<check_box label="Mit Gruppe teilen" name="CheckShareWithGroup" />
<check_box label="Kopieren allen erlauben" name="CheckEveryoneCopy" />
- <text name="NextOwnerLabel">
+ <text name="NextOwnerLabel" width="150">
Nächster Eigentümer kann:
</text>
<check_box label="Bearbeiten" name="CheckNextOwnerModify" />
- <check_box label="Kopieren" name="CheckNextOwnerCopy" />
+ <check_box label="Kopieren" name="CheckNextOwnerCopy" left_delta="85" />
<check_box label="Verkaufen/Weggeben" name="CheckNextOwnerTransfer" />
<text name="SaleLabel">
Objekt markieren:
</text>
<check_box label="Zum Verkauf" name="CheckPurchase" />
- <radio_group name="RadioSaleType">
+ <radio_group name="RadioSaleType" left_delta="85" width="245" >
<radio_item name="radio">
Original
</radio_item>
diff --git a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
index 9fb400dfd7..3f4a6237f1 100644
--- a/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
+++ b/indra/newview/skins/default/xui/de/floater_lsl_guide.xml
@@ -3,5 +3,5 @@
<check_box label="Cursor folgen" name="lock_check" />
<combo_box label="Sperren" name="history_combo" />
<button label="Zurück" name="back_btn" />
- <button label="Weiterleiten" name="fwd_btn" />
+ <button label="Weiterleiten" name="fwd_btn" width="82" />
</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_snapshot.xml b/indra/newview/skins/default/xui/de/floater_snapshot.xml
index f2de8103c3..c7a366ae87 100644
--- a/indra/newview/skins/default/xui/de/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/de/floater_snapshot.xml
@@ -112,10 +112,10 @@
<spinner label="Höhe" name="snapshot_height"/>
<check_box label="Seitenverhältnis beibehalten" name="keep_aspect_check"/>
<slider label="Bildqualität" name="image_quality_slider"/>
- <text name="layer_type_label">
+ <text name="layer_type_label" width="63">
Aufnehmen:
</text>
- <combo_box label="Bildlayer" name="layer_types">
+ <combo_box label="Bildlayer" name="layer_types" width="132" left="73">
<combo_item name="Colors">
Farben
</combo_item>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index 03401cee9c..a04851c429 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -168,9 +168,9 @@
<text name="label click action">
Bei Linksklicken:
</text>
- <combo_box name="clickaction">
+ <combo_box name="clickaction" width="178">
<combo_item name="Touch/grab(default)">
- Berühren/greifen (Standard)
+ Berühren/Greifen (Standard)
</combo_item>
<combo_item name="Sitonobject">
Auf Objekt sitzen
@@ -590,13 +590,13 @@
<text name="label_area">
Fläche: [AREA] m2
</text>
- <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" />
- <button label="Land aufgeben..." label_selected="Land aufgeben..."
+ <button label="Land kaufen..." label_selected="Land kaufen..." name="button buy land" width="110" />
+ <button label="Land aufgeben..." label_selected="Land aufgeben..." width="110"
name="button abandon land" />
- <button label="Unterteilen..." label_selected="Unterteilen..."
+ <button label="Unterteilen..." label_selected="Unterteilen..." width="110"
name="button subdivide land" />
- <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" />
- <button label="Info zu Land..." label_selected="Info zu Land..."
+ <button label="Zusammenlegen" label_selected="Zusammenlegen" name="button join land" width="110" />
+ <button label="Info zu Land..." label_selected="Info zu Land..." width="110"
name="button about land" />
</panel>
<text name="status_rotate">
@@ -606,7 +606,7 @@
Klicken und ziehen, um die ausgewählte Seite zu dehnen
</text>
<text name="status_move">
- Maus verschiebt, Shift-Taste und Maus kopiert
+ Maus verschiebt, Umschalt-Taste und Maus kopiert
</text>
<text name="status_modifyland">
Klicken und halten, um das Land zu bearbeiten
@@ -615,10 +615,10 @@
Klicken und ziehen, um die Ansicht zu ändern
</text>
<text name="status_grab">
- Objekt new positionierern
+ Objekt neu positionieren
</text>
<text name="status_place">
- Mausklick erstellt, Shift-Mausklick wählt aus
+ Mausklick erstellt, Umschalt-Mausklick wählt aus
</text>
<text name="status_selectland">
Klicken und ziehen, um Land auszuwählen
diff --git a/indra/newview/skins/default/xui/de/panel_group_general.xml b/indra/newview/skins/default/xui/de/panel_group_general.xml
index 0a32de2192..d232bfaf07 100644
--- a/indra/newview/skins/default/xui/de/panel_group_general.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_general.xml
@@ -38,9 +38,9 @@ Bewegen Sie die Maus über die Optionen, um weitere Informationen anzuzeigen.
(Eigentümer werden fettgedruckt angezeigt)
</text>
<name_list name="visible_members">
- <column label="Member Name" name="name" />
- <column label="Title" name="title" />
- <column label="Last Login" name="online" />
+ <column label="Mitgliedsname" name="name" relwidth="0.40" />
+ <column label="Titel" name="title" relwidth="0.25" />
+ <column label="Letzte Anmeldung" name="online" relwidth="0.35" />
</name_list>
<text name="incomplete_member_data_str">
Mitgliedsdaten werden abgerufen
@@ -83,8 +83,6 @@ Falls in den nächsten 48 Stunden niemand sonst dieser Gruppe beitritt, wird sie
<text name="active_title_label">
Mein aktiver Titel
</text>
- <combo_box name="active_title"
- tool_tip="Sets the title that appears in your avatar&apos;s name tag when this group is active." />
</panel>
<check_box label="Gruppenmitteilungen erhalten" name="receive_notices"
tool_tip="Festlegen, ob Sie von dieser Gruppe Mitteilungen erhalten können. Deaktivieren Sie diese Option, wenn Sie von der Gruppe Spam erhalten."
diff --git a/indra/newview/skins/default/xui/de/panel_group_land_money.xml b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
index cf11e3c532..77a98166a1 100644
--- a/indra/newview/skins/default/xui/de/panel_group_land_money.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_land_money.xml
@@ -1,11 +1,7 @@
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<panel label="Land und L$" name="land_money_tab">
<text name="help_text">
- Es werden Parzellen in Gruppenbesitz und
-Beitragsdetails angezeigt. Solange der Wert für &apos;Insgesamt
-verwendet Land&apos; unter oder gleich dem Wert für
-&apos;Gesamtbeitrag&apos; ist, wird eine Warnung angezeigt. Die Registerkarten &apos;Planung&apos;, &apos;Details&apos; und &apos;Verkäufe&apos;
-enthalten Informationen über die Gruppenfinanzen.
+ Es werden Parzellen in Gruppenbesitz und Beitragsdetails angezeigt. Solange der Wert für &apos;Insgesamt verwendetes Land&apos; unter oder gleich dem Wert für &apos;Gesamtbeitrag&apos; ist, wird eine Warnung angezeigt. Die Registerkarten &apos;Planung&apos;, &apos;Details&apos; und &apos;Verkäufe&apos; enthalten Informationen über die Gruppenfinanzen.
</text>
<button label="?" name="help_button" />
<text name="cant_view_group_land_text">
@@ -21,9 +17,9 @@ enthalten Informationen über die Gruppenfinanzen.
Land in Gruppenbesitz
</text>
<scroll_list name="group_parcel_list">
- <column label="Parcel Name" name="name" />
+ <column label="Parzellenname" name="name" />
<column label="Region" name="location" />
- <column label="Area" name="area" />
+ <column label="Gebiet" name="area" />
<column label="" name="hidden" />
</scroll_list>
<button label="Auf Karte" label_selected="Auf Karte" name="map_button" />
@@ -55,10 +51,11 @@ enthalten Informationen über die Gruppenfinanzen.
Ihr Landbeitrag kann nicht festgelegt werden.
</string>
<text name="your_contribution_max_value">
- Quadratmeter (max. [AMOUNT])
+ qm (max. [AMOUNT])
</text>
<text name="group_over_limit_text">
- Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit das verwendete Land gehalten werden kann.
+ Die Gruppenmitglieder müssen mehr Landnutzungsrechte spenden, damit
+das verwendete Land gehalten werden kann.
</text>
<text name="group_money_heading">
Gruppen-L$
diff --git a/indra/newview/skins/default/xui/de/panel_group_notices.xml b/indra/newview/skins/default/xui/de/panel_group_notices.xml
index 56a384b34c..53f581313a 100644
--- a/indra/newview/skins/default/xui/de/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_notices.xml
@@ -22,9 +22,9 @@ Eine Mitteilungsliste speichert maximal 200 Mitteilungen pro Gruppe täglich.
</text>
<scroll_list name="notice_list">
<column label="" name="icon" />
- <column label="Subject" name="subject" />
- <column label="From" name="from" />
- <column label="Date" name="date" />
+ <column label="Thema" name="subject" />
+ <column label="Von" name="from" />
+ <column label="Datum" name="date" />
</scroll_list>
<text name="notice_list_none_found">
Nicht gefunden.
diff --git a/indra/newview/skins/default/xui/de/panel_group_roles.xml b/indra/newview/skins/default/xui/de/panel_group_roles.xml
index 9a478f1b1c..204759f43d 100644
--- a/indra/newview/skins/default/xui/de/panel_group_roles.xml
+++ b/indra/newview/skins/default/xui/de/panel_group_roles.xml
@@ -46,13 +46,13 @@ Mitglieder diese Fähigkeit haben.
</text>
</panel>
<tab_container name="roles_tab_container">
- <panel label="Mitglieder" name="members_sub_tab" tool_tip="Members">
+ <panel label="Mitglieder" name="members_sub_tab" tool_tip="Mitglieder">
<button label="Suchen" name="search_button" />
<button label="Alle anzeigen" name="show_all_button" />
<name_list name="member_list">
- <column label="Member Name" name="name" />
- <column label="Donated Tier" name="donated" />
- <column label="Last Login" name="online" />
+ <column label="Mitgliedsname" name="name" />
+ <column name="donated" />
+ <column label="Letzte Anmeldung" name="online" />
</name_list>
<button label="Neue Person einladen..." name="member_invite" />
<button label="Aus Gruppe werfen" name="member_eject" />
@@ -66,9 +66,9 @@ um mehrere Mitglieder auszuwählen.
<button label="Suchen" name="search_button" />
<button label="Alle anzeigen" name="show_all_button" />
<scroll_list name="role_list">
- <column label="Role Name" name="name" />
- <column label="Title" name="title" />
- <column label="Members" name="members" />
+ <column name="name" />
+ <column label="Titel" name="title" />
+ <column label="Mitglieder" name="members" />
</scroll_list>
<button label="Neue Rolle erstellen..." name="role_create" />
<button label="Rolle löschen" name="role_delete" />
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index c644ece04b..56cc7560ed 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -435,9 +435,9 @@
</string>
<!-- Chat -->
<string name="whisper">
- Flüstert:
+ flüstert:
</string>
<string name="shout">
- Ruft:
+ ruft:
</string>
</strings>
diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml
index 4d22f393e5..b8e6c3e2d9 100644
--- a/indra/newview/skins/default/xui/ja/floater_tools.xml
+++ b/indra/newview/skins/default/xui/ja/floater_tools.xml
@@ -74,7 +74,7 @@
<check_box label="土地を選択" name="radio select land" />
<check_box label="土地をならす" name="radio flatten" />
<check_box label="土地を隆起させる" name="radio raise" />
- <check_box label="低地" name="radio lower" />
+ <check_box label="土地を低くする" name="radio lower" />
<check_box label="土地を滑らかにする" name="radio smooth" />
<check_box label="土地を荒らす" name="radio noise" />
<check_box label="土地を元に戻す" name="radio revert" />
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index 8339b10312..f982b844bf 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -435,9 +435,9 @@
</string>
<!-- Chat -->
<string name="whisper">
- ささやく:
+ のささやき:
</string>
<string name="shout">
- 叫ぶ:
+ の叫び:
</string>
</strings>
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index ef13f9151b..ca601dea54 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -166,10 +166,7 @@ class WindowsManifest(ViewerManifest):
# need to get the kdu dll from any of the build directories as well
try:
self.path(self.find_existing_file(
- # *FIX:Mani we need to add support for packaging specific targets.
- #'../llkdu/debug/llkdu.dll',
- '../llkdu/release/llkdu.dll',
- '../llkdu/relwithdebinfo/llkdu.dll',
+ '../llkdu/%s/llkdu.dll' % self.args['configuration'],
'../../libraries/i686-win32/lib/release/llkdu.dll'),
dst='llkdu.dll')
except:
@@ -190,8 +187,18 @@ class WindowsManifest(ViewerManifest):
self.end_prefix()
# Mozilla appears to force a dependency on these files so we need to ship it (CP)
- self.path("msvcr80.dll")
- self.path("msvcp80.dll")
+ # These need to be installed as a SxS assembly, currently a 'private' assembly.
+ # See http://msdn.microsoft.com/en-us/library/ms235291(VS.80).aspx
+ if self.prefix(src=self.args['configuration'], dst=""):
+ if self.args['configuration'] == 'Debug':
+ self.path("msvcr80d.dll")
+ self.path("msvcp80d.dll")
+ self.path("Microsoft.VC80.DebugCRT.manifest")
+ else:
+ self.path("msvcr80.dll")
+ self.path("msvcp80.dll")
+ self.path("Microsoft.VC80.CRT.manifest")
+ self.end_prefix()
# Mozilla runtime DLLs (CP)
if self.prefix(src="../../libraries/i686-win32/lib/release", dst=""):
@@ -220,6 +227,11 @@ class WindowsManifest(ViewerManifest):
self.path("res/*/*")
self.end_prefix()
+ # Mozilla hack to get it to accept newer versions of msvc*80.dll than are listed in manifest
+ # necessary as llmozlib2-vc80.lib refers to an old version of msvc*80.dll - can be removed when new version of llmozlib is built - Nyx
+ # The config file name needs to match the exe's name.
+ self.path("SecondLife.exe.config", dst=self.final_exe() + ".config")
+
# Vivox runtimes
if self.prefix(src="vivox-runtime/i686-win32", dst=""):
self.path("SLVoice.exe")