diff options
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'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 '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 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") |