diff options
75 files changed, 665 insertions, 618 deletions
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h index f1dda1b2e2..c2c45bec9a 100644 --- a/indra/llcommon/llsys.h +++ b/indra/llcommon/llsys.h @@ -122,6 +122,7 @@ public: U32 getPhysicalMemoryClamped() const; ///< Memory size in clamped bytes }; + LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLOSInfo& info); LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLCPUInfo& info); LL_COMMON_API std::ostream& operator<<(std::ostream& s, const LLMemoryInfo& info); diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 656f690db5..c3540a717c 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -121,6 +121,8 @@ void LLTexUnit::refreshState(void) // We set dirty to true so that the tex unit knows to ignore caching // and we reset the cached tex unit state + gGL.flush(); + glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); if (mCurrTexType != TT_NONE) { @@ -150,6 +152,7 @@ void LLTexUnit::activate(void) if ((S32)gGL.mCurrTextureUnitIndex != mIndex || gGL.mDirty) { + gGL.flush(); glActiveTextureARB(GL_TEXTURE0_ARB + mIndex); gGL.mCurrTextureUnitIndex = mIndex; } @@ -181,6 +184,7 @@ void LLTexUnit::disable(void) { activate(); unbind(mCurrTexType); + gGL.flush(); glDisable(sGLTextureType[mCurrTexType]); mCurrTexType = TT_NONE; } @@ -386,6 +390,8 @@ void LLTexUnit::setTextureAddressMode(eTextureAddressMode mode) { if (mIndex < 0 || mCurrTexture == 0) return; + gGL.flush(); + activate(); glTexParameteri (sGLTextureType[mCurrTexType], GL_TEXTURE_WRAP_S, sGLAddressMode[mode]); @@ -400,6 +406,8 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio { if (mIndex < 0 || mCurrTexture == 0) return; + gGL.flush(); + if (option == TFO_POINT) { glTexParameteri(sGLTextureType[mCurrTexType], GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -567,6 +575,7 @@ void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eT if (mCurrBlendType != TB_COMBINE || gGL.mDirty) { mCurrBlendType = TB_COMBINE; + gGL.flush(); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB); } @@ -577,6 +586,8 @@ void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eT return; } + gGL.flush(); + // Get the gl source enums according to the eTextureBlendSrc sources passed in GLint source1 = getTextureSource(src1); GLint source2 = getTextureSource(src2); @@ -709,6 +720,7 @@ void LLTexUnit::setColorScale(S32 scale) if (mCurrColorScale != scale || gGL.mDirty) { mCurrColorScale = scale; + gGL.flush(); glTexEnvi( GL_TEXTURE_ENV, GL_RGB_SCALE, scale ); } } @@ -718,6 +730,7 @@ void LLTexUnit::setAlphaScale(S32 scale) if (mCurrAlphaScale != scale || gGL.mDirty) { mCurrAlphaScale = scale; + gGL.flush(); glTexEnvi( GL_TEXTURE_ENV, GL_ALPHA_SCALE, scale ); } } @@ -853,7 +866,15 @@ void LLRender::scaleUI(F32 x, F32 y, F32 z) void LLRender::pushUIMatrix() { - mUIOffset.push_front(mUIOffset.front()); + if (mUIOffset.empty()) + { + mUIOffset.push_front(LLVector3(0,0,0)); + } + else + { + mUIOffset.push_front(mUIOffset.front()); + } + if (mUIScale.empty()) { mUIScale.push_front(LLVector3(1,1,1)); @@ -1105,6 +1126,33 @@ void LLRender::flush() sUICalls++; sUIVerts += mCount; } + + if (gDebugGL) + { + if (mMode == LLRender::QUADS) + { + if (mCount%4 != 0) + { + llerrs << "Incomplete quad rendered." << llendl; + } + } + + if (mMode == LLRender::TRIANGLES) + { + if (mCount%3 != 0) + { + llerrs << "Incomplete triangle rendered." << llendl; + } + } + + if (mMode == LLRender::LINES) + { + if (mCount%2 != 0) + { + llerrs << "Incomplete line rendered." << llendl; + } + } + } mBuffer->setBuffer(immediate_mask); mBuffer->drawArrays(mMode, 0, mCount); diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp index 1067c3f1d5..e12776f83a 100644 --- a/indra/llui/llaccordionctrltab.cpp +++ b/indra/llui/llaccordionctrltab.cpp @@ -826,9 +826,6 @@ void LLAccordionCtrlTab::draw() LLLocalClipRect clip(child_rect); drawChild(root_rect,mContainerPanel); } - - - gGL.getTexUnit(0)->disable(); } } diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 59b551a16d..6a1e3a9425 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -217,7 +217,7 @@ public: void setImageOverlay(const LLUUID& image_id, LLFontGL::HAlign alignment = LLFontGL::HCENTER, const LLColor4& color = LLColor4::white); LLPointer<LLUIImage> getImageOverlay() { return mImageOverlay; } LLFontGL::HAlign getImageOverlayHAlign() const { return mImageOverlayAlignment; } - + void autoResize(); // resize with label of current btn state void resize(LLUIString label); // resize with label input void setLabel( const LLStringExplicit& label); diff --git a/indra/llui/llcombobox.cpp b/indra/llui/llcombobox.cpp index c1d512e148..3a8efadaa4 100644 --- a/indra/llui/llcombobox.cpp +++ b/indra/llui/llcombobox.cpp @@ -706,14 +706,17 @@ void LLComboBox::onListMouseUp() void LLComboBox::onItemSelected(const LLSD& data) { - setValue(data); - - if (mAllowTextEntry && mLastSelectedIndex != -1) + mLastSelectedIndex = getCurrentIndex(); + if (mLastSelectedIndex != -1) { - gFocusMgr.setKeyboardFocus(mTextEntry); - mTextEntry->selectAll(); - } + setLabel(getSelectedItemLabel()); + if (mAllowTextEntry) + { + gFocusMgr.setKeyboardFocus(mTextEntry); + mTextEntry->selectAll(); + } + } // hiding the list reasserts the old value stored in the text editor/dropdown button hideList(); @@ -1080,24 +1083,6 @@ LLIconsComboBox::LLIconsComboBox(const LLIconsComboBox::Params& p) mLabelColumnIndex(p.label_column) {} -void LLIconsComboBox::setValue(const LLSD& value) -{ - BOOL found = mList->selectByValue(value); - if (found) - { - LLScrollListItem* item = mList->getFirstSelected(); - if (item) - { - setLabel(getSelectedItemLabel()); - } - mLastSelectedIndex = mList->getFirstSelectedIndex(); - } - else - { - mLastSelectedIndex = -1; - } -} - const std::string LLIconsComboBox::getSelectedItemLabel(S32 column) const { mButton->setImageOverlay(LLComboBox::getSelectedItemLabel(mIconColumnIndex), mButton->getImageOverlayHAlign()); diff --git a/indra/llui/llcombobox.h b/indra/llui/llcombobox.h index 965061ead2..f0bd432f3a 100644 --- a/indra/llui/llcombobox.h +++ b/indra/llui/llcombobox.h @@ -221,7 +221,6 @@ protected: LLPointer<LLUIImage> mArrowImage; LLUIString mLabel; BOOL mHasAutocompletedText; - S32 mLastSelectedIndex; private: BOOL mAllowTextEntry; @@ -232,6 +231,7 @@ private: commit_callback_t mTextEntryCallback; commit_callback_t mSelectionCallback; boost::signals2::connection mTopLostSignalConnection; + S32 mLastSelectedIndex; }; // A combo box with icons for the list of items. @@ -247,7 +247,6 @@ public: Params(); }; - /*virtual*/ void setValue(const LLSD& value); /*virtual*/ const std::string getSelectedItemLabel(S32 column = 0) const; private: diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 4cb336f7ea..ab14c08948 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -1354,7 +1354,6 @@ void LLFloater::bringToFront( S32 x, S32 y ) // virtual void LLFloater::setVisibleAndFrontmost(BOOL take_focus) { - LLUI::clearPopups(); setVisible(TRUE); setFrontmost(take_focus); } diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 0d56c5ed31..fb4a9d032d 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -3455,7 +3455,7 @@ LLView* const LLMenuHolderGL::getVisibleMenu() const for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { LLView* viewp = *child_it; - if (viewp->getVisible() && dynamic_cast<LLMenuBarGL*>(viewp) == NULL) + if (viewp->getVisible() && dynamic_cast<LLMenuGL*>(viewp) != NULL) { return viewp; } @@ -3478,8 +3478,7 @@ BOOL LLMenuHolderGL::hideMenus() for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { LLView* viewp = *child_it; - // clicks off of menu do not hide menu bar - if (dynamic_cast<LLMenuBarGL*>(viewp) == NULL && viewp->getVisible()) + if (dynamic_cast<LLMenuGL*>(viewp) != NULL && viewp->getVisible()) { viewp->setVisible(FALSE); } diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 18ec5b51dd..77caaaa425 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -630,9 +630,7 @@ void LLScrollListCtrl::calcColumnWidths() LLScrollListCell* cellp = (*iter)->getColumn(column->mIndex); if (!cellp) continue; - // get text value width only for text cells - column->mMaxContentWidth = cellp->isText() ? - llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth) : column->mMaxContentWidth; + column->mMaxContentWidth = llmax(LLFontGL::getFontSansSerifSmall()->getWidth(cellp->getValue().asString()) + mColumnPadding + COLUMN_TEXT_PADDING, column->mMaxContentWidth); } max_item_width += column->mMaxContentWidth; diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h index 714aca9337..785d0633dc 100644 --- a/indra/llui/llsearcheditor.h +++ b/indra/llui/llsearcheditor.h @@ -66,6 +66,8 @@ public: } }; + void setCommitOnFocusLost(BOOL b) { if (mSearchEditor) mSearchEditor->setCommitOnFocusLost(b); } + protected: LLSearchEditor(const Params&); friend class LLUICtrlFactory; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 851fb966ec..633135382e 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -246,7 +246,7 @@ LLTextBase::~LLTextBase() { // Menu, like any other LLUICtrl, is deleted by its parent - gMenuHolder - clearSegments(); + mSegments.clear(); } void LLTextBase::initFromParams(const LLTextBase::Params& p) diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 5121ef5351..b049895526 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -207,7 +207,7 @@ void gl_rect_2d(S32 left, S32 top, S32 right, S32 bottom, BOOL filled ) // Counterclockwise quad will face the viewer if( filled ) - { + { gGL.begin( LLRender::QUADS ); gGL.vertex2i(left, top); gGL.vertex2i(left, bottom); diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 57beb71a01..781c111474 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -1325,7 +1325,6 @@ void LLView::drawChildren() localRectToScreen(viewp->getRect(),&screenRect); if ( rootRect.overlaps(screenRect) && LLUI::sDirtyRect.overlaps(screenRect)) { - glMatrixMode(GL_MODELVIEW); LLUI::pushMatrix(); { LLUI::translate((F32)viewp->getRect().mLeft, (F32)viewp->getRect().mBottom, 0.f); @@ -1349,8 +1348,6 @@ void LLView::drawChildren() } --sDepth; } - - gGL.getTexUnit(0)->disable(); } void LLView::dirtyRect() diff --git a/indra/llwindow/llwindow.cpp b/indra/llwindow/llwindow.cpp index b77deb003f..1c6c9e6e9d 100644 --- a/indra/llwindow/llwindow.cpp +++ b/indra/llwindow/llwindow.cpp @@ -407,30 +407,3 @@ BOOL LLWindowManager::isWindowValid(LLWindow *window) { return sWindowList.find(window) != sWindowList.end(); } - -S32 LLDisplayInfo::getDisplayWidth() const -{ -#if LL_WINDOWS - return LLWindowWin32::getDisplayWidth(); -#elif LL_DARWIN - return LLWindowMacOSX::getDisplayWidth(); -#elif LL_SDL - return LLWindowSDL::getDisplayWidth(); -#else - return 1024; //*FIXME -#endif -} - -S32 LLDisplayInfo::getDisplayHeight() const -{ -#if LL_WINDOWS - return LLWindowWin32::getDisplayHeight(); -#elif LL_DARWIN - return LLWindowMacOSX::getDisplayHeight(); -#elif LL_SDL - return LLWindowSDL::getDisplayHeight(); -#else - return 768; //*FIXME -#endif -} - diff --git a/indra/llwindow/llwindow.h b/indra/llwindow/llwindow.h index b769f5071b..55b221e716 100644 --- a/indra/llwindow/llwindow.h +++ b/indra/llwindow/llwindow.h @@ -281,19 +281,4 @@ extern const std::string gURLProtocolWhitelistHandler[]; void simpleEscapeString ( std::string& stringIn ); -//============================================================================= -// -// CLASS LLDisplayInfo -class LLDisplayInfo - -/*! @brief Class to query the information about some display settings -*/ -{ -public: - LLDisplayInfo(){}; ///< Default constructor - - S32 getDisplayWidth() const; ///< display width - S32 getDisplayHeight() const; ///< display height -}; - #endif // _LL_window_h_ diff --git a/indra/llwindow/llwindowmacosx-objc.h b/indra/llwindow/llwindowmacosx-objc.h index ed8c874dcb..ed5d7b1e74 100644 --- a/indra/llwindow/llwindowmacosx-objc.h +++ b/indra/llwindow/llwindowmacosx-objc.h @@ -40,5 +40,4 @@ void setupCocoa(); CursorRef createImageCursor(const char *fullpath, int hotspotX, int hotspotY); OSErr releaseImageCursor(CursorRef ref); OSErr setImageCursor(CursorRef ref); -void getScreenSize(int* width, int* height); -void getVisibleScreen(int *x, int *y, int* width, int* height); + diff --git a/indra/llwindow/llwindowmacosx-objc.mm b/indra/llwindow/llwindowmacosx-objc.mm index 5cab2619fd..59b25e1726 100644 --- a/indra/llwindow/llwindowmacosx-objc.mm +++ b/indra/llwindow/llwindowmacosx-objc.mm @@ -116,22 +116,3 @@ OSErr setImageCursor(CursorRef ref) return noErr; } -void getScreenSize(int* width, int* height) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSRect screen_rect = [[NSScreen mainScreen] frame]; - if (width) *width = (int)(screen_rect.size.width); - if (height) *height = (int)(screen_rect.size.height); - [pool release]; -} - -void getVisibleScreen(int *x, int *y, int* width, int* height) -{ - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - NSRect visible_rect = [[NSScreen mainScreen] visibleFrame]; - if (width) *width = (int)(visible_rect.size.width); - if (height) *height = (int)(visible_rect.size.height); - if (x) *x = (int)(visible_rect.origin.x); - if (y) *y = (int)(visible_rect.origin.y); - [pool release]; -} diff --git a/indra/llwindow/llwindowmacosx.cpp b/indra/llwindow/llwindowmacosx.cpp index 224314a490..022b97f481 100644 --- a/indra/llwindow/llwindowmacosx.cpp +++ b/indra/llwindow/llwindowmacosx.cpp @@ -1122,33 +1122,7 @@ BOOL LLWindowMacOSX::getMaximized() BOOL LLWindowMacOSX::maximize() { - if (mWindow) - { - // *HACK: Because Mac OSX doesn't have a concept of a "maximized" window, we just - // stretch it out to the visible screen size. - Rect win_rect; - - int visible_x; - int visible_y; - int visible_width; - int visible_height; - int screen_width; - int screen_height; - - getScreenSize(&screen_width, &screen_height); - getVisibleScreen(&visible_x, &visible_y, &visible_width, &visible_height); - - int mac_os_menu_bar_height = screen_height - (visible_height + visible_y); - ::SetRect(&win_rect, - visible_x, - mac_os_menu_bar_height, - visible_width + visible_x, - visible_height + mac_os_menu_bar_height); - - ::SetWindowBounds(mWindow, kWindowStructureRgn, &win_rect); - - return TRUE; - } + // TODO return FALSE; } @@ -3499,26 +3473,6 @@ MASK LLWindowMacOSX::modifiersToMask(SInt16 modifiers) return mask; } -// static -S32 LLWindowMacOSX::getDisplayWidth() -{ - S32 width = 1024; - // Need to invoke cocoa before use getScreenSize() - setupCocoa(); - getScreenSize(&width, NULL); - return width; -} - -// static -S32 LLWindowMacOSX::getDisplayHeight() -{ - S32 height = 768; - // Need to invoke cocoa before use getScreenSize() - setupCocoa(); - getScreenSize(NULL, &height); - return height; -} - #if LL_OS_DRAGDROP_ENABLED OSErr LLWindowMacOSX::dragTrackingHandler(DragTrackingMessage message, WindowRef theWindow, diff --git a/indra/llwindow/llwindowmacosx.h b/indra/llwindow/llwindowmacosx.h index 86036a261c..7c6b324029 100644 --- a/indra/llwindow/llwindowmacosx.h +++ b/indra/llwindow/llwindowmacosx.h @@ -123,8 +123,6 @@ public: // Provide native key event data /*virtual*/ LLSD getNativeKeyData(); - static S32 getDisplayWidth(); - static S32 getDisplayHeight(); protected: LLWindowMacOSX(LLWindowCallbacks* callbacks, diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index cb4e04511c..1f705f9e60 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -187,47 +187,6 @@ Display* LLWindowSDL::get_SDL_Display(void) } #endif // LL_X11 -// static -S32 LLWindowSDL::getDisplayWidth() -{ -#if LL_GTK - if (LLWindowSDL::ll_try_gtk_init()) - { - return gdk_screen_width(); - } -#endif // LL_GTK - -#if LL_X11 - Display *display = XOpenDisplay(NULL); - int screen_num = DefaultScreen(display); - S32 width = DisplayWidth(display, screen_num); - XCloseDisplay(display); - return width; -#endif //LL_X11 - - return 1024; -} - -// static -S32 LLWindowSDL::getDisplayHeight() -{ -#if LL_GTK - if (LLWindowSDL::ll_try_gtk_init()) - { - return gdk_screen_height(); - } -#endif // LL_GTK - -#if LL_X11 - Display *display = XOpenDisplay(NULL); - int screen_num = DefaultScreen(display); - S32 height = DisplayHeight(display, screen_num); - XCloseDisplay(display); - return height; -#endif //LL_X11 - - return 768; -} LLWindowSDL::LLWindowSDL(LLWindowCallbacks* callbacks, const std::string& title, S32 x, S32 y, S32 width, @@ -950,68 +909,7 @@ BOOL LLWindowSDL::getMaximized() if (mWindow) { -#if LL_X11 - if (mSDL_Display) - { - maybe_lock_display(); - - // Return data in the specified format, XA_ATOM. - U8* prop; - // Actual format of the property. - int format; - // Actual number of items stored in the prop return data. - unsigned long nitems; - // Number of bytes remaining to be read in the property if a partial read was performed. - unsigned long bytes_after; - // Atom identifier that defines the actual type of the property. - Atom type; - - // Atom used to obtain list of hints describing the window state. - Atom wm_state = XInternAtom(mSDL_Display, "_NET_WM_STATE", False); - - // Atoms indicates that the window is vertically/horizontally maximized. - Atom max_vert = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_VERT", False); - Atom max_horz = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_HORZ", False); - - // How many atoms in which we interested are present in list of hints. - U32 pass = 0; - - do - { - nitems = 0; - bytes_after = 0; - type = None; - if ( (XGetWindowProperty (mSDL_Display, - mSDL_XWindowID, - wm_state, - 0, UINT_MAX, - False, XA_ATOM, - &type, &format, - &nitems, &bytes_after, - &prop) == Success) - && type != None ) - { - Atom *atoms = (Atom *)prop; - for (unsigned long i=0; i<nitems; ++i) - { - if (atoms[i] == max_horz) - ++pass; - else if (atoms[i] == max_vert) - ++pass; - } - XFree (atoms); - } - else - { - break; - } - } while (bytes_after > 0); - - result = (pass == 2); - - maybe_unlock_display(); - } -#endif // LL_X11 + // TODO } return(result); @@ -1019,103 +917,7 @@ BOOL LLWindowSDL::getMaximized() BOOL LLWindowSDL::maximize() { -#if LL_X11 - if (mSDL_Display && !mFullscreen) - { - maybe_lock_display(); - - BOOL is_maximize_allowed = FALSE; - - // Check if maximize is allowed - { - // Return data in the specified format, XA_ATOM. - U8* prop; - // Actual format of the property. - int format; - // Actual number of items stored in the prop return data. - unsigned long nitems; - // Number of bytes remaining to be read in the property if a partial read was performed. - unsigned long bytes_after; - // Atom identifier that defines the actual type of the property. - Atom type; - - // Atom used to obtain a list of atoms indicating user operations that the Window Manager supports for this window. - Atom allowed_act = XInternAtom(mSDL_Display, "_NET_WM_ALLOWED_ACTIONS", False); - - // Atoms that indicates that the window may be vertically/horizontally maximized. - Atom max_vert_act = XInternAtom(mSDL_Display, "_NET_WM_ACTION_MAXIMIZE_HORZ", False); - Atom max_horz_act = XInternAtom(mSDL_Display, "_NET_WM_ACTION_MAXIMIZE_VERT", False); - - // How many atoms in which we interested are present in list of hints. - U32 pass = 0; - - do - { - nitems = 0; - bytes_after = 0; - type = None; - if ( (XGetWindowProperty (mSDL_Display, - mSDL_XWindowID, - allowed_act, - 0, UINT_MAX, - False, XA_ATOM, - &type, &format, - &nitems, &bytes_after, - &prop) == Success) - && type != None ) - { - Atom *atoms = (Atom *)prop; - for (unsigned long i=0; i<nitems; ++i) - { - if (atoms[i] == max_vert_act) - ++pass; - else if (atoms[i] == max_horz_act) - ++pass; - } - XFree (atoms); - } - else - { - break; - } - } while (bytes_after > 0); - - is_maximize_allowed = (pass == 2); - } - - // Send maximize event to X11 system - if (is_maximize_allowed) - { - XEvent xev; - - // Atom describing the window state. - Atom wm_state = XInternAtom(mSDL_Display, "_NET_WM_STATE", False); - - // Atoms indicates that the window is vertically/horizontally maximized. - Atom max_vert = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_VERT", False); - Atom max_horz = XInternAtom(mSDL_Display, "_NET_WM_STATE_MAXIMIZED_HORZ", False); - - memset(&xev, 0, sizeof(xev)); - xev.type = ClientMessage; - xev.xclient.window = mSDL_XWindowID; - xev.xclient.message_type = wm_state; - xev.xclient.format = 32; - xev.xclient.data.l[0] = 1; // add/set property - xev.xclient.data.l[1] = max_vert; - xev.xclient.data.l[2] = max_horz; - xev.xclient.data.l[3] = 0; - xev.xclient.data.l[4] = 0; - - XSendEvent(mSDL_Display, - DefaultRootWindow(mSDL_Display), - False, - SubstructureNotifyMask, &xev); - } - - maybe_unlock_display(); - return is_maximize_allowed; - } -#endif // LL_X11 + // TODO return FALSE; } diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h index 2311a361fa..e6bdd46a77 100644 --- a/indra/llwindow/llwindowsdl.h +++ b/indra/llwindow/llwindowsdl.h @@ -148,9 +148,6 @@ public: static Display* get_SDL_Display(void); #endif // LL_X11 - static S32 getDisplayWidth(); - static S32 getDisplayHeight(); - protected: LLWindowSDL(LLWindowCallbacks* callbacks, const std::string& title, int x, int y, int width, int height, U32 flags, diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp index 5f778d6208..8df9dad581 100644 --- a/indra/llwindow/llwindowwin32.cpp +++ b/indra/llwindow/llwindowwin32.cpp @@ -3720,16 +3720,5 @@ std::vector<std::string> LLWindowWin32::getDynamicFallbackFontList() return std::vector<std::string>(); } -// static -S32 LLWindowWin32::getDisplayWidth() -{ - return ::GetSystemMetrics(SM_CXVIRTUALSCREEN); -} - -// static -S32 LLWindowWin32::getDisplayHeight() -{ - return ::GetSystemMetrics(SM_CYVIRTUALSCREEN); -} #endif // LL_WINDOWS diff --git a/indra/llwindow/llwindowwin32.h b/indra/llwindow/llwindowwin32.h index c221ec0192..9d57735772 100644 --- a/indra/llwindow/llwindowwin32.h +++ b/indra/llwindow/llwindowwin32.h @@ -120,9 +120,6 @@ public: static std::vector<std::string> getDynamicFallbackFontList(); - static S32 getDisplayWidth(); - static S32 getDisplayHeight(); - protected: LLWindowWin32(LLWindowCallbacks* callbacks, const std::string& title, const std::string& name, int x, int y, int width, int height, U32 flags, diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 8edf766132..97c8cbfa7b 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -10347,7 +10347,7 @@ <key>Type</key> <string>Boolean</string> <key>Value</key> - <integer>0</integer> + <integer>1</integer> </map> <key>VivoxDebugLevel</key> <map> @@ -10655,7 +10655,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>700</integer> + <integer>738</integer> </map> <key>WindowMaximized</key> <map> @@ -10677,7 +10677,7 @@ <key>Type</key> <string>S32</string> <key>Value</key> - <integer>1000</integer> + <integer>1024</integer> </map> <key>WindowX</key> <map> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 2384e6c5ba..11c252406a 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -304,10 +304,7 @@ static std::string gLaunchFileOnQuit; // Used on Win32 for other apps to identify our window (eg, win_setup) const char* const VIEWER_WINDOW_CLASSNAME = "Second Life"; -static const S32 FIRST_RUN_WINDOW_WIDTH = 1024; -//should account for Windows task bar -static const S32 FIRST_RUN_WINDOW_HIGHT = 738; //---------------------------------------------------------------------------- // List of entries from strings.xml to always replace @@ -2374,35 +2371,12 @@ bool LLAppViewer::initWindow() // store setting in a global for easy access and modification gNoRender = gSavedSettings.getBOOL("DisableRendering"); - S32 window_x = gSavedSettings.getS32("WindowX"); - S32 window_y = gSavedSettings.getS32("WindowY"); - S32 window_width = gSavedSettings.getS32("WindowWidth"); - S32 window_height = gSavedSettings.getS32("WindowHeight"); - - bool show_maximized = gSavedSettings.getBOOL("WindowMaximized"); - - bool first_run = gSavedSettings.getBOOL("FirstLoginThisInstall"); - - if (first_run)//for first login - { - window_width = FIRST_RUN_WINDOW_WIDTH;//yep hardcoded - window_height = FIRST_RUN_WINDOW_HIGHT; - - //if screen resolution is lower then first run width/height then show maximized - LLDisplayInfo display_info; - if(display_info.getDisplayWidth() <= FIRST_RUN_WINDOW_WIDTH - || display_info.getDisplayHeight()<=FIRST_RUN_WINDOW_HIGHT) - { - show_maximized = true; - } - } - // always start windowed BOOL ignorePixelDepth = gSavedSettings.getBOOL("IgnorePixelDepth"); gViewerWindow = new LLViewerWindow(gWindowTitle, VIEWER_WINDOW_CLASSNAME, - window_x, window_y, - window_width, window_height, + gSavedSettings.getS32("WindowX"), gSavedSettings.getS32("WindowY"), + gSavedSettings.getS32("WindowWidth"), gSavedSettings.getS32("WindowHeight"), FALSE, ignorePixelDepth); LLNotificationsUI::LLNotificationManager::getInstance(); @@ -2413,7 +2387,7 @@ bool LLAppViewer::initWindow() gViewerWindow->toggleFullscreen(FALSE); } - if (show_maximized) + if (gSavedSettings.getBOOL("WindowMaximized")) { gViewerWindow->mWindow->maximize(); gViewerWindow->getWindow()->setNativeAspectRatio(gSavedSettings.getF32("FullScreenAspectRatio")); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index 80cf8f1d61..8441796219 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -182,7 +182,10 @@ void LLAssetUploadResponder::uploadFailure(const LLSD& content) // deal with L$ errors if (reason == "insufficient funds") { - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("uploading_costs"), LLGlobalEconomy::Singleton::getInstance()->getPriceUpload()); + S32 price = LLGlobalEconomy::Singleton::getInstance()->getPriceUpload(); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", price); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("uploading_costs", args), price); } else { diff --git a/indra/newview/llfloaterbuy.cpp b/indra/newview/llfloaterbuy.cpp index fba557c656..589f570d96 100644 --- a/indra/newview/llfloaterbuy.cpp +++ b/indra/newview/llfloaterbuy.cpp @@ -246,7 +246,8 @@ void LLFloaterBuy::inventoryChanged(LLViewerObject* obj, // Compute icon for this item BOOL item_is_multi = FALSE; - if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED ) + if ( inv_item->getFlags() & LLInventoryItem::II_FLAGS_LANDMARK_VISITED + || inv_item->getFlags() & LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS) { item_is_multi = TRUE; } diff --git a/indra/newview/llfloaterbuycurrency.cpp b/indra/newview/llfloaterbuycurrency.cpp index 1642e6725e..7fddd1fc5f 100644 --- a/indra/newview/llfloaterbuycurrency.cpp +++ b/indra/newview/llfloaterbuycurrency.cpp @@ -234,8 +234,7 @@ void LLFloaterBuyCurrencyUI::updateUI() if (mHasTarget) { childSetVisible("buy_action", true); - childSetTextArg("buy_action", "[NAME]", mTargetName); - childSetTextArg("buy_action", "[PRICE]", llformat("%d",mTargetPrice)); + childSetTextArg("buy_action", "[ACTION]", mTargetName); } } diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp index e998d10fcc..3487f52f35 100644 --- a/indra/newview/llfloaterpreference.cpp +++ b/indra/newview/llfloaterpreference.cpp @@ -183,7 +183,6 @@ void LLVoiceSetKeyDialog::onCancel(void* user_data) // a static member and update all our static callbacks void handleNameTagOptionChanged(const LLSD& newvalue); -viewer_media_t get_web_media(); bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response); //bool callback_skip_dialogs(const LLSD& notification, const LLSD& response, LLFloaterPreference* floater); @@ -191,23 +190,14 @@ bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response void fractionFromDecimal(F32 decimal_val, S32& numerator, S32& denominator); -viewer_media_t get_web_media() -{ - viewer_media_t media_source = LLViewerMedia::newMediaImpl(LLUUID::null); - media_source->initializeMedia("text/html"); - return media_source; -} - - bool callback_clear_browser_cache(const LLSD& notification, const LLSD& response) { S32 option = LLNotificationsUtil::getSelectedOption(notification, response); if ( option == 0 ) // YES { // clean web - viewer_media_t media_source = get_web_media(); - if (media_source && media_source->hasMedia()) - media_source->getMediaPlugin()->clear_cache(); + LLViewerMedia::clearAllCaches(); + LLViewerMedia::clearAllCookies(); // clean nav bar history LLNavigationBar::getInstance()->clearHistoryCache(); @@ -429,17 +419,14 @@ void LLFloaterPreference::apply() std::string cache_location = gDirUtilp->getExpandedFilename(LL_PATH_CACHE, ""); childSetText("cache_location", cache_location); - viewer_media_t media_source = get_web_media(); - if (media_source && media_source->hasMedia()) + LLViewerMedia::setCookiesEnabled(childGetValue("cookies_enabled")); + + if(hasChild("web_proxy_enabled") &&hasChild("web_proxy_editor") && hasChild("web_proxy_port")) { - media_source->getMediaPlugin()->enable_cookies(childGetValue("cookies_enabled")); - if(hasChild("web_proxy_enabled") &&hasChild("web_proxy_editor") && hasChild("web_proxy_port")) - { - bool proxy_enable = childGetValue("web_proxy_enabled"); - std::string proxy_address = childGetValue("web_proxy_editor"); - int proxy_port = childGetValue("web_proxy_port"); - media_source->getMediaPlugin()->proxy_setup(proxy_enable, proxy_address, proxy_port); - } + bool proxy_enable = childGetValue("web_proxy_enabled"); + std::string proxy_address = childGetValue("web_proxy_editor"); + int proxy_port = childGetValue("web_proxy_port"); + LLViewerMedia::setProxyConfig(proxy_enable, proxy_address, proxy_port); } // LLWString busy_response = utf8str_to_wstring(getChild<LLUICtrl>("busy_response")->getValue().asString()); diff --git a/indra/newview/llfloaterreporter.cpp b/indra/newview/llfloaterreporter.cpp index 0f3c176cea..42a7eeff26 100644 --- a/indra/newview/llfloaterreporter.cpp +++ b/indra/newview/llfloaterreporter.cpp @@ -84,6 +84,8 @@ #include "llassetuploadresponders.h" #include "llagentui.h" +#include "lltrans.h" + const U32 INCLUDE_SCREENSHOT = 0x01 << 0; //----------------------------------------------------------------------------- @@ -372,8 +374,7 @@ void LLFloaterReporter::onClickSend(void *userdata) return; } - - LLUploadDialog::modalUploadDialog("Uploading...\n\nReport"); + LLUploadDialog::modalUploadDialog(LLTrans::getString("uploading_abuse_report")); // *TODO don't upload image if checkbox isn't checked std::string url = gAgent.getRegion()->getCapability("SendUserReport"); std::string sshot_url = gAgent.getRegion()->getCapability("SendUserReportWithScreenshot"); diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 1f918c72ea..6fedd9ac4d 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -103,7 +103,7 @@ std::string ICON_NAME[ICON_NAME_COUNT] = "Inv_Script", "Inv_Clothing", "Inv_Object", - "Inv_Object", + "Inv_Object_Multi", "Inv_Notecard", "Inv_Skin", "Inv_Snapshot", @@ -5358,7 +5358,10 @@ LLUIImagePtr LLLinkItemBridge::getIcon() const { if (LLViewerInventoryItem *item = getItem()) { - return get_item_icon(item->getActualType(), item->getInventoryType(), 0, FALSE); + U32 attachment_point = (item->getFlags() & 0xff); // low byte of inventory flags + bool is_multi = LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags(); + + return get_item_icon(item->getActualType(), item->getInventoryType(), attachment_point, is_multi); } return get_item_icon(LLAssetType::AT_LINK, LLInventoryType::IT_NONE, 0, FALSE); } diff --git a/indra/newview/llinventoryobserver.cpp b/indra/newview/llinventoryobserver.cpp index 2fb8aea4e9..62c2d80609 100644 --- a/indra/newview/llinventoryobserver.cpp +++ b/indra/newview/llinventoryobserver.cpp @@ -54,7 +54,6 @@ #include "llappviewer.h" #include "lldbstrings.h" #include "llviewerstats.h" -#include "llmutelist.h" #include "llnotificationsutil.h" #include "llcallbacklist.h" #include "llpreview.h" diff --git a/indra/newview/llmutelist.cpp b/indra/newview/llmutelist.cpp index 2d3c4b187e..95094f6b52 100644 --- a/indra/newview/llmutelist.cpp +++ b/indra/newview/llmutelist.cpp @@ -128,68 +128,26 @@ LLMute::LLMute(const LLUUID& id, const std::string& name, EType type, U32 flags) } -std::string LLMute::getDisplayName() const +std::string LLMute::getDisplayType() const { - std::string name_with_suffix = mName; switch (mType) { case BY_NAME: default: - name_with_suffix += " " + LLTrans::getString("MuteByName"); + return LLTrans::getString("MuteByName"); break; case AGENT: - name_with_suffix += " " + LLTrans::getString("MuteAgent"); + return LLTrans::getString("MuteAgent"); break; case OBJECT: - name_with_suffix += " " + LLTrans::getString("MuteObject"); + return LLTrans::getString("MuteObject"); break; case GROUP: - name_with_suffix += " " + LLTrans::getString("MuteGroup"); + return LLTrans::getString("MuteGroup"); break; } - return name_with_suffix; } -void LLMute::setFromDisplayName(const std::string& display_name) -{ - size_t pos = 0; - mName = display_name; - - pos = mName.rfind(" " + LLTrans::getString("MuteGroup")); - if (pos != std::string::npos) - { - mName.erase(pos); - mType = GROUP; - return; - } - - pos = mName.rfind(" " + LLTrans::getString("MuteObject")); - if (pos != std::string::npos) - { - mName.erase(pos); - mType = OBJECT; - return; - } - - pos = mName.rfind(" " + LLTrans::getString("MuteAgent")); - if (pos != std::string::npos) - { - mName.erase(pos); - mType = AGENT; - return; - } - - pos = mName.rfind(" " + LLTrans::getString("MuteByName")); - if (pos != std::string::npos) - { - mName.erase(pos); - mType = BY_NAME; - return; - } - - llwarns << "Unable to set mute from display name " << display_name << llendl; - return; -} /* static */ LLMuteList* LLMuteList::getInstance() diff --git a/indra/newview/llmutelist.h b/indra/newview/llmutelist.h index e1e81a24b4..7cb11e6031 100644 --- a/indra/newview/llmutelist.h +++ b/indra/newview/llmutelist.h @@ -63,14 +63,8 @@ public: LLMute(const LLUUID& id, const std::string& name = std::string(), EType type = BY_NAME, U32 flags = 0); - // Returns name + suffix based on type - // For example: "James Tester (resident)" - std::string getDisplayName() const; - - // Converts a UI name into just the agent or object name - // For example: "James Tester (resident)" sets the name to "James Tester" - // and the type to AGENT. - void setFromDisplayName(const std::string& display_name); + // Returns localized type name of muted item + std::string getDisplayType() const; public: LLUUID mID; // agent or object id diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 483756b16e..af711b6943 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -96,11 +96,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) params.commit_on_keyboard_movement(false); mList = LLUICtrlFactory::create<LLScrollListCtrl>(params); - - // *HACK: adding list as a child to FloaterViewHolder to make it fully visible without - // making it top control (because it would cause problems). - gViewerWindow->getFloaterViewHolder()->addChild(mList); - mList->setVisible(FALSE); + addChild(mList); //****************************Gesture Part********************************/ @@ -115,7 +111,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p) setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this)); } -BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent) +BOOL LLGestureComboList::handleKeyHere(KEY key, MASK mask) { BOOL handled = FALSE; @@ -126,7 +122,7 @@ BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent) } else { - handled = mList->handleKey(key, mask, called_from_parent); + handled = mList->handleKeyHere(key, mask); } return handled; @@ -135,18 +131,17 @@ BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent) void LLGestureComboList::showList() { LLRect rect = mList->getRect(); - LLRect screen; - mButton->localRectToScreen(getRect(), &screen); + LLRect button_rect = mButton->getRect(); // Calculating amount of space between the navigation bar and gestures combo LLNavigationBar* nb = LLNavigationBar::getInstance(); S32 x, nb_bottom; - nb->localPointToScreen(0, 0, &x, &nb_bottom); + nb->localPointToOtherView(0, 0, &x, &nb_bottom, this); - S32 max_height = nb_bottom - screen.mTop; + S32 max_height = nb_bottom - button_rect.mTop; mList->calcColumnWidths(); - rect.setOriginAndSize(screen.mLeft, screen.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height); + rect.setOriginAndSize(button_rect.mLeft, button_rect.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height); mList->setRect(rect); mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height); @@ -156,6 +151,7 @@ void LLGestureComboList::showList() // Show the list and push the button down mButton->setToggleState(TRUE); mList->setVisible(TRUE); + LLUI::addPopup(mList); } void LLGestureComboList::onButtonCommit() @@ -188,6 +184,7 @@ void LLGestureComboList::hideList() mButton->setToggleState(FALSE); mList->setVisible(FALSE); mList->mouseOverHighlightNthItem(-1); + LLUI::removePopup(mList); gFocusMgr.setKeyboardFocus(NULL); } } diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h index 559c1ee091..dd467d7978 100644 --- a/indra/newview/llnearbychatbar.h +++ b/indra/newview/llnearbychatbar.h @@ -70,7 +70,7 @@ public: LLCtrlListInterface* getListInterface() { return (LLCtrlListInterface*)mList; }; virtual void showList(); virtual void hideList(); - virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent); + virtual BOOL handleKeyHere(KEY key, MASK mask); S32 getCurrentIndex() const; void onItemSelected(const LLSD& data); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 08ae93c3a6..e199f9f180 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -268,24 +268,23 @@ void LLNearbyChatScreenChannel::showToastsBottom() } break; } - else - { - toast_rect = toast->getRect(); - toast_rect.setLeftTopAndSize(getRect().mLeft , toast_top, toast_rect.getWidth() ,toast_rect.getHeight()); - - toast->setRect(toast_rect); - toast->setIsHidden(false); - toast->setVisible(TRUE); + bottom = toast_top - toast->getTopPad(); + } - if(!toast->hasFocus()) - { - // Fixing Z-order of toasts (EXT-4862) - // Next toast will be positioned under this one. - gFloaterView->sendChildToBack(toast); - } - - bottom = toast->getRect().mTop - toast->getTopPad(); - } + // use reverse order to provide correct z-order and avoid toast blinking + for(std::vector<LLToast*>::reverse_iterator it = m_active_toasts.rbegin(); it != m_active_toasts.rend(); ++it) + { + LLToast* toast = (*it); + S32 toast_top = bottom + toast->getTopPad(); + + toast_rect = toast->getRect(); + toast_rect.setLeftTopAndSize(getRect().mLeft , toast_top, toast_rect.getWidth() ,toast_rect.getHeight()); + + toast->setRect(toast_rect); + toast->setIsHidden(false); + toast->setVisible(TRUE); + + bottom = toast->getRect().mBottom - margin; } } diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp index 362657a458..a186bc926c 100644 --- a/indra/newview/llpanelblockedlist.cpp +++ b/indra/newview/llpanelblockedlist.cpp @@ -119,8 +119,13 @@ void LLPanelBlockedList::refreshBlockedList() std::vector<LLMute>::iterator it; for (it = mutes.begin(); it != mutes.end(); ++it) { - std::string display_name = it->getDisplayName(); - mBlockedList->addStringUUIDItem(display_name, it->mID, ADD_BOTTOM, TRUE); + LLScrollListItem::Params item_p; + item_p.enabled(TRUE); + item_p.value(it->mID); // link UUID of blocked item with ScrollListItem + item_p.columns.add().column("item_name").value(it->mName);//.type("text"); + item_p.columns.add().column("item_type").value(it->getDisplayType());//.type("text").width(111); + + mBlockedList->addRow(item_p, ADD_BOTTOM); } } @@ -145,9 +150,7 @@ void LLPanelBlockedList::onRemoveBtnClick() { std::string name = mBlockedList->getSelectedItemLabel(); LLUUID id = mBlockedList->getStringUUIDSelectedItem(); - LLMute mute(id); - mute.setFromDisplayName(name); - // now mute.mName has the suffix trimmed off + LLMute mute(id, name); S32 last_selected = mBlockedList->getFirstSelectedIndex(); if (LLMuteList::getInstance()->remove(mute)) diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp index 021e1f5159..70a7bf644b 100644 --- a/indra/newview/llpanelclassified.cpp +++ b/indra/newview/llpanelclassified.cpp @@ -1893,7 +1893,7 @@ void LLPanelClassifiedEdit::resetControls() LLPanelClassifiedInfo::resetControls(); getChild<LLComboBox>("category")->setCurrentByIndex(0); - getChild<LLIconsComboBox>("content_type")->setCurrentByIndex(0); + getChild<LLComboBox>("content_type")->setCurrentByIndex(0); childSetValue("auto_renew", false); childSetValue("price_for_listing", MINIMUM_PRICE_FOR_LISTING); childSetEnabled("price_for_listing", TRUE); @@ -1928,7 +1928,7 @@ U32 LLPanelClassifiedEdit::getContentType() void LLPanelClassifiedEdit::setContentType(U32 content_type) { - LLIconsComboBox* ct_cb = getChild<LLIconsComboBox>("content_type"); + LLComboBox* ct_cb = getChild<LLComboBox>("content_type"); ct_cb->setCurrentByIndex(content_type); ct_cb->resetDirty(); } @@ -1988,7 +1988,7 @@ U8 LLPanelClassifiedEdit::getFlags() { bool auto_renew = childGetValue("auto_renew").asBoolean(); - LLComboBox* content_cb = getChild<LLIconsComboBox>("content_type"); + LLComboBox* content_cb = getChild<LLComboBox>("content_type"); bool mature = content_cb->getCurrentIndex() == CB_ITEM_MATURE; return pack_classified_flags_request(auto_renew, false, mature, false); diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp index 7505581904..c43cbf5819 100644 --- a/indra/newview/llpanelobjectinventory.cpp +++ b/indra/newview/llpanelobjectinventory.cpp @@ -609,7 +609,9 @@ void LLTaskInvFVBridge::performAction(LLFolderView* folder, LLInventoryModel* mo { if (price > 0 && price > gStatusBar->getBalance()) { - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("this_costs"), price); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", price); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("this_costs", args), price); } else { @@ -1188,7 +1190,8 @@ public: LLTaskObjectBridge( LLPanelObjectInventory* panel, const LLUUID& uuid, - const std::string& name); + const std::string& name, + U32 flags = 0); virtual LLUIImagePtr getIcon() const; }; @@ -1196,8 +1199,9 @@ public: LLTaskObjectBridge::LLTaskObjectBridge( LLPanelObjectInventory* panel, const LLUUID& uuid, - const std::string& name) : - LLTaskInvFVBridge(panel, uuid, name) + const std::string& name, + U32 flags) : + LLTaskInvFVBridge(panel, uuid, name, flags) { } @@ -1442,9 +1446,15 @@ LLTaskInvFVBridge* LLTaskInvFVBridge::createObjectBridge(LLPanelObjectInventory* // object->getName()); break; case LLAssetType::AT_OBJECT: + { + item = dynamic_cast<LLInventoryItem*>(object); + U32 flags = ( NULL == item ? 0 : item->getFlags() ); + new_bridge = new LLTaskObjectBridge(panel, object->getUUID(), - object->getName()); + object->getName(), + flags); + } break; case LLAssetType::AT_NOTECARD: new_bridge = new LLTaskNotecardBridge(panel, diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index cdd79b1559..1a1650c38b 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -567,9 +567,13 @@ void LLPanelPlaceProfile::onForSaleBannerClick() if(parcel->getLocalID() == mSelectedParcelID && mLastSelectedRegionID ==selected_region->getRegionID()) { - if(parcel->getSalePrice() - gStatusBar->getBalance() > 0) + S32 price = parcel->getSalePrice(); + + if(price - gStatusBar->getBalance() > 0) { - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("buying_selected_land"), parcel->getSalePrice()); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", price); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("buying_selected_land", args), price); } else { diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index 26b57c003b..f9ba6f625d 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -278,6 +278,11 @@ BOOL LLPanelPlaces::postBuild() mFilterEditor = getChild<LLFilterEditor>("Filter"); if (mFilterEditor) { + //when list item is being clicked the filter editor looses focus + //committing on focus lost leads to detaching list items + //BUT a detached list item cannot be made selected and must not be clicked onto + mFilterEditor->setCommitOnFocusLost(false); + mFilterEditor->setCommitCallback(boost::bind(&LLPanelPlaces::onFilterEdit, this, _2, false)); } diff --git a/indra/newview/llprogressview.cpp b/indra/newview/llprogressview.cpp index 120b584cd9..9b5e38d0aa 100644 --- a/indra/newview/llprogressview.cpp +++ b/indra/newview/llprogressview.cpp @@ -68,15 +68,16 @@ const F32 TOTAL_LOGIN_TIME = 10.f; // seconds, wild guess at time from GL contex S32 gLastStartAnimationFrame = 0; // human-style indexing, first image = 1 const S32 ANIMATION_FRAMES = 1; //13; +static LLRegisterPanelClassWrapper<LLProgressView> r("progress_view"); + + // XUI: Translate -LLProgressView::LLProgressView(const LLRect &rect) +LLProgressView::LLProgressView() : LLPanel(), mPercentDone( 0.f ), mMouseDownInActiveArea( false ), mUpdateEvents("LLProgressView") { - LLUICtrlFactory::getInstance()->buildPanel(this, "panel_progress.xml"); - reshape(rect.getWidth(), rect.getHeight()); mUpdateEvents.listen("self", boost::bind(&LLProgressView::handleUpdate, this, _1)); } @@ -92,6 +93,9 @@ BOOL LLProgressView::postBuild() getChild<LLTextBox>("message_text")->setClickedCallback(onClickMessage, this); + // hidden initially, until we need it + LLPanel::setVisible(FALSE); + sInstance = this; return TRUE; } @@ -126,19 +130,23 @@ BOOL LLProgressView::handleKeyHere(KEY key, MASK mask) void LLProgressView::setVisible(BOOL visible) { + // hiding progress view if (getVisible() && !visible) { - mFadeTimer.start(); + // hiding progress view, so show menu bars + LLUI::getRootView()->getChildView("menu_bar_holder")->setVisible(TRUE); } + // showing progress view else if (!getVisible() && visible) { - gViewerWindow->addPopup(this); - + // showing progress view, so hide menu bars + LLUI::getRootView()->getChildView("menu_bar_holder")->setVisible(FALSE); + setFocus(TRUE); mFadeTimer.stop(); mProgressTimer.start(); - LLPanel::setVisible(visible); + LLPanel::setVisible(TRUE); } } @@ -148,7 +156,7 @@ void LLProgressView::draw() static LLTimer timer; // Paint bitmap if we've got one - glPushMatrix(); + glPushMatrix(); if (gStartTexture) { LLGLSUIDefault gls_ui; @@ -189,7 +197,7 @@ void LLProgressView::draw() // Fade is complete, release focus gFocusMgr.releaseFocusIfNeeded( this ); LLPanel::setVisible(FALSE); - gViewerWindow->removePopup(this); + mFadeTimer.stop(); gStartTexture = NULL; } diff --git a/indra/newview/llprogressview.h b/indra/newview/llprogressview.h index 6853674d88..374b14be83 100644 --- a/indra/newview/llprogressview.h +++ b/indra/newview/llprogressview.h @@ -44,7 +44,7 @@ class LLProgressBar; class LLProgressView : public LLPanel { public: - LLProgressView(const LLRect& rect); + LLProgressView(); virtual ~LLProgressView(); BOOL postBuild(); diff --git a/indra/newview/llscrollingpanelparam.cpp b/indra/newview/llscrollingpanelparam.cpp index 32a915608e..dc64296521 100644 --- a/indra/newview/llscrollingpanelparam.cpp +++ b/indra/newview/llscrollingpanelparam.cpp @@ -168,25 +168,25 @@ void LLScrollingPanelParam::draw() LLPanel::draw(); // Draw the hints over the "less" and "more" buttons. - glPushMatrix(); + gGL.pushUIMatrix(); { const LLRect& r = mHintMin->getRect(); F32 left = (F32)(r.mLeft + BTN_BORDER); F32 bot = (F32)(r.mBottom + BTN_BORDER); - glTranslatef(left, bot, 0.f); + gGL.translateUI(left, bot, 0.f); mHintMin->draw(); } - glPopMatrix(); + gGL.popUIMatrix(); - glPushMatrix(); + gGL.pushUIMatrix(); { const LLRect& r = mHintMax->getRect(); F32 left = (F32)(r.mLeft + BTN_BORDER); F32 bot = (F32)(r.mBottom + BTN_BORDER); - glTranslatef(left, bot, 0.f); + gGL.translateUI(left, bot, 0.f); mHintMax->draw(); } - glPopMatrix(); + gGL.popUIMatrix(); // Draw labels on top of the buttons diff --git a/indra/newview/llspeakers.cpp b/indra/newview/llspeakers.cpp index 717a8bda1e..6cf9c6b95d 100644 --- a/indra/newview/llspeakers.cpp +++ b/indra/newview/llspeakers.cpp @@ -37,7 +37,6 @@ #include "llagent.h" #include "llappviewer.h" #include "llimview.h" -#include "llmutelist.h" #include "llsdutil.h" #include "lluicolortable.h" #include "llviewerobjectlist.h" diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp index b1b3ae473c..1c7b3a0fe0 100644 --- a/indra/newview/lltexturefetch.cpp +++ b/indra/newview/lltexturefetch.cpp @@ -571,7 +571,7 @@ bool LLTextureFetchWorker::doWork(S32 param) if ((mFetcher->isQuitting() || mImagePriority < 1.0f || getFlags(LLWorkerClass::WCF_DELETE_REQUESTED))) { - if (mState < WRITE_TO_CACHE) + if (mState < DECODE_IMAGE) { return true; // abort } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index b9509a98f5..af42ed0dc9 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -982,6 +982,119 @@ bool LLViewerMedia::isParcelAudioPlaying() return (LLViewerMedia::hasParcelAudio() && gAudiop && LLAudioEngine::AUDIO_PLAYING == gAudiop->isInternetStreamPlaying()); } +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::clearAllCookies() +{ + // Clear all cookies for all plugins + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if(pimpl->mMediaSource) + { + pimpl->mMediaSource->clear_cookies(); + } + } + + // FIXME: this may not be sufficient, since the on-disk cookie file won't get written until some browser instance exits cleanly. + // It also won't clear cookies for other accounts, or for any account if we're not logged in, and won't do anything at all if there are no webkit plugins loaded. + // Until such time as we can centralize cookie storage, the following hack should cover these cases: + + // HACK: Look for cookie files in all possible places and delete them. + // NOTE: this assumes knowledge of what happens inside the webkit plugin (it's what adds 'browser_profile' to the path and names the cookie file) + + // Places that cookie files can be: + // <getOSUserAppDir>/browser_profile/cookies + // <getOSUserAppDir>/first_last/browser_profile/cookies (note that there may be any number of these!) + + std::string base_dir = gDirUtilp->getOSUserAppDir() + gDirUtilp->getDirDelimiter(); + std::string target; + std::string filename; + + lldebugs << "base dir = " << base_dir << llendl; + + // The non-logged-in version is easy + target = base_dir; + target += "browser_profile"; + target += gDirUtilp->getDirDelimiter(); + target += "cookies"; + lldebugs << "target = " << target << llendl; + if(LLFile::isfile(target)) + { + LLFile::remove(target); + } + + // the hard part: iterate over all user directories and delete the cookie file from each one + while(gDirUtilp->getNextFileInDir(base_dir, "*_*", filename, false)) + { + target = base_dir; + target += filename; + target += gDirUtilp->getDirDelimiter(); + target += "browser_profile"; + target += gDirUtilp->getDirDelimiter(); + target += "cookies"; + lldebugs << "target = " << target << llendl; + if(LLFile::isfile(target)) + { + LLFile::remove(target); + } + } + + +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::clearAllCaches() +{ + // Clear all plugins' caches + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + pimpl->clearCache(); + } +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::setCookiesEnabled(bool enabled) +{ + // Set the "cookies enabled" flag for all loaded plugins + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if(pimpl->mMediaSource) + { + pimpl->mMediaSource->enable_cookies(enabled); + } + } +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::setProxyConfig(bool enable, const std::string &host, int port) +{ + // Set the proxy config for all loaded plugins + impl_list::iterator iter = sViewerMediaImplList.begin(); + impl_list::iterator end = sViewerMediaImplList.end(); + for (; iter != end; iter++) + { + LLViewerMediaImpl* pimpl = *iter; + if(pimpl->mMediaSource) + { + pimpl->mMediaSource->proxy_setup(enable, host, port); + } + } +} + +///////////////////////////////////////////////////////////////////////////////////////// +// static bool LLViewerMedia::hasInWorldMedia() { if (sInWorldMediaDisabled) return false; @@ -1321,6 +1434,8 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type) media_source->focus(mHasFocus); media_source->setBackgroundColor(mBackgroundColor); + media_source->proxy_setup(gSavedSettings.getBOOL("BrowserProxyEnabled"), gSavedSettings.getString("BrowserProxyAddress"), gSavedSettings.getS32("BrowserProxyPort")); + if(mClearCache) { mClearCache = false; diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index bc51e713a1..f9870fb3b9 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -133,6 +133,18 @@ public: static bool isParcelMediaPlaying(); static bool isParcelAudioPlaying(); + // Clear all cookies for all plugins + static void clearAllCookies(); + + // Clear all plugins' caches + static void clearAllCaches(); + + // Set the "cookies enabled" flag for all loaded plugins + static void setCookiesEnabled(bool enabled); + + // Set the proxy config for all loaded plugins + static void setProxyConfig(bool enable, const std::string &host, int port); + private: static void onTeleportFinished(); }; diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index 5c40d02f8d..5598a589cc 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -436,7 +436,8 @@ void init_menus() gMenuBarView->setRect(LLRect(0, top, 0, top - MENU_BAR_HEIGHT)); gMenuBarView->setBackgroundColor( color ); - gMenuHolder->addChild(gMenuBarView); + LLView* menu_bar_holder = gViewerWindow->getRootView()->getChildView("menu_bar_holder"); + menu_bar_holder->addChild(gMenuBarView); gViewerWindow->setMenuBackgroundColor(false, LLViewerLogin::getInstance()->isInProductionGrid()); @@ -471,9 +472,10 @@ void init_menus() gLoginMenuBarView = LLUICtrlFactory::getInstance()->createFromFile<LLMenuBarGL>("menu_login.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); gLoginMenuBarView->arrangeAndClear(); LLRect menuBarRect = gLoginMenuBarView->getRect(); - gLoginMenuBarView->setRect(LLRect(menuBarRect.mLeft, menuBarRect.mTop, gViewerWindow->getRootView()->getRect().getWidth() - menuBarRect.mLeft, menuBarRect.mBottom)); + menuBarRect.setLeftTopAndSize(0, menu_bar_holder->getRect().getHeight(), menuBarRect.getWidth(), menuBarRect.getHeight()); + gLoginMenuBarView->setRect(menuBarRect); gLoginMenuBarView->setBackgroundColor( color ); - gMenuHolder->addChild(gLoginMenuBarView); + menu_bar_holder->addChild(gLoginMenuBarView); // tooltips are on top of EVERYTHING, including menus gViewerWindow->getRootView()->sendChildToFront(gToolTipView); @@ -3274,7 +3276,9 @@ void handle_buy_object(LLSaleInfo sale_info) if (price > 0 && price > gStatusBar->getBalance()) { - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("this_object_costs"), price); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", price); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("this_object_costs", args), price); return; } @@ -4404,8 +4408,10 @@ void handle_buy_or_take() } else { + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", total_price); LLFloaterBuyCurrency::buyCurrency( - "Buying this costs", total_price); + LLTrans::getString("BuyingCosts", args), total_price); } } else diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 00762894cd..dfde9a9d1d 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -811,10 +811,10 @@ void upload_done_callback(const LLUUID& uuid, void* user_data, S32 result, LLExt if(!(can_afford_transaction(expected_upload_cost))) { - LLFloaterBuyCurrency::buyCurrency( - llformat(LLTrans::getString("UploadingCosts").c_str(), - data->mAssetInfo.getName().c_str()), - expected_upload_cost); + LLStringUtil::format_map_t args; + args["NAME"] = data->mAssetInfo.getName(); + args["AMOUNT"] = llformat("%d", expected_upload_cost); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("UploadingCosts", args), expected_upload_cost); is_balance_sufficient = FALSE; } else if(region) @@ -1001,7 +1001,9 @@ void upload_new_resource(const LLTransactionID &tid, LLAssetType::EType asset_ty if (balance < expected_upload_cost) { // insufficient funds, bail on this upload - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("uploading_costs"), expected_upload_cost); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", expected_upload_cost); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("uploading_costs", args), expected_upload_cost); return; } } diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index bd0012057c..32edbec822 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -105,6 +105,7 @@ #include "llpanelplaceprofile.h" #include <boost/algorithm/string/split.hpp> // +#include <boost/regex.hpp> #if LL_WINDOWS // For Windows specific error handler #include "llwindebug.h" // For the invalid message handler @@ -272,7 +273,9 @@ void give_money(const LLUUID& uuid, LLViewerRegion* region, S32 amount, BOOL is_ } else { - LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("giving"), amount); + LLStringUtil::format_map_t args; + args["AMOUNT"] = llformat("%d", amount); + LLFloaterBuyCurrency::buyCurrency(LLTrans::getString("giving", args), amount); } } @@ -4498,8 +4501,64 @@ void process_money_balance_reply( LLMessageSystem* msg, void** ) payload["from_id"] = from_id; LLNotificationsUtil::add("PaymentRecived", args, payload); } + //AD *HACK: Parsing incoming string to localize messages that come from server! EXT-5986 + // It's only a temporarily and ineffective measure. It doesn't affect performance much + // because we get here only for specific type of messages, but anyway it is not right to do it! + // *TODO: Server-side changes should be made and this code removed. else { + if(desc.find("You paid")==0) + { + // Regular expression for message parsing- change it in case of server-side changes. + // Each set of parenthesis will later be used to find arguments of message we generate + // in the end of this if- (.*) gives us name of money receiver, (\\d+)-amount of money we pay + // and ([^$]*)- reason of payment + boost::regex expr("You paid (.*)L\\$(\\d+)\\s?([^$]*)."); + boost::match_results <std::string::const_iterator> matches; + if(boost::regex_match(desc, matches, expr)) + { + // Name of full localizable notification string + // there are three types of this string- with name of receiver and reason of payment, + // without name and without reason (but not simultaneously) + // example of string without name - You paid L$100 to create a group. + // example of string without reason - You paid Smdby Linden L$100. + // example of string with reason and name - You paid Smbdy Linden L$100 for a land access pass. + std::string line = "you_paid_ldollars_no_name"; + + // arguments of string which will be in notification + LLStringUtil::format_map_t str_args; + + // extracting amount of money paid (without L$ symbols). It is always present. + str_args["[AMOUNT]"] = std::string(matches[2]); + + // extracting name of person/group you are paying (it may be absent) + std::string name = std::string(matches[1]); + if(!name.empty()) + { + str_args["[NAME]"] = name; + line = "you_paid_ldollars"; + } + + // extracting reason of payment (it may be absent) + std::string reason = std::string(matches[3]); + if (reason.empty()) + { + line = "you_paid_ldollars_no_reason"; + } + else + { + std::string localized_reason; + // if we haven't found localized string for reason of payment leave it as it was + str_args["[REASON]"] = LLTrans::findString(localized_reason, reason) ? localized_reason : reason; + } + + // forming final message string by retrieving localized version from xml + // and applying previously found arguments + line = LLTrans::getString(line, str_args); + args["MESSAGE"] = line; + } + } + LLNotificationsUtil::add("SystemMessage", args); } diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp index ea8af223c3..c9b3886fef 100644 --- a/indra/newview/llviewertexteditor.cpp +++ b/indra/newview/llviewertexteditor.cpp @@ -524,7 +524,10 @@ LLUIImagePtr LLEmbeddedItems::getItemImage(llwchar ext_char) const break; case LLAssetType::AT_SOUND: img_name = "Inv_Sound"; break; case LLAssetType::AT_CLOTHING: img_name = "Inv_Clothing"; break; - case LLAssetType::AT_OBJECT: img_name = "Inv_Object"; break; + case LLAssetType::AT_OBJECT: + img_name = LLInventoryItem::II_FLAGS_OBJECT_HAS_MULTIPLE_ITEMS & item->getFlags() ? + "Inv_Object_Multi" : "Inv_Object"; + break; case LLAssetType::AT_CALLINGCARD: img_name = "Inv_CallingCard"; break; case LLAssetType::AT_LANDMARK: img_name = "Inv_Landmark"; break; case LLAssetType::AT_NOTECARD: img_name = "Inv_Notecard"; break; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index dbbf0219c9..9fbffdac35 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -1546,8 +1546,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority() } else { - // Leave the priority as-is - return mDecodePriority; + priority = -1.f; //stop fetching } } else if (cur_discard < 0) diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index adac4b9b40..e7d64c48a0 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1351,7 +1351,8 @@ LLViewerWindow::LLViewerWindow( mStatesDirty(false), mIsFullscreenChecked(false), mCurrResolutionIndex(0), - mViewerWindowListener(new LLViewerWindowListener(this)) + mViewerWindowListener(new LLViewerWindowListener(this)), + mProgressView(NULL) { LLNotificationChannel::buildChannel("VW_alerts", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alert")); LLNotificationChannel::buildChannel("VW_alertmodal", "Visible", LLNotificationFilters::filterBy<std::string>(&LLNotification::getType, "alertmodal")); @@ -1588,8 +1589,7 @@ void LLViewerWindow::initBase() gToolTipView = getRootView()->getChild<LLToolTipView>("tooltip view"); // Add the progress bar view (startup view), which overrides everything - mProgressView = new LLProgressView(full_window); - getRootView()->addChild(mProgressView); + mProgressView = getRootView()->getChild<LLProgressView>("progress_view"); setShowProgress(FALSE); setProgressCancelButtonVisible(FALSE); diff --git a/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png b/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png Binary files differnew file mode 100644 index 0000000000..11f4871ad8 --- /dev/null +++ b/indra/newview/skins/default/textures/icons/Inv_Object_Multi.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index b1594816b2..a3e5361e76 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -247,6 +247,7 @@ with the same filename but different name <texture name="Inv_Landmark" file_name="icons/Inv_Landmark.png" preload="false" /> <texture name="Inv_Notecard" file_name="icons/Inv_Notecard.png" preload="false" /> <texture name="Inv_Object" file_name="icons/Inv_Object.png" preload="false" /> + <texture name="Inv_Object_Multi" file_name="icons/Inv_Object_Multi.png" preload="false" /> <texture name="Inv_Pants" file_name="icons/Inv_Pants.png" preload="false" /> <texture name="Inv_Script" file_name="icons/Inv_Script.png" preload="false" /> <texture name="Inv_Shirt" file_name="icons/Inv_Shirt.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 961bd6b5e4..e02d32596a 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -182,7 +182,7 @@ width="180" layout="topleft" name="buy_action"> - [NAME] L$ [PRICE] + [ACTION] </text> <text type="string" diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml index 85853f39bb..1ace760816 100644 --- a/indra/newview/skins/default/xui/en/main_view.xml +++ b/indra/newview/skins/default/xui/en/main_view.xml @@ -143,12 +143,19 @@ <panel mouse_opaque="false" follows="left|right|top" name="status_bar_container" - tab_stop="false" + tab_stop="false" height="19" left="0" top="0" width="1024" visible="false"/> + <view mouse_opaque="false" + follows="all" + name="menu_bar_holder" + left="0" + top="0" + width="1024" + height="768"/> <notify_box_view top="0" follows="all" height="768" @@ -159,6 +166,15 @@ <panel top="0" follows="all" height="768" + mouse_opaque="true" + name="progress_view" + filename="panel_progress.xml" + class="progress_view" + width="1024" + visible="false"/> + <panel top="0" + follows="all" + height="768" mouse_opaque="false" name="popup_holder" class="popup_holder" diff --git a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml index 072ea882e6..d3f6695375 100644 --- a/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_block_list_sidetray.xml @@ -39,7 +39,13 @@ name="blocked" tool_tip="List of currently blocked Residents" top="30" - width="270" /> + width="270"> + <scroll_list.columns + name="item_name" /> + <scroll_list.columns + name="item_type" + width="96" /> + </scroll_list> <button follows="left|bottom" height="23" diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index 19c0da4f08..0eb5c47f85 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -385,7 +385,7 @@ things in this group. There's a broad variety of Abilities. left="0" follows="left|top|right" right="-1" - max_length="295" + max_length="20" name="role_name" top_pad="0" width="300"> @@ -408,7 +408,7 @@ things in this group. There's a broad variety of Abilities. left="0" follows="left|top|right" right="-1" - max_length="295" + max_length="20" name="role_title" top_pad="0" width="300"> diff --git a/indra/newview/skins/default/xui/en/panel_login.xml b/indra/newview/skins/default/xui/en/panel_login.xml index 627e616af5..d1e0746d9d 100644 --- a/indra/newview/skins/default/xui/en/panel_login.xml +++ b/indra/newview/skins/default/xui/en/panel_login.xml @@ -216,7 +216,7 @@ height="16" name="login_help" top_pad="2" right="-10" - width="180"> + width="190"> Need help logging in? </text> <!-- <text follows="right|bottom" diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml index c658e0de6f..e604e401f6 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml @@ -164,7 +164,7 @@ Automatic position for: label="Opacity" layout="topleft" left="80" - label_width="50" + label_width="60" name="bubble_chat_opacity" width="200" /> <color_swatch diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml index 15f8b33f5b..fe882730f4 100644 --- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml +++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml @@ -283,7 +283,7 @@ layout="topleft" left_delta="0" name="external" - value="true" + value="1" tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen." top_delta="20" width="480" /> diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 412485e03f..9fcabc7722 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -311,12 +311,15 @@ height="23" label="Add Friend" layout="topleft" - left="2" + left="1" mouse_opaque="false" name="add_friend" + pad_left="1" + pad_right="1" tool_tip="Offer friendship to the Resident" top="5" - width="80" /> + use_ellipses="true" + width="105" /> <button follows="bottom|left" height="23" @@ -325,8 +328,8 @@ name="im" tool_tip="Open instant message session" top="5" - left_pad="3" - width="39" /> + left_pad="0" + width="19" /> <button follows="bottom|left" height="23" @@ -334,9 +337,12 @@ layout="topleft" name="call" tool_tip="Call this Resident" - left_pad="3" + left_pad="0" + pad_left="1" + pad_right="1" top="5" - width="43" /> + use_ellipses="true" + width="48" /> <button enabled="false" follows="bottom|left" @@ -344,10 +350,13 @@ label="Map" layout="topleft" name="show_on_map_btn" + pad_left="1" + pad_right="1" tool_tip="Show the Resident on the map" top="5" - left_pad="3" - width="41" /> + left_pad="0" + use_ellipses="true" + width="33" /> <button follows="bottom|left" height="23" @@ -355,9 +364,12 @@ layout="topleft" name="teleport" tool_tip="Offer teleport" - left_pad="3" + left_pad="0" + pad_left="1" + pad_right="1" top="5" - width="69" /> + use_ellipses="true" + width="81" /> <button follows="bottom|right" height="23" @@ -367,7 +379,6 @@ tool_tip="Pay money to or share inventory with the Resident" right="-1" top="5" - left_pad="3" width="23" /> </layout_panel> <layout_panel diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 0c870e155b..84664eedcc 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -94,10 +94,10 @@ <button follows="right|top" height="16" - image_selected="Pause_Off" - image_unselected="Play_Off" - image_pressed="Play_Press" - image_pressed_selected="Pause_Press" + image_selected="Play_Off" + image_unselected="Pause_Off" + image_pressed="Pause_Press" + image_pressed_selected="Play_Press" is_toggle="true" left_pad="15" top="1" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 3a766bb798..47386bd332 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2202,7 +2202,8 @@ Clears (deletes) the media and all params from the given face. <!-- Viewer menu --> <string name="AcquiredItems">Acquired Items</string> <string name="Cancel">Cancel</string> - <string name="UploadingCosts">Uploading %s costs</string> + <string name="UploadingCosts">Uploading [NAME] costs L$ [AMOUNT]</string> + <string name="BuyingCosts">Buying this costs L$ [AMOUNT]</string> <string name="UnknownFileExtension"> Unknown file extension .%s Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh @@ -3050,14 +3051,48 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <!-- Financial operations strings --> <string name="paid_you_ldollars">[NAME] paid you L$[AMOUNT]</string> - <string name="giving">Giving</string> - <string name="uploading_costs">Uploading costs</string> - <string name="this_costs">This costs</string> - <string name="buying_selected_land">Buying selected land</string> - <string name="this_object_costs">This object costs"</string> + <string name="you_paid_ldollars">You paid [NAME] L$[AMOUNT] [REASON].</string> + <string name="you_paid_ldollars_no_reason">You paid [NAME] L$[AMOUNT].</string> + <string name="you_paid_ldollars_no_name">You paid L$[AMOUNT] [REASON].</string> + <string name="for a parcel of land">for a parcel of land</string> + <string name="for a land access pass">for a land access pass</string> + <string name="for deeding land">for deeding land</string> + <string name="to create a group">to create a group</string> + <string name="to join a group">to join a group</string> + <string name="to upload">to upload</string> + + <string name="giving">Giving L$ [AMOUNT]</string> + <string name="uploading_costs">Uploading costs L$ [AMOUNT]</string> + <string name="this_costs">This costs L$ [AMOUNT]</string> + <string name="buying_selected_land">Buying selected land L$ [AMOUNT]</string> + <string name="this_object_costs">This object costs L$ [AMOUNT]</string> <string name="group_role_everyone">Everyone</string> <string name="group_role_officers">Officers</string> <string name="group_role_owners">Owners</string> + <string name="uploading_abuse_report">Uploading... + +Abuse Report</string> + + <!-- names for new inventory items--> + <string name="New Shape">New Shape</string> + <string name="New Skin">New Skin</string> + <string name="New Hair">New Hair</string> + <string name="New Eyes">New Eyes</string> + <string name="New Shirt">New Shirt</string> + <string name="New Pants">New Pants</string> + <string name="New Shoes">New Shoes</string> + <string name="New Socks">New Socks</string> + <string name="New Jacket">New Jacket</string> + <string name="New Gloves">New Gloves</string> + <string name="New Undershirt">New Undershirt</string> + <string name="New Underpants">New Underpants</string> + <string name="New Skirt">New Skirt</string> + <string name="New Alpha">New Alpha</string> + <string name="New Tattoo">New Tattoo</string> + <string name="Invalid Wearable">Invalid Wearable</string> + <string name="New Script">New Script</string> + <string name="New Folder">New Folder</string> + <string name="Contents">Contents</string> </strings> diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml index b5acd6299a..16ed27817e 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -449,6 +449,9 @@ musique : <panel.string name="access_estate_defined"> (défini par le domaine </panel.string> + <panel.string name="allow_public_access"> + Autoriser l'accès public ([MATURITY]) + </panel.string> <panel.string name="estate_override"> Au moins une de ces options est définie au niveau du domaine. </panel.string> diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml index f234529764..0bbcbe833f 100644 --- a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml +++ b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml @@ -1,5 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Modifier la préférence" name="panel_edit_pick"> + <panel.string name="location_notice"> + (mise à jour après enregistrement) + </panel.string> <text name="title"> Modifier la préférence </text> @@ -22,7 +25,7 @@ </panel> </scroll_container> <panel label="bottom_panel" name="bottom_panel"> - <button label="Enregistrer [WHAT]" name="save_changes_btn"/> + <button label="Enregistrer" name="save_changes_btn"/> <button label="Annuler" name="cancel_btn"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml index 5faba01339..1a4450cccc 100644 --- a/indra/newview/skins/default/xui/fr/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/fr/panel_main_inventory.xml @@ -1,18 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Choses" name="main inventory panel"> - <panel.string name="Title"> - Choses + <panel.string name="ItemcountFetching"> + Récupération de [ITEM_COUNT] objets... [FILTER] </panel.string> - <filter_editor label="Filtrer l'inventaire" name="inventory search editor"/> - <tab_container name="inventory filter tabs"> - <inventory_panel label="MON INVENTAIRE" name="All Items"/> - <inventory_panel label="RÉCENT" name="Recent Items"/> - </tab_container> - <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> - <button name="add_btn" tool_tip="Ajouter un nouvel article"/> - <dnd_button name="trash_btn" tool_tip="Supprimer l'article sélectionné"/> - </panel> + <panel.string name="ItemcountCompleted"> + [ITEM_COUNT] objets [FILTER] + </panel.string> + <text name="ItemcountText"> + Objets : + </text> <menu_bar name="Inventory Menu"> <menu label="Fichier" name="File"> <menu_item_call label="Ouvrir" name="Open"/> @@ -61,4 +57,14 @@ <menu_item_check label="Dossiers système en premier" name="System Folders To Top"/> </menu> </menu_bar> + <filter_editor label="Filtrer l'inventaire" name="inventory search editor"/> + <tab_container name="inventory filter tabs"> + <inventory_panel label="MON INVENTAIRE" name="All Items"/> + <inventory_panel label="RÉCENT" name="Recent Items"/> + </tab_container> + <panel name="bottom_panel"> + <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + <button name="add_btn" tool_tip="Ajouter un nouvel article"/> + <dnd_button name="trash_btn" tool_tip="Supprimer l'article sélectionné"/> + </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml index a1c4c92618..6bf8a94c68 100644 --- a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml +++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml @@ -19,10 +19,17 @@ <button label="Plus >>" label_selected="Moins <<" name="more_less_btn" tool_tip="Options avancées"/> </panel> <panel name="nearby_media_panel"> + <text name="nearby_media"> + Média près de vous + </text> + <text name="show"> + Afficher : + </text> <combo_box name="show_combo"> <combo_box.item label="Tout" name="All"/> <combo_box.item label="Dans cette parcelle" name="WithinParcel"/> <combo_box.item label="En dehors de la parcelle" name="OutsideParcel"/> + <combo_box.item label="Sur les autres avatars" name="OnOthers"/> </combo_box> <scroll_list name="media_list"> <scroll_list.columns label="Proximité" name="media_proximity"/> @@ -31,19 +38,19 @@ <scroll_list.columns label="Nom" name="media_name"/> <scroll_list.columns label="Débogage" name="media_debug"/> </scroll_list> - <panel> + <panel name="media_controls_panel"> <layout_stack name="media_controls"> <layout_panel name="stop"> <button name="stop_btn" tool_tip="Arrêter le média sélectionné"/> </layout_panel> <layout_panel name="play"> - <button name="play_btn" tool_tip="Jouer le média sélectionné"/> + <button name="play_btn" tool_tip="Lire le média sélectionné"/> </layout_panel> <layout_panel name="pause"> - <button name="pause_btn" tool_tip="Pauser le média sélectionné"/> + <button name="pause_btn" tool_tip="Suspendre la lecture du média sélectionné"/> </layout_panel> <layout_panel name="volume_slider_ctrl"> - <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volume audio pour le média sélectionné"/> + <slider_bar initial_value="0.5" name="volume_slider" tool_tip="Volume audio du média sélectionné"/> </layout_panel> <layout_panel name="mute"> <button name="mute_btn" tool_tip="Couper l'audio sur le média sélectionné"/> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml index b47ed4bd8b..f8ecfbedac 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml @@ -3,6 +3,9 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <panel.string name="middle_mouse"> + Bouton central de la souris + </panel.string> <slider label="Angle de vue" name="camera_fov"/> <slider label="Distance" name="camera_offset_scale"/> <text name="heading2"> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml index 7e6e96aa49..64635fbac0 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_chat.xml @@ -46,6 +46,12 @@ <check_box initial_value="true" label="Jouer l'animation clavier quand vous écrivez" name="play_typing_animation"/> <check_box label="M'envoyer les IM par e-mail une fois déconnecté" name="send_im_to_email"/> <check_box label="Activer l'historique des chats en texte brut" name="plain_text_chat_history"/> + <text name="show_ims_in_label"> + Afficher les IM dans : + </text> + <text name="requires_restart_label"> + (redémarrage requis) + </text> <radio_group name="chat_window" tool_tip="Afficher vos messages instantanés dans plusieurs fenêtres ou dans une seule fenêtre avec plusieurs onglets (redémarrage requis)"> <radio_item label="Plusieurs fenêtres" name="radio" value="0"/> <radio_item label="Onglets" name="radio2" value="1"/> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 32aff9dd79..ac78790807 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -23,7 +23,22 @@ Détection du matériel... </string> <string name="StartupLoading"> - Chargement + Chargement de [APP_NAME]... + </string> + <string name="StartupClearingCache"> + Vidage du cache... + </string> + <string name="StartupInitializingTextureCache"> + Initialisation du cache des textures... + </string> + <string name="StartupInitializingVFS"> + Initialisation VFS… + </string> + <string name="ProgressRestoring"> + Restauration... + </string> + <string name="ProgressChangingResolution"> + Changement de la résolution... </string> <string name="Fullbright"> Fullbright (Legacy) @@ -88,6 +103,9 @@ <string name="LoginFailedNoNetwork"> Erreur réseau : impossible d'établir la connexion. Veuillez vérifier votre connexion réseau. </string> + <string name="LoginFailed"> + Échec de la connexion. + </string> <string name="Quit"> Quitter </string> @@ -97,6 +115,24 @@ <string name="AgentLostConnection"> Il y a peut-être des problèmes techniques dans cette région. Veuillez vérifier votre connexion Internet. </string> + <string name="SavingSettings"> + Enregistrement des paramètres... + </string> + <string name="LoggingOut"> + Déconnexion... + </string> + <string name="ShuttingDown"> + Arrêt en cours... + </string> + <string name="YouHaveBeenDisconnected"> + Vous avez été déconnecté de la région où vous étiez. + </string> + <string name="SentToInvalidRegion"> + Vous avez été transféré vers une région non valide. + </string> + <string name="TestingDisconnect"> + Test de déconnexion du client + </string> <string name="TooltipPerson"> Personne </string> @@ -151,6 +187,24 @@ <string name="TooltipAgentUrl"> Cliquez pour afficher le profil de ce résident </string> + <string name="TooltipAgentMute"> + Cliquer pour ignorer ce résident + </string> + <string name="TooltipAgentUnmute"> + Cliquer pour ne plus ignorer ce résident + </string> + <string name="TooltipAgentIM"> + Cliquer pour envoyer un IM à ce résident + </string> + <string name="TooltipAgentPay"> + Cliquer pour payer ce résident + </string> + <string name="TooltipAgentOfferTeleport"> + Cliquer pour proposer une téléportation à ce résident + </string> + <string name="TooltipAgentRequestFriend"> + Cliquer pour demander à ce résident d'être votre ami + </string> <string name="TooltipGroupUrl"> Cliquez pour afficher la description de ce groupe </string> @@ -176,12 +230,31 @@ Cliquez pour exécuter la commande secondlife:// command </string> <string name="CurrentURL" value=" URL actuelle : [CurrentURL]"/> + <string name="TooltipPrice" value="[PRICE] L$-"/> <string name="SLurlLabelTeleport"> Me téléporter vers </string> <string name="SLurlLabelShowOnMap"> Afficher la carte pour </string> + <string name="SLappAgentMute"> + Ignorer + </string> + <string name="SLappAgentUnmute"> + Ne plus ignorer + </string> + <string name="SLappAgentIM"> + IM + </string> + <string name="SLappAgentPay"> + Payer + </string> + <string name="SLappAgentOfferTeleport"> + Proposer une téléportation à + </string> + <string name="SLappAgentRequestFriend"> + Demande d'amitié + </string> <string name="BUTTON_CLOSE_DARWIN"> Fermer (⌘W) </string> @@ -335,6 +408,9 @@ <string name="symbolic link"> lien </string> + <string name="symbolic folder link"> + lien du dossier + </string> <string name="AvatarEditingAppearance"> (Apparence en cours de modification) </string> @@ -849,6 +925,7 @@ Aucun contenu </string> <string name="WornOnAttachmentPoint" value=" (porté sur [ATTACHMENT_POINT])"/> + <string name="ActiveGesture" value="[GESLABEL] (actif)"/> <string name="PermYes"> Oui </string> @@ -948,6 +1025,9 @@ <string name="InvFolder My Outfits"> Mes tenues </string> + <string name="InvFolder Accessories"> + Accessoires + </string> <string name="InvFolder Friends"> Amis </string> @@ -1471,6 +1551,9 @@ <string name="PanelContentsNewScript"> Nouveau script </string> + <string name="PanelContentsTooltip"> + Contenu de l'objet + </string> <string name="BusyModeResponseDefault"> Le résident auquel vous avez envoyé un message est en mode Occupé, ce qui signifie qu'il a demandé à ne pas être dérangé. Votre message restera affiché dans son panneau IM afin qu'il puisse le lire ultérieurement. </string> @@ -3375,4 +3458,31 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="unread_chat_multiple"> [SOURCES] ont dit quelque chose de nouveau </string> + <string name="paid_you_ldollars"> + [NAME] vous a payé [AMOUNT] L$ + </string> + <string name="giving"> + Giving + </string> + <string name="uploading_costs"> + Chargement des coûts + </string> + <string name="this_costs"> + This costs + </string> + <string name="buying_selected_land"> + Achat du terrain sélectionné + </string> + <string name="this_object_costs"> + This object costs" + </string> + <string name="group_role_everyone"> + Tous + </string> + <string name="group_role_officers"> + Officiers + </string> + <string name="group_role_owners"> + Propriétaires + </string> </strings> diff --git a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml index 0e1e2851e3..1fe6ad25ed 100644 --- a/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml +++ b/indra/newview/skins/default/xui/ja/panel_prim_media_controls.xml @@ -67,7 +67,7 @@ <button name="close_btn" tool_tip="Zoom Back"/> </layout_panel> <layout_panel name="new_window"> - <button name="new_window_btn" tool_tip="URLをブラウザで開く"/> + <button name="new_window_btn" tool_tip="URL をブラウザで開く"/> </layout_panel> </layout_stack> </panel> |