diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 9a91f235f69a319f5c4a80dbba3aaf1d5d5b89c9..333860a31a9c65026536259293a13a9bab0c7743 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 3692fac2b30102b0dd1a01dfd30d90f43331e591..90e1003d70c6f4beefff29f3f2ddcc04cf044510 100755 --- a/indra/develop.py +++ b/indra/develop.py @@ -458,7 +458,7 @@ def __init__(self): 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 39e9a8b9524598f535e3dbb6d84a228ab9e6c2cb..7a6605d16a4e8b2ea535dad3d64c476ca6816191 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 f935432e57cc40ff6e2e278125aee4af62f53fdd..197f8d98cfbd123475e101c69ff6ea448173dfc1 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 af9908a5405a4b8c9779d0cf07d53832394dc5c1..4f41f67ce8e82ff4292bc14ab599f80447537090 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -245,9 +245,9 @@ class LLTextEditor : public LLUICtrl, LLEditMenuHandler, protected LLPreeditor 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 @@ class LLTextEditor : public LLUICtrl, LLEditMenuHandler, protected LLPreeditor 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 @@ class LLTextEditor : public LLUICtrl, LLEditMenuHandler, protected LLPreeditor }; 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 1592cc0a8b74bd3e2ea88ba5ff5b32f663a3ba64..88fda7a89c130903a5da816241650c91ce71a354 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 14fa73d3b14d5988c214e98302491ecedd0d8604..40be40d9f66f8acedcc3b1c48294a3bea8cfa8af 100644 --- a/indra/newview/lltextureview.cpp +++ b/indra/newview/lltextureview.cpp @@ -383,9 +383,9 @@ class LLGLTexMemBar : public LLView 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 ab06a0f4fbe981c3c9e5c591258aeea8d0b597b8..1fca77ec504201b0fc1d03445e893f623e6c83b9 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 d731d009b568b8a1170b4fc00f53cebb0ae0962c..c8c67240d8787c4738f7eec903201e5330ee971f 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 1477cdb694370a166dca31b070e41271902657fa..2b63a90a19108f338208ac5531fe6412ea05da58 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 9fb400dfd7e9deccd993beb3b5869c22a6b6356e..3f4a6237f12aa6f9b0aa2f426b7b21d0b0415837 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 f2de8103c357a4a5f6c62e531335c4e921496337..c7a366ae87b1d78604bcddd810068de1bf881ccb 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 03401cee9cfe15a4bf280a10c56151bbdf04ff72..a04851c42925481c25b737ae4a70198e2f7d2e7e 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 0a32de21923b1ff87640a669b98164c2f8755205..d232bfaf071794466aad7bc39d007935e4d3f944 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'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 cf11e3c5323700bcd1ce1e15fc3d3d9e422b77dd..77a98166a1273e8a5ca7b5c5bde1c8ce29134eb2 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 'Insgesamt -verwendet Land' unter oder gleich dem Wert für -'Gesamtbeitrag' ist, wird eine Warnung angezeigt. Die Registerkarten 'Planung', 'Details' und 'Verkäufe' -enthalten Informationen über die Gruppenfinanzen. + Es werden Parzellen in Gruppenbesitz und Beitragsdetails angezeigt. Solange der Wert für 'Insgesamt verwendetes Land' unter oder gleich dem Wert für 'Gesamtbeitrag' ist, wird eine Warnung angezeigt. Die Registerkarten 'Planung', 'Details' und 'Verkäufe' 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 56a384b34c53b371366102c7c8fccb72936564d2..53f581313ac8aa4a1d051eb45e0759153e8589c6 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 9a478f1b1c21fd379c766cd8196efcb5cdde0112..204759f43d4f2cac7060d20e48d32b4eae41d098 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 c644ece04bbf3890cca7aaa0ca88ee2d802fa3f5..56cc7560edf45ad15e9773aa4d362c9b55bd315a 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 4d22f393e5273ead46a8605c2df5a8a9ff521752..b8e6c3e2d9379901f880d49febd765e3945537f8 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 8339b103124e5f50ec1975461449e241c53df963..f982b844bfe855d353580abd7e1faf46ca3d3b84 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 ef13f9151b86951b6a88d97efccc10aa0c15127e..ca601dea543a0585a825d3994dcd7fbeb6bbaf6e 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -166,10 +166,7 @@ def construct(self): # 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 @@ def construct(self): 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 @@ def construct(self): 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")