From 3bdf6e553db20a1dc312e12a80797f035f93e3c7 Mon Sep 17 00:00:00 2001 From: Lirusaito Date: Thu, 24 Jan 2019 11:57:44 -0500 Subject: [PATCH] Add InactiveFloaterTransparency and ActiveFloaterTransparency settings Dear Users, This removes FloaterUnfocusedBackgroundOpaque, to achieve the same effect, modify InactiveFloaterTransparency, 1.5 should do the trick. PS: The settings are in the Vanity tab at the bottom. Now for developer nonsense: Also sync a bunch of the UI code with upstream Alchemy for opts and shtuff. Also let's translate the tooltips on the buttons on the top right of floaters Translators note that not all new strings have been translated yet as not all are upstream. --- indra/llui/llfloater.cpp | 175 ++++++++++++----- indra/llui/llfloater.h | 47 +++-- indra/llui/llfocusmgr.cpp | 63 +++--- indra/llui/llpanel.cpp | 8 +- indra/llui/lluictrl.cpp | 125 ++++++++---- indra/llui/lluictrl.h | 64 +++--- indra/newview/app_settings/settings.xml | 33 ++-- indra/newview/ascentprefsvan.cpp | 6 +- indra/newview/ascentprefsvan.h | 2 +- indra/newview/llappviewer.cpp | 32 ++- .../de/panel_preferences_ascent_vanity.xml | 1 - .../newview/skins/default/xui/de/strings.xml | 27 +++ .../en-us/panel_preferences_ascent_vanity.xml | 3 +- .../skins/default/xui/en-us/strings.xml | 12 ++ .../es/panel_preferences_ascent_vanity.xml | 1 - .../newview/skins/default/xui/es/strings.xml | 27 +++ .../fr/panel_preferences_ascent_vanity.xml | 1 - .../newview/skins/default/xui/it/strings.xml | 170 ++++++++++++++++ .../newview/skins/default/xui/pt/strings.xml | 182 +++++++++++++++++- 19 files changed, 778 insertions(+), 201 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index dac5a0282..f5fa3ece2 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -35,8 +35,6 @@ #include "linden_common.h" -#include "llmultifloater.h" - #include "llfocusmgr.h" #include "lluictrlfactory.h" @@ -56,10 +54,13 @@ #include "llcontrol.h" #include "lltabcontainer.h" #include "v2math.h" +#include "lltrans.h" +#include "llmultifloater.h" #include "llfasttimer.h" #include "airecursive.h" #include "llnotifications.h" + const S32 MINIMIZED_WIDTH = 160; const S32 CLOSE_BOX_FROM_TOP = 1; // use this to control "jumping" behavior when Ctrl-Tabbing @@ -104,14 +105,14 @@ std::string LLFloater::sButtonNames[BUTTON_COUNT] = std::string LLFloater::sButtonToolTips[BUTTON_COUNT] = { #ifdef LL_DARWIN - "Close (Cmd-W)", //BUTTON_CLOSE + "BUTTON_CLOSE_DARWIN", //"Close (Cmd-W)", //BUTTON_CLOSE #else - "Close (Ctrl-W)", //BUTTON_CLOSE + "BUTTON_CLOSE_WIN", //"Close (Ctrl-W)", //BUTTON_CLOSE #endif - "Restore", //BUTTON_RESTORE - "Minimize", //BUTTON_MINIMIZE - "Tear Off", //BUTTON_TEAR_OFF - "Edit", //BUTTON_EDIT + "BUTTON_RESTORE", //"Restore", //BUTTON_RESTORE + "BUTTON_MINIMIZE", //"Minimize", //BUTTON_MINIMIZE + "BUTTON_TEAR_OFF", //"Tear Off", //BUTTON_TEAR_OFF + "BUTTON_EDIT", //"Edit", //BUTTON_EDIT }; @@ -130,6 +131,31 @@ LLFloater::handle_map_t LLFloater::sFloaterMap; LLFloaterView* gFloaterView = NULL; +//static +void LLFloater::initClass() +{ + // translate tooltips for floater buttons + for (S32 i = 0; i < BUTTON_COUNT; i++) + { + sButtonToolTips[i] = LLTrans::getString( sButtonToolTips[i] ); + } + + LLControlVariable* ctrl = LLUI::sConfigGroup->getControl("ActiveFloaterTransparency"); + if (ctrl) + { + ctrl->getSignal()->connect(boost::bind(&LLFloater::updateActiveFloaterTransparency)); + updateActiveFloaterTransparency(); + } + + ctrl = LLUI::sConfigGroup->getControl("InactiveFloaterTransparency"); + if (ctrl) + { + ctrl->getSignal()->connect(boost::bind(&LLFloater::updateInactiveFloaterTransparency)); + updateInactiveFloaterTransparency(); + } + +} + LLFloater::LLFloater() : //FIXME: we should initialize *all* member variables here LLPanel(), mAutoFocus(TRUE), @@ -355,6 +381,18 @@ void LLFloater::initFloater(const std::string& title, } } +// static +void LLFloater::updateActiveFloaterTransparency() +{ + sActiveControlTransparency = LLUI::sConfigGroup->getF32("ActiveFloaterTransparency"); +} + +// static +void LLFloater::updateInactiveFloaterTransparency() +{ + sInactiveControlTransparency = LLUI::sConfigGroup->getF32("InactiveFloaterTransparency"); +} + void LLFloater::addResizeCtrls() { // Resize bars (sides) @@ -720,11 +758,6 @@ void LLFloater::applyRectControl() void LLFloater::applyTitle() { - if (gNoRender) - { - return; - } - if (!mDragHandle) { return; @@ -753,7 +786,7 @@ void LLFloater::setTitle( const std::string& title ) applyTitle(); } -std::string LLFloater::getTitle() +std::string LLFloater::getTitle() const { if (mTitle.empty()) { @@ -771,7 +804,7 @@ void LLFloater::setShortTitle( const std::string& short_title ) applyTitle(); } -std::string LLFloater::getShortTitle() +std::string LLFloater::getShortTitle() const { if (mShortTitle.empty()) { @@ -783,8 +816,6 @@ std::string LLFloater::getShortTitle() } } - - BOOL LLFloater::canSnapTo(const LLView* other_view) { if (NULL == other_view) @@ -1023,7 +1054,8 @@ void LLFloater::setFocus( BOOL b ) if (b) { // only push focused floaters to front of stack if not in midst of ctrl-tab cycle - if (!getHost() && !((LLFloaterView*)getParent())->getCycleMode()) + LLFloaterView * parent = dynamic_cast(getParent()); + if (!getHost() && parent && !parent->getCycleMode()) { if (!isFrontmost()) { @@ -1040,6 +1072,7 @@ void LLFloater::setFocus( BOOL b ) last_focus->setFocus(TRUE); } } + updateTransparency(b ? TT_ACTIVE : TT_INACTIVE); } // virtual @@ -1081,8 +1114,9 @@ void LLFloater::setForeground(BOOL front) releaseFocus(); } - if (front || !LLUI::sConfigGroup->getBOOL("FloaterUnfocusedBackgroundOpaque")) // Singu Note: This can be removed when InactiveFloaterTransparency is added - setBackgroundOpaque( front ); + setBackgroundOpaque( front ); + // Singu Note: Upstream isn't doing this, I can't see where they were actually going inactive. Maybe setFocus(false) isn't being called, but we have parity there.. + updateTransparency(front || getIsChrome() ? TT_ACTIVE : TT_INACTIVE); } } @@ -1191,7 +1225,7 @@ void LLFloater::removeDependentFloater(LLFloater* floaterp) floaterp->mDependeeHandle = LLHandle(); } -BOOL LLFloater::offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index) +BOOL LLFloater::offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index) { if( mButtonsEnabled[index] ) { @@ -1297,7 +1331,14 @@ void LLFloater::setFrontmost(BOOL take_focus) { // there are more than one floater view // so we need to query our parent directly - ((LLFloaterView*)getParent())->bringToFront(this, take_focus); + LLFloaterView * parent = dynamic_cast( getParent() ); + if (parent) + { + parent->bringToFront(this, take_focus); + } + + // Make sure to set the appropriate transparency type (STORM-732). + updateTransparency(hasFocus() || getIsChrome() ? TT_ACTIVE : TT_INACTIVE); } } @@ -1432,42 +1473,45 @@ void LLFloater::onClickClose() // virtual void LLFloater::draw() { + const F32 alpha = getCurrentTransparency(); + // draw background if( isBackgroundVisible() ) { + drawShadow(this); + S32 left = LLPANEL_BORDER_WIDTH; S32 top = getRect().getHeight() - LLPANEL_BORDER_WIDTH; S32 right = getRect().getWidth() - LLPANEL_BORDER_WIDTH; S32 bottom = LLPANEL_BORDER_WIDTH; - static LLColor4 shadow_color = LLUI::sColorsGroup->getColor("ColorDropShadow"); - static F32 shadow_offset = (F32)LLUI::sConfigGroup->getS32("DropShadowFloater"); - if (!isBackgroundOpaque()) - { - shadow_offset *= 0.2f; - shadow_color.mV[VALPHA] *= 0.5f; - } - gl_drop_shadow(left, top, right, bottom, - shadow_color, - ll_round(shadow_offset)); - // No transparent windows in simple UI + LLColor4 color; if (isBackgroundOpaque()) { - gl_rect_2d( left, top, right, bottom, getBackgroundColor() ); + color = getBackgroundColor(); } else { - gl_rect_2d( left, top, right, bottom, getTransparentColor() ); + color = getTransparentColor(); } - if(gFocusMgr.childHasKeyboardFocus(this) && !getIsChrome() && !getCurrentTitle().empty()) { + // We're not using images, use old-school flat colors + gl_rect_2d( left, top, right, bottom, color % alpha ); + // draw highlight on title bar to indicate focus. RDW - const LLFontGL* font = LLResMgr::getInstance()->getRes( LLFONT_SANSSERIF ); - LLRect r = getRect(); - gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1, - LLUI::sColorsGroup->getColor("TitleBarFocusColor"), 0, TRUE); + if(gFocusMgr.childHasKeyboardFocus(this) + && !getIsChrome() + && !getCurrentTitle().empty()) + { + static auto titlebar_focus_color = LLUI::sColorsGroup->getColor("TitleBarFocusColor"); + + const LLFontGL* font = LLFontGL::getFontSansSerif(); + LLRect r = getRect(); + gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1, + titlebar_focus_color % alpha, 0, TRUE); + } } } @@ -1524,6 +1568,49 @@ void LLFloater::draw() } } +void LLFloater::drawShadow(LLPanel* panel) +{ + S32 left = LLPANEL_BORDER_WIDTH; + S32 top = panel->getRect().getHeight() - LLPANEL_BORDER_WIDTH; + S32 right = panel->getRect().getWidth() - LLPANEL_BORDER_WIDTH; + S32 bottom = LLPANEL_BORDER_WIDTH; + + static LLUICachedControl shadow_offset_S32 ("DropShadowFloater", 0); + static LLColor4 shadow_color = LLUI::sColorsGroup->getColor("ColorDropShadow"); + F32 shadow_offset = (F32)shadow_offset_S32; + + if (!panel->isBackgroundOpaque()) + { + shadow_offset *= 0.2f; + shadow_color.mV[VALPHA] *= 0.5f; + } + gl_drop_shadow(left, top, right, bottom, + shadow_color % getCurrentTransparency(), + ll_round(shadow_offset)); +} + +void LLFloater::updateTransparency(LLView* view, ETypeTransparency transparency_type) +{ + if (view) + { + if (view->isCtrl()) + { + static_cast(view)->setTransparencyType(transparency_type); + } + + for (LLView* pChild : *view->getChildList()) + { + if ((pChild->getChildCount()) || (pChild->isCtrl())) + updateTransparency(pChild, transparency_type); + } + } +} + +void LLFloater::updateTransparency(ETypeTransparency transparency_type) +{ + updateTransparency(this, transparency_type); +} + void LLFloater::setCanMinimize(BOOL can_minimize) { // if removing minimize/restore button programmatically, @@ -2319,7 +2406,7 @@ LLRect LLFloaterView::getSnapRect() const return snap_rect; } -LLFloater *LLFloaterView::getFocusedFloater() +LLFloater *LLFloaterView::getFocusedFloater() const { for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { @@ -2332,7 +2419,7 @@ LLFloater *LLFloaterView::getFocusedFloater() return NULL; } -LLFloater *LLFloaterView::getFrontmost() +LLFloater *LLFloaterView::getFrontmost() const { for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) { @@ -2345,7 +2432,7 @@ LLFloater *LLFloaterView::getFrontmost() return NULL; } -LLFloater *LLFloaterView::getBackmost() +LLFloater *LLFloaterView::getBackmost() const { LLFloater* back_most = NULL; for ( child_list_const_iter_t child_it = getChildList()->begin(); child_it != getChildList()->end(); ++child_it) @@ -2380,7 +2467,7 @@ void LLFloaterView::syncFloaterTabOrder() } } -LLFloater* LLFloaterView::getParentFloater(LLView* viewp) +LLFloater* LLFloaterView::getParentFloater(LLView* viewp) const { LLView* parentp = viewp->getParent(); diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 0aeb11501..f53e2714f 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -94,16 +94,19 @@ class LLFloater : public LLPanel friend class LLFloaterView; friend class LLMultiFloater; public: - enum EFloaterButtons + enum EFloaterButton { - BUTTON_CLOSE, + BUTTON_CLOSE = 0, BUTTON_RESTORE, BUTTON_MINIMIZE, BUTTON_TEAR_OFF, BUTTON_EDIT, BUTTON_COUNT }; - + + // Load translations for tooltips for standard buttons + static void initClass(); + LLFloater(); LLFloater(const std::string& name); //simple constructor for data-driven initialization LLFloater( const std::string& name, const LLRect& rect, const std::string& title, @@ -164,9 +167,9 @@ public: void applyTitle(); const std::string& getCurrentTitle() const; void setTitle( const std::string& title); - std::string getTitle(); + std::string getTitle() const; void setShortTitle( const std::string& short_title ); - std::string getShortTitle(); + std::string getShortTitle() const; void setTitleVisible(bool visible); virtual void setMinimized(BOOL b); void moveResizeHandlesToFront(); @@ -174,8 +177,8 @@ public: void addDependentFloater(LLHandle dependent_handle, BOOL reposition = TRUE); LLFloater* getDependee() { return (LLFloater*)mDependeeHandle.get(); } void removeDependentFloater(LLFloater* dependent); - BOOL isMinimized() { return mMinimized; } - BOOL isFrontmost(); + BOOL isMinimized() const { return mMinimized; } + virtual BOOL isFrontmost(); BOOL isDependent() { return !mDependeeHandle.isDead(); } void setCanMinimize(BOOL can_minimize); void setCanClose(BOOL can_close); @@ -199,6 +202,7 @@ public: virtual BOOL handleDoubleClick(S32 x, S32 y, MASK mask); virtual BOOL handleMiddleMouseDown(S32 x, S32 y, MASK mask); virtual void draw(); + virtual void drawShadow(LLPanel* panel); virtual void onOpen() {} @@ -244,6 +248,8 @@ public: static BOOL getEditModeEnabled() { return sEditModeEnabled; } static LLMultiFloater* getFloaterHost() {return sHostp; } + void updateTransparency(ETypeTransparency transparency_type); + void enableResizeCtrls(bool enable, bool width = true, bool height = true); protected: @@ -259,21 +265,29 @@ protected: void destroy() { die(); } // Don't call this directly. You probably want to call close(). JC private: - void setForeground(BOOL b); // called only by floaterview void cleanupHandles(); // remove handles to dead floaters void createMinimizeButton(); void updateButtons(); void buildButtons(); - BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index); + BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButton index); void addResizeCtrls(); void layoutResizeCtrls(); + static void updateActiveFloaterTransparency(); + static void updateInactiveFloaterTransparency(); + void updateTransparency(LLView* view, ETypeTransparency transparency_type); + LLRect mExpandedRect; + +protected: LLDragHandle* mDragHandle; LLResizeBar* mResizeBar[4]; LLResizeHandle* mResizeHandle[4]; LLButton *mMinimizeButton; + + LLButton* mButtons[BUTTON_COUNT]; +private: BOOL mCanTearOff; BOOL mMinimized; BOOL mForeground; @@ -294,10 +308,7 @@ private: handle_set_t mDependents; bool mDragOnLeft; - BOOL mButtonsEnabled[BUTTON_COUNT]; -protected: - LLButton* mButtons[BUTTON_COUNT]; -private: + bool mButtonsEnabled[BUTTON_COUNT]; F32 mButtonScale; BOOL mAutoFocus; LLHandle mSnappedTo; @@ -344,7 +355,7 @@ public: /*virtual*/ void draw(); /*virtual*/ LLRect getSnapRect() const; - void refresh(); + /*virtual*/ void refresh(); void getNewFloaterPosition( S32* left, S32* top ); void resetStartingFloaterPosition(); @@ -373,10 +384,10 @@ public: void minimizeAllChildren(); // - LLFloater* getFrontmost(); - LLFloater* getBackmost(); - LLFloater* getParentFloater(LLView* viewp); - LLFloater* getFocusedFloater(); + LLFloater* getFrontmost() const; + LLFloater* getBackmost() const; + LLFloater* getParentFloater(LLView* viewp) const; + LLFloater* getFocusedFloater() const; void syncFloaterTabOrder(); // Returns z order of child provided. 0 is closest, larger numbers diff --git a/indra/llui/llfocusmgr.cpp b/indra/llui/llfocusmgr.cpp index 1be8be2b0..60983c9d4 100644 --- a/indra/llui/llfocusmgr.cpp +++ b/indra/llui/llfocusmgr.cpp @@ -33,10 +33,10 @@ const F32 FOCUS_FADE_TIME = 0.3f; LLFocusableElement::LLFocusableElement() -: mFocusLostCallback(NULL), - mFocusReceivedCallback(NULL), - mFocusChangedCallback(NULL), - mTopLostCallback(NULL) +: mFocusLostCallback(nullptr), + mFocusReceivedCallback(nullptr), + mFocusChangedCallback(nullptr), + mTopLostCallback(nullptr) { } @@ -146,14 +146,14 @@ struct LLFocusMgr::Impl LLFocusMgr gFocusMgr; LLFocusMgr::LLFocusMgr() -: mLockedView( NULL ), - mMouseCaptor( NULL ), - mKeyboardFocus( NULL ), - mLastKeyboardFocus( NULL ), - mDefaultKeyboardFocus( NULL ), - mLastDefaultKeyboardFocus( NULL ), +: mLockedView(nullptr ), + mMouseCaptor(nullptr ), + mKeyboardFocus(nullptr ), + mLastKeyboardFocus(nullptr ), + mDefaultKeyboardFocus(nullptr ), + mLastDefaultKeyboardFocus(nullptr ), mKeystrokesOnly(FALSE), - mTopCtrl( NULL ), + mTopCtrl(nullptr ), mAppHasFocus(TRUE), // Macs don't seem to notify us that we've gotten focus, so default to true mImpl(new LLFocusMgr::Impl) { @@ -163,22 +163,22 @@ LLFocusMgr::~LLFocusMgr() { mImpl->mFocusHistory.clear(); delete mImpl; - mImpl = NULL; + mImpl = nullptr; } void LLFocusMgr::releaseFocusIfNeeded( const LLView* view ) { if( childHasMouseCapture( view ) ) { - setMouseCapture( NULL ); + setMouseCapture(nullptr ); } if( childHasKeyboardFocus( view )) { if (view == mLockedView) { - mLockedView = NULL; - setKeyboardFocus( NULL ); + mLockedView = nullptr; + setKeyboardFocus(nullptr ); } else { @@ -188,7 +188,7 @@ void LLFocusMgr::releaseFocusIfNeeded( const LLView* view ) if( childIsTopCtrl( view ) ) { - setTopCtrl( NULL ); + setTopCtrl(nullptr); } } @@ -197,7 +197,7 @@ void LLFocusMgr::restoreDefaultKeyboardFocus(LLFocusableElement* current_default if (current_default_focus && mDefaultKeyboardFocus == current_default_focus) { setDefaultKeyboardFocus(mLastDefaultKeyboardFocus); - mLastDefaultKeyboardFocus = NULL; + mLastDefaultKeyboardFocus = nullptr; } } @@ -206,7 +206,7 @@ void LLFocusMgr::restoreKeyboardFocus(LLFocusableElement* current_focus) if (current_focus && mKeyboardFocus == current_focus) { setKeyboardFocus(mLastKeyboardFocus); - mLastKeyboardFocus = NULL; + mLastKeyboardFocus = nullptr; } } @@ -219,7 +219,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL focus_dirty = false; if (mLockedView && - (new_focus == NULL || + (new_focus == nullptr || (new_focus != mLockedView && dynamic_cast(new_focus) && !dynamic_cast(new_focus)->hasAncestor(mLockedView)))) @@ -291,7 +291,7 @@ void LLFocusMgr::setKeyboardFocus(LLFocusableElement* new_focus, BOOL lock, BOOL // If we've got a default keyboard focus, and the caller is // releasing keyboard focus, move to the default. - if (mDefaultKeyboardFocus != NULL && mKeyboardFocus == NULL) + if (mDefaultKeyboardFocus != nullptr && mKeyboardFocus == nullptr) { mDefaultKeyboardFocus->setFocus(TRUE); } @@ -343,7 +343,7 @@ BOOL LLFocusMgr::childHasKeyboardFocus(const LLView* parent ) const // Returns TRUE is parent or any descedent of parent is the mouse captor. BOOL LLFocusMgr::childHasMouseCapture( const LLView* parent ) const { - if( mMouseCaptor && dynamic_cast(mMouseCaptor) != NULL ) + if( mMouseCaptor && dynamic_cast(mMouseCaptor) != nullptr ) { LLView* captor_view = (LLView*)mMouseCaptor; while( captor_view ) @@ -364,23 +364,24 @@ void LLFocusMgr::removeKeyboardFocusWithoutCallback( const LLFocusableElement* f // in order to unlock it if (focus == mLockedView) { - mLockedView = NULL; + mLockedView = nullptr; } + if (mKeyboardFocus == focus) { - mKeyboardFocus = NULL; + mKeyboardFocus = nullptr; } if (mLastKeyboardFocus == focus) { - mLastKeyboardFocus = NULL; + mLastKeyboardFocus = nullptr; } if (mDefaultKeyboardFocus == focus) { - mDefaultKeyboardFocus = NULL; + mDefaultKeyboardFocus = nullptr; } if (mLastDefaultKeyboardFocus == focus) { - mLastDefaultKeyboardFocus = NULL; + mLastDefaultKeyboardFocus = nullptr; } } @@ -430,7 +431,7 @@ void LLFocusMgr::removeMouseCaptureWithoutCallback( const LLMouseHandler* captor { if( mMouseCaptor == captor ) { - mMouseCaptor = NULL; + mMouseCaptor = nullptr; } } @@ -470,7 +471,7 @@ void LLFocusMgr::removeTopCtrlWithoutCallback( const LLUICtrl* top_view ) { if( mTopCtrl == top_view ) { - mTopCtrl = NULL; + mTopCtrl = nullptr; } } @@ -481,7 +482,7 @@ void LLFocusMgr::lockFocus() void LLFocusMgr::unlockFocus() { - mLockedView = NULL; + mLockedView = nullptr; } F32 LLFocusMgr::getFocusFlashAmt() const @@ -516,7 +517,7 @@ void LLFocusMgr::setAppHasFocus(BOOL focus) // release focus from "top ctrl"s, which generally hides them if (!focus && mTopCtrl) { - setTopCtrl(NULL); + setTopCtrl(nullptr); } mAppHasFocus = focus; } @@ -532,7 +533,7 @@ LLUICtrl* LLFocusMgr::getLastFocusForGroup(LLView* subtree_root) const return static_cast(found_it->second.get()); } } - return NULL; + return nullptr; } void LLFocusMgr::clearLastFocusForGroup(LLView* subtree_root) diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index b587de148..a42853023 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -196,14 +196,16 @@ void LLPanel::draw() // draw background if( mBgVisible ) { - LLRect local_rect = getLocalRect(); + F32 alpha = getCurrentTransparency(); + + LLRect&& local_rect = getLocalRect(); if (mBgOpaque ) { - gl_rect_2d( local_rect, mBgColorOpaque ); + gl_rect_2d( local_rect, mBgColorOpaque % alpha); } else { - gl_rect_2d( local_rect, mBgColorAlpha ); + gl_rect_2d( local_rect, mBgColorAlpha % alpha); } } diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 6ff4260bd..26acc25da 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -38,6 +38,9 @@ static LLRegisterWidget r("ui_ctrl"); +F32 LLUICtrl::sActiveControlTransparency = 1.0f; +F32 LLUICtrl::sInactiveControlTransparency = 1.0f; + LLUICtrl::CallbackParam::CallbackParam() : name("name"), function_name("function"), @@ -94,25 +97,26 @@ const LLUICtrl::Params& LLUICtrl::getDefaultParams() LLUICtrl::LLUICtrl(const LLUICtrl::Params& p, const LLViewModelPtr& viewmodel) : LLView(p), + mCommitSignal(nullptr), + mValidateSignal(nullptr), + mMouseEnterSignal(nullptr), + mMouseLeaveSignal(nullptr), + mMouseDownSignal(nullptr), + mMouseUpSignal(nullptr), + mRightMouseDownSignal(nullptr), + mRightMouseUpSignal(nullptr), + mDoubleClickSignal(nullptr), + mViewModel(viewmodel), + mEnabledControlVariable(nullptr), + mDisabledControlVariable(nullptr), + mMakeVisibleControlVariable(nullptr), + mMakeInvisibleControlVariable(nullptr), mIsChrome(FALSE), mRequestsFront(p.requests_front), mTabStop(TRUE), mTentative(FALSE), - mViewModel(viewmodel), - mEnabledControlVariable(NULL), - mDisabledControlVariable(NULL), - mMakeVisibleControlVariable(NULL), - mMakeInvisibleControlVariable(NULL), - mCommitSignal(NULL), - mValidateSignal(NULL), - mMouseEnterSignal(NULL), - mMouseLeaveSignal(NULL), - mMouseDownSignal(NULL), - mMouseUpSignal(NULL), - mRightMouseDownSignal(NULL), - mRightMouseUpSignal(NULL), - mDoubleClickSignal(NULL), - mCommitOnReturn(FALSE) + mCommitOnReturn(FALSE), + mTransparencyType(TT_DEFAULT) { } @@ -210,20 +214,21 @@ LLUICtrl::LLUICtrl(const std::string& name, const LLRect rect, BOOL mouse_opaque mTabStop( TRUE ), mTentative( FALSE ), mViewModel(LLViewModelPtr(new LLViewModel)), - mEnabledControlVariable(NULL), - mDisabledControlVariable(NULL), - mMakeVisibleControlVariable(NULL), - mMakeInvisibleControlVariable(NULL), - mCommitSignal(NULL), - mValidateSignal(NULL), - mMouseEnterSignal(NULL), - mMouseLeaveSignal(NULL), - mMouseDownSignal(NULL), - mMouseUpSignal(NULL), - mRightMouseDownSignal(NULL), - mRightMouseUpSignal(NULL), - mDoubleClickSignal(NULL), - mCommitOnReturn(FALSE) + mEnabledControlVariable(nullptr), + mDisabledControlVariable(nullptr), + mMakeVisibleControlVariable(nullptr), + mMakeInvisibleControlVariable(nullptr), + mCommitSignal(nullptr), + mValidateSignal(nullptr), + mMouseEnterSignal(nullptr), + mMouseLeaveSignal(nullptr), + mMouseDownSignal(nullptr), + mMouseUpSignal(nullptr), + mRightMouseDownSignal(nullptr), + mRightMouseUpSignal(nullptr), + mDoubleClickSignal(nullptr), + mCommitOnReturn(FALSE), + mTransparencyType(TT_DEFAULT) { if(commit_callback) setCommitCallback(commit_callback); @@ -338,6 +343,8 @@ BOOL LLUICtrl::handleMouseDown(S32 x, S32 y, MASK mask) { (*mMouseDownSignal)(this,x,y,mask); } + LL_DEBUGS() << "LLUICtrl::handleMousedown - handled is returning as: " << handled << " " << LL_ENDL; + return handled; } @@ -349,6 +356,7 @@ BOOL LLUICtrl::handleMouseUp(S32 x, S32 y, MASK mask) { (*mMouseUpSignal)(this,x,y,mask); } + return handled; } @@ -466,7 +474,7 @@ void LLUICtrl::setEnabledControlVariable(LLControlVariable* control) if (mEnabledControlVariable) { mEnabledControlConnection.disconnect(); // disconnect current signal - mEnabledControlVariable = NULL; + mEnabledControlVariable = nullptr; } if (control) { @@ -481,7 +489,7 @@ void LLUICtrl::setDisabledControlVariable(LLControlVariable* control) if (mDisabledControlVariable) { mDisabledControlConnection.disconnect(); // disconnect current signal - mDisabledControlVariable = NULL; + mDisabledControlVariable = nullptr; } if (control) { @@ -496,7 +504,7 @@ void LLUICtrl::setMakeVisibleControlVariable(LLControlVariable* control) if (mMakeVisibleControlVariable) { mMakeVisibleControlConnection.disconnect(); // disconnect current signal - mMakeVisibleControlVariable = NULL; + mMakeVisibleControlVariable = nullptr; } if (control) { @@ -511,7 +519,7 @@ void LLUICtrl::setMakeInvisibleControlVariable(LLControlVariable* control) if (mMakeInvisibleControlVariable) { mMakeInvisibleControlConnection.disconnect(); // disconnect current signal - mMakeInvisibleControlVariable = NULL; + mMakeInvisibleControlVariable = nullptr; } if (control) { @@ -526,7 +534,12 @@ bool LLUICtrl::controlListener(const LLSD& newvalue, LLHandle handle, LLUICtrl* ctrl = handle.get(); if (ctrl) { - if (type == "enabled") + if (type == "value") + { + ctrl->setValue(newvalue); + return true; + } + else if (type == "enabled") { ctrl->setEnabled(newvalue.asBoolean()); return true; @@ -565,19 +578,19 @@ BOOL LLUICtrl::setLabelArg( const std::string& key, const LLStringExplicit& text // virtual LLCtrlSelectionInterface* LLUICtrl::getSelectionInterface() { - return NULL; + return nullptr; } // virtual LLCtrlListInterface* LLUICtrl::getListInterface() { - return NULL; + return nullptr; } // virtual LLCtrlScrollInterface* LLUICtrl::getScrollInterface() { - return NULL; + return nullptr; } BOOL LLUICtrl::hasFocus() const @@ -603,7 +616,7 @@ void LLUICtrl::setFocus(BOOL b) { if( gFocusMgr.childHasKeyboardFocus(this)) { - gFocusMgr.setKeyboardFocus( NULL ); + gFocusMgr.setKeyboardFocus(nullptr ); } } } @@ -1008,11 +1021,11 @@ LLUICtrl* LLUICtrl::getParentUICtrl() const } // *TODO: Deprecate; for backwards compatability only: -boost::signals2::connection LLUICtrl::setCommitCallback( boost::function cb, void* data) +boost::signals2::connection LLUICtrl::setCommitCallback( std::function cb, void* data) { return setCommitCallback( boost::bind(cb, _1, data)); } -boost::signals2::connection LLUICtrl::setValidateBeforeCommit( boost::function cb ) +boost::signals2::connection LLUICtrl::setValidateBeforeCommit( std::function cb ) { if (!mValidateSignal) mValidateSignal = new enable_signal_t(); return mValidateSignal->connect(boost::bind(cb, _2)); @@ -1030,7 +1043,6 @@ BOOL LLUICtrl::getTentative() const return mTentative; } - // virtual void LLUICtrl::setColor(const LLColor4& color) { } @@ -1047,6 +1059,37 @@ void LLUICtrl::setMinValue(LLSD min_value) void LLUICtrl::setMaxValue(LLSD max_value) { } +F32 LLUICtrl::getCurrentTransparency() +{ + F32 alpha = 0; + + switch(mTransparencyType) + { + case TT_DEFAULT: + alpha = getDrawContext().mAlpha; + break; + + case TT_ACTIVE: + alpha = sActiveControlTransparency; + break; + + case TT_INACTIVE: + alpha = sInactiveControlTransparency; + break; + + case TT_FADING: + alpha = sInactiveControlTransparency / 2.f; + break; + } + + return alpha; +} + +void LLUICtrl::setTransparencyType(ETypeTransparency type) +{ + mTransparencyType = type; +} + boost::signals2::connection LLUICtrl::setCommitCallback(const CommitCallbackParam& cb) { return setCommitCallback(initCommitCallback(cb)); diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index ca0e11d16..ff28f2519 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -34,16 +34,11 @@ #ifndef LL_LLUICTRL_H #define LL_LLUICTRL_H +//#include "llboost.h" #include "llrect.h" #include "llsd.h" #include "llregistry.h" -#ifndef BOOST_FUNCTION_HPP_INCLUDED -#include -#define BOOST_FUNCTION_HPP_INCLUDED -#endif -#include - #include "llinitparam.h" #include "llview.h" #include "llviewmodel.h" // *TODO move dependency to .cpp file @@ -128,6 +123,13 @@ public: Params(); }; + enum ETypeTransparency + { + TT_DEFAULT, + TT_ACTIVE, // focused floater + TT_INACTIVE, // other floaters + TT_FADING, // fading toast + }; /*virtual*/ ~LLUICtrl(); void initFromParams(const Params& p); @@ -147,26 +149,26 @@ public: // We shouldn't ever need to set this directly //virtual void setViewModel(const LLViewModelPtr&); - virtual BOOL postBuild(); + BOOL postBuild() override; public: // LLView interface /*virtual*/ void initFromXML(LLXMLNodePtr node, LLView* parent); /*virtual*/ LLXMLNodePtr getXML(bool save_children = true) const; - /*virtual*/ BOOL setLabelArg( const std::string& key, const LLStringExplicit& text ); - /*virtual*/ BOOL isCtrl() const; - /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask); - /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); - /*virtual*/ BOOL canFocusChildren() const; - /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask); - /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); - /*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask); - /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask); + /*virtual*/ BOOL setLabelArg( const std::string& key, const LLStringExplicit& text ) override; + /*virtual*/ BOOL isCtrl() const override; + /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask) override; + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask) override; + /*virtual*/ BOOL canFocusChildren() const override; + /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask) override; + /*virtual*/ BOOL handleMouseUp(S32 x, S32 y, MASK mask) override; + /*virtual*/ BOOL handleRightMouseDown(S32 x, S32 y, MASK mask) override; + /*virtual*/ BOOL handleRightMouseUp(S32 x, S32 y, MASK mask) override; + /*virtual*/ BOOL handleDoubleClick(S32 x, S32 y, MASK mask) override; // From LLFocusableElement - /*virtual*/ void setFocus( BOOL b ); - /*virtual*/ BOOL hasFocus() const; + /*virtual*/ void setFocus( BOOL b ) override; + /*virtual*/ BOOL hasFocus() const override; // New virtuals @@ -207,11 +209,17 @@ public: // Clear any user-provided input (text in a text editor, checked checkbox, // selected radio button, etc.). Defaults to no-op. virtual void clear(); + virtual void setColor(const LLColor4& color); virtual void setAlpha(F32 alpha); virtual void setMinValue(LLSD min_value); virtual void setMaxValue(LLSD max_value); + F32 getCurrentTransparency(); + + void setTransparencyType(ETypeTransparency type); + ETypeTransparency getTransparencyType() const {return mTransparencyType;} + BOOL focusNextItem(BOOL text_entry_only); BOOL focusPrevItem(BOOL text_entry_only); virtual // Singu Note: focusFirstItem is overridden for our old chat ui to prevent focusing on topmost uictrls. @@ -248,8 +256,8 @@ public: boost::signals2::connection setDoubleClickCallback( const mouse_signal_t::slot_type& cb ); // *TODO: Deprecate; for backwards compatability only: - boost::signals2::connection setCommitCallback( boost::function cb, void* data); - boost::signals2::connection setValidateBeforeCommit( boost::function cb ); + boost::signals2::connection setCommitCallback( std::function cb, void* data); + boost::signals2::connection setValidateBeforeCommit( std::function cb ); static LLView* fromXML(LLXMLNodePtr node, LLView* parent, class LLUICtrlFactory* factory); @@ -266,9 +274,13 @@ public: template class CallbackRegistry : public LLRegistrySingleton {}; - class CommitCallbackRegistry : public CallbackRegistry{}; + class CommitCallbackRegistry : public CallbackRegistry + { + }; // the enable callback registry is also used for visiblity callbacks - class EnableCallbackRegistry : public CallbackRegistry{}; + class EnableCallbackRegistry : public CallbackRegistry + { + }; protected: @@ -297,6 +309,10 @@ protected: boost::signals2::connection mMakeVisibleControlConnection; LLControlVariable* mMakeInvisibleControlVariable; boost::signals2::connection mMakeInvisibleControlConnection; + + static F32 sActiveControlTransparency; + static F32 sInactiveControlTransparency; + private: BOOL mIsChrome; @@ -304,6 +320,8 @@ private: BOOL mTabStop; BOOL mTentative; + ETypeTransparency mTransparencyType; + bool mCommitOnReturn; class DefaultTabGroupFirstSorter; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 2af8784f9..c1e976a93 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -1176,17 +1176,6 @@ Found in Advanced->Rendering->Info Displays Value 0 - FloaterUnfocusedBackgroundOpaque - - Comment - Disables floaters going transparent when not in focus, may conflict with some skins, though. - Persist - 1 - Type - Boolean - Value - 0 - FSSynchronizeTextureMaps Comment @@ -2577,6 +2566,17 @@ This should be as low as possible, but too low may break functionality Value 300.0 + ActiveFloaterTransparency + + Comment + Transparency of active floaters (floaters that have focus) + Persist + 1 + Type + F32 + Value + 1 + AdvanceSnapshot Comment @@ -9312,6 +9312,17 @@ This should be as low as possible, but too low may break functionality Value 1 + InactiveFloaterTransparency + + Comment + Transparency of inactive floaters (floaters that have no focus) + Persist + 1 + Type + F32 + Value + 1 + InBandwidth Comment diff --git a/indra/newview/ascentprefsvan.cpp b/indra/newview/ascentprefsvan.cpp index aaa1130b0..0c6216647 100644 --- a/indra/newview/ascentprefsvan.cpp +++ b/indra/newview/ascentprefsvan.cpp @@ -128,7 +128,8 @@ void LLPrefsAscentVan::refreshValues() mCustomizeAnim = gSavedSettings.getBOOL("LiruCustomizeAnim"); mAnnounceSnapshots = gSavedSettings.getBOOL("AnnounceSnapshots"); mAnnounceStreamMetadata = gSavedSettings.getBOOL("AnnounceStreamMetadata"); - mUnfocusedFloatersOpaque = gSavedSettings.getBOOL("FloaterUnfocusedBackgroundOpaque"); + mInactiveFloaterTransparency = gSavedSettings.getF32("InactiveFloaterTransparency"); + mActiveFloaterTransparency = gSavedSettings.getF32("ActiveFloaterTransparency"); mCompleteNameProfiles = gSavedSettings.getBOOL("SinguCompleteNameProfiles"); mScriptErrorsStealFocus = gSavedSettings.getBOOL("LiruScriptErrorsStealFocus"); mConnectToNeighbors = gSavedSettings.getBOOL("AlchemyConnectToNeighbors"); @@ -202,7 +203,8 @@ void LLPrefsAscentVan::cancel() gSavedSettings.setBOOL("LiruCustomizeAnim", mCustomizeAnim); gSavedSettings.setBOOL("AnnounceSnapshots", mAnnounceSnapshots); gSavedSettings.setBOOL("AnnounceStreamMetadata", mAnnounceStreamMetadata); - gSavedSettings.setBOOL("FloaterUnfocusedBackgroundOpaque", mUnfocusedFloatersOpaque); + gSavedSettings.setF32("InactiveFloaterTransparency", mInactiveFloaterTransparency); + gSavedSettings.setF32("ActiveFloaterTransparency", mActiveFloaterTransparency); gSavedSettings.setBOOL("SinguCompleteNameProfiles", mCompleteNameProfiles); gSavedSettings.setBOOL("LiruScriptErrorsStealFocus", mScriptErrorsStealFocus); gSavedSettings.setBOOL("AlchemyConnectToNeighbors", mConnectToNeighbors); diff --git a/indra/newview/ascentprefsvan.h b/indra/newview/ascentprefsvan.h index 676042c13..d8e27338e 100644 --- a/indra/newview/ascentprefsvan.h +++ b/indra/newview/ascentprefsvan.h @@ -62,7 +62,7 @@ private: bool mCustomizeAnim; bool mAnnounceSnapshots; bool mAnnounceStreamMetadata; - bool mUnfocusedFloatersOpaque; + F32 mInactiveFloaterTransparency, mActiveFloaterTransparency; bool mCompleteNameProfiles; bool mScriptErrorsStealFocus; bool mConnectToNeighbors; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 6cdf1fb46..9ae068e77 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -773,7 +773,6 @@ bool LLAppViewer::init() writeSystemInfo(); - ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// @@ -818,7 +817,14 @@ bool LLAppViewer::init() LLUrlAction::setOpenURLInternalCallback(boost::bind(&LLWeb::loadURLInternal, _1, LLStringUtil::null, LLStringUtil::null)); LLUrlAction::setOpenURLExternalCallback(boost::bind(&LLWeb::loadURLExternal, _1, true, LLStringUtil::null)); LLUrlAction::setExecuteSLURLCallback(&LLURLDispatcher::dispatchFromTextEditor); - + + LL_INFOS("InitInfo") << "UI initialization is done." << LL_ENDL ; + + // Load translations for tooltips + LLFloater::initClass(); + + ///////////////////////////////////////////////// + LLToolMgr::getInstance(); // Initialize tool manager if not already instantiated ///////////////////////////////////////////////// @@ -884,7 +890,7 @@ bool LLAppViewer::init() std::ostringstream msg; msg << LLTrans::getString("MBUnableToAccessFile"); OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK); - return 1; + return true; } LL_INFOS("InitInfo") << "Cache initialization is done." << LL_ENDL ; @@ -923,10 +929,9 @@ bool LLAppViewer::init() msg, LLStringUtil::null, OSMB_OK); - return 0; + return false; } -#if (_M_IX86_FP > 1 || defined(__SSE2__)) // Without SSE2 support we will crash almost immediately, warn here. if (!gSysCPU.hasSSE2()) { @@ -938,23 +943,8 @@ bool LLAppViewer::init() msg, LLStringUtil::null, OSMB_OK); - return 0; + return false; } -#elif (_M_IX86_FP == 1 || defined(__SSE__)) - // Without SSE support we will crash almost immediately, warn here. - if (!gSysCPU.hasSSE()) - { - // can't use an alert here since we're exiting and - // all hell breaks lose. - std::string msg = LNotificationTemplates::instance().getGlobalString("UnsupportedCPUSSE2"); - LLStringUtil::format(msg,LLTrans::getDefaultArgs()); - OSMessageBox( - msg, - LLStringUtil::null, - OSMB_OK); - return 0; - } -#endif // alert the user if they are using unsupported hardware if(!gSavedSettings.getBOOL("AlertedUnsupportedHardware")) diff --git a/indra/newview/skins/default/xui/de/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/de/panel_preferences_ascent_vanity.xml index 92fec0dc5..c403b9c11 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_ascent_vanity.xml @@ -11,7 +11,6 @@ - diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index 76d75d7c4..8d1ab98ee 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -140,6 +140,33 @@ Bezahlen Teleportangebot an Freundschaftsangebot + + Entfernen von Freunden + + + Schließen (⌘W) + + + Schließen (Strg+W) + + + Schließen + + + Wiederherstellen + + + Minimieren + + + Abnehmen + + + Andocken + + + Hilfe anzeigen + Suchen... diff --git a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml index 52827e6b0..72d9b4c51 100644 --- a/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/en-us/panel_preferences_ascent_vanity.xml @@ -12,13 +12,14 @@ - Sound played when regions will restart: + + diff --git a/indra/newview/skins/default/xui/en-us/strings.xml b/indra/newview/skins/default/xui/en-us/strings.xml index b34d3d165..af87e8956 100644 --- a/indra/newview/skins/default/xui/en-us/strings.xml +++ b/indra/newview/skins/default/xui/en-us/strings.xml @@ -154,6 +154,18 @@ Make sure you entered the correct Login URI. An example of a Login URI is: \"htt Pay Offer Teleport to Friend Request + Friend Removal + + + Close (⌘W) + Close (Ctrl+W) + Close + Restore + Minimize + Tear Off + Dock + Show Help + Edit Searching... diff --git a/indra/newview/skins/default/xui/es/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/es/panel_preferences_ascent_vanity.xml index 66bd3e005..504a294af 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_ascent_vanity.xml @@ -12,7 +12,6 @@ - diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index ac9282a11..c2c361fe8 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -148,6 +148,33 @@ Asegurate que has ingresado el URI de inicio de sesión correcto. Un ejemplo de Pagar Ofrecer Teleporte a Ofrecer Amistad + + Eliminación de amigos + + + Cerrar (⌘W) + + + Cerrar (Ctrl+W) + + + Cerrar + + + Maximizar + + + Minimizar + + + Separar la ventana + + + Fijar + + + Ver la Ayuda + Buscando... diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml index 6bc3cf598..e2e3fcc2d 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_ascent_vanity.xml @@ -12,7 +12,6 @@ - diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 4d12001d0..9de8a6d60 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -133,6 +133,176 @@ Solo un singolo oggetto può essere creato qui + + Non puoi indossare una cartella che contiene più di [AMOUNT] elementi. Per modificare questo limite, accedi ad Avanzate > Mostra impostazioni di debug > WearFolderLimit. + + + + Questo link porta a una pagina nel dominio ufficiale SecondLife.com o LindenLab.com. + + + Non puoi rezzare articoli dalla cartella degli annunci di Marketplace + + + Non puoi inserire nella cartella degli annunci in Marketplace gli articoli che indossi + + + La profondità delle caselle nidificate è maggiore di [AMOUNT]. Diminuisci la profondità delle cartelle nidificate; se necessario, raggruppa gli articoli. + + + Il numero di sottocartelle è maggiore di [AMOUNT]. Diminuisci il numero delle cartelle nel tuo annuncio; se necessario, raggruppa gli articoli. + + + Il numero di articoli è maggiore di [AMOUNT]. Per vendere più di [AMOUNT] articoli in un annuncio, devi raggruppare alcuni di essi. + + + Il numero di articoli in magazzino è maggiore di [AMOUNT]. + + + Puoi trascinare elementi o cartelle solo nelle schede TUTTI o NON ASSOCIATO. Seleziona una di quelle schede e sposta nuovamente gli elementi o le cartelle. + + + Almeno uno di questi oggetti non può essere venduto o trasferito + + + Puoi aggiungere a Marketplace solo gli articoli nel tuo inventario + + + Non puoi inserire cartelle o articoli collegati tramite link nel Marketplace + + + Non puoi inserire biglietti da visita in Marketplace + + + non puoi muovere un annuncio attivo + + + Non puoi spostare la cartella principale degli annunci di Marketplace + + + Tutti gli articoli in una cartella di magazzino devono essere dello stesso tipo e con le stesse autorizzazioni + + + Non puoi spostare una cartella nella relativa cartella secondaria + + + Non puoi spostare una cartella in se stessa + + + Clicca per visitare questa pagina web + + + Clicca per avere maggiori informazioni sul luogo + + + Clicca per vedere il profilo di questo residente + + + Ulteriori informazioni su questo Residente + + + Clicca per disattivare l'audio di questo residente + + + Clicca per attivare l'audio del residente + + + Clicca per inviare un IM a questo residente + + + Clicca per pagare il residente + + + Fai clic per inviare un'offerta di teleport al residente + + + Fai clic per inviare una richiesta di amicizia al residente + + + Clicca per vedere la descrizione del gruppo + + + Clicca per vedere la descrizione dell'evento + + + Clicca per vedere questa inserzione + + + Clicca per vedere la descrizione del lotto + + + Clicca per effettuare il teleport a questa destinazione + + + Clicca per vedere la descrizione dell'oggetto + + + Clicca per vedere questo posto sulla mappa + + + Clicca per avviare il comando secondlife:// + + + + Fai clic per comporre un'email + + + Teleportati a + + + Mostra la mappa per + + + Disattiva audio + + + Riattiva audio + + + IM + + + Paga + + + Offri teleport a + + + Richiesta di amicizia + + + Rimozione amico + + + Chiudi (⌘W) + + + Chiudi (Ctrl+W) + + + Chiudi + + + Ripristina + + + Minimizza + + + Distacca + + + Àncora + + + Mostra Aiuto + + + Ricerca in corso... + + + Nessun risultato. + Recupero dati in corso... diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ee9dc7f60..02ac1ceb5 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -910,11 +910,27 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Controle sua camera + + Teletransportá-lo + + + Forçar o avatar a sentar + (Você) - - Teletransportá-lo + + + Suprimir alertas ao gerenciar listas de acesso ao terreno + + + Substituir suas animações padrão + + + Retornar objetos em seu nome + + + (desconhecido)! Público geral @@ -1204,6 +1220,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Perna direita + + Esqueleto aprimorado + Baixo @@ -1225,6 +1244,9 @@ Pessoas com contas gratuitas não poderão acessar o Second Life no momento para Arraste um marco para adicioná-lo aos seus favoritos. + + Nenhum item correspondente encontrado. Verifique a ortografia de sua cadeia de pesquisa e tente novamente. + Você não possui uma cópia desta textura no seu inventário @@ -4327,6 +4349,15 @@ Denunciar abuso A imagem excede o limite [WIDTH]*[HEIGHT] + + O tamanho máx. do look é [WIDTH]*[HEIGHT]. Redimensione ou use outra imagem + + + O tamanho máx. do look é [WIDTH]*[HEIGHT]. Selecione outra textura + + + Não foi possível confirmar as dimensões da foto. Aguarde até que o tamanho da foto seja exibido no seletor + Aconteceu algo inesperado, apesar de termos tentado impedir isso. @@ -4358,6 +4389,9 @@ Denunciar abuso US$ [AMOUNT] + + Banimento do grupo + Plano @@ -4780,9 +4814,18 @@ Tente colocar o caminho do editor entre aspas. Destinos + + Facebook + + + Flickr + Gestos + + Status da grade + Como @@ -4795,6 +4838,9 @@ Tente colocar o caminho do editor entre aspas. Mercado + + Marketplace + Mini Mapa @@ -4819,6 +4865,9 @@ Tente colocar o caminho do editor entre aspas. Perfil + + Relatar abuso + Buscar @@ -4828,6 +4877,9 @@ Tente colocar o caminho do editor entre aspas. Falar + + Twitter + Controles da câmera @@ -4858,9 +4910,18 @@ Tente colocar o caminho do editor entre aspas. Destinos de interesse + + Publicar no Facebook + + + Carregar no Flickr + Gestos para seu avatar + + Mostrar status da grade atual + Como executar tarefas comuns @@ -4873,6 +4934,9 @@ Tente colocar o caminho do editor entre aspas. Faça compras + + Venda suas criações + Mostrar quem está aqui @@ -4897,6 +4961,9 @@ Tente colocar o caminho do editor entre aspas. Edite ou visualize seu perfil + + Relatar abuso + Encontre lugares, eventos, pessoas @@ -4906,6 +4973,9 @@ Tente colocar o caminho do editor entre aspas. Fale com pessoas próximas usando seu microfone + + Twitter + Alterar o ângulo da câmera @@ -4981,6 +5051,87 @@ Tente colocar o caminho do editor entre aspas. [Usuário] + + Experiência + + + (nenhuma experiência) + + + (experiência sem título) + + + Dentro do terreno + + + Dentro da grade + + + PERMITIDO + + + BLOQUEADO + + + COLABORADOR + + + ADMINISTRADOR + + + RECENTE + + + PRÓPRIAS + + + ([EXPERIENCES], máx. [MAXEXPERIENCES]) + + + assumir seus controles + + + acionar animações no seu avatar + + + anexar ao avatar + + + rastrear sua câmera + + + controlar sua câmera + + + teletransportar você + + + aceitar automaticamente permissões de experiência + + + realizar uma operação desconhecida: [Permission] + + + Assumir o controle + + + Acionar animações + + + Anexar + + + Rastrear câmera + + + Controlar câmera + + + Teletransportar + + + Autorização + As conversas não estão sendo registradas. Para começar a manter um registro, selecione "Salvar: apenas registro" ou "Salvar: registro e transcrições" em Preferências> Bate-papo. @@ -4990,4 +5141,31 @@ Tente colocar o caminho do editor entre aspas. Não há conversas registradas. Depois que você entrar em contato com alguém, ou alguém entrar em contato com você, um registro será exibido aqui. + + Carregando... + + + n/d + + + -Lista vazia- + + + Padrão + + + (nenhum) + + + Sem limite + + + A forma física contém triângulos muito pequenos. Tente simplificar o modelo físico. + + + A forma física contém dados de confirmação ruins. Tente consertar o modelo físico. + + + A forma física não tem a versão correta. Defina a versão correta para o modelo físico. +