diff options
Diffstat (limited to 'indra/newview/lltexturectrl.cpp')
-rw-r--r-- | indra/newview/lltexturectrl.cpp | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index 7bdea15ac4..29dbc08fae 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -111,7 +111,9 @@ public: const std::string& label, PermissionMask immediate_filter_perm_mask, PermissionMask non_immediate_filter_perm_mask, - BOOL can_apply_immediately); + BOOL can_apply_immediately, + const std::string& fallback_image_name); + virtual ~LLFloaterTexturePicker(); // LLView overrides @@ -164,12 +166,13 @@ protected: LLTextureCtrl* mOwner; LLUUID mImageAssetID; // Currently selected texture + std::string mFallbackImageName; // What to show if currently selected texture is null. LLUUID mWhiteImageAssetID; LLUUID mSpecialCurrentImageAssetID; // Used when the asset id has no corresponding texture in the user's inventory. LLUUID mOriginalImageAssetID; - std::string mLabel; + std::string mLabel; LLTextBox* mTentativeLabel; LLTextBox* mResolutionLabel; @@ -194,7 +197,8 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( const std::string& label, PermissionMask immediate_filter_perm_mask, PermissionMask non_immediate_filter_perm_mask, - BOOL can_apply_immediately) + BOOL can_apply_immediately, + const std::string& fallback_image_name) : LLFloater( std::string("texture picker"), rect, @@ -203,6 +207,7 @@ LLFloaterTexturePicker::LLFloaterTexturePicker( TEX_PICKER_MIN_WIDTH, TEX_PICKER_MIN_HEIGHT ), mOwner( owner ), mImageAssetID( owner->getImageAssetID() ), + mFallbackImageName( fallback_image_name ), mWhiteImageAssetID( gSavedSettings.getString( "UIImgWhiteUUID" ) ), mOriginalImageAssetID(owner->getImageAssetID()), mLabel(label), @@ -549,6 +554,11 @@ void LLFloaterTexturePicker::draw() mTexturep = gImageList.getImage(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO); mTexturep->setBoostLevel(LLViewerImage::BOOST_PREVIEW); } + else if (!mFallbackImageName.empty()) + { + mTexturep = gImageList.getImageFromFile(mFallbackImageName); + mTexturep->setBoostLevel(LLViewerImage::BOOST_PREVIEW); + } if (mTentativeLabel) { @@ -1130,7 +1140,9 @@ void LLTextureCtrl::showPicker(BOOL take_focus) mLabel, mImmediateFilterPermMask, mNonImmediateFilterPermMask, - mCanApplyImmediately); + mCanApplyImmediately, + mFallbackImageName); + mFloaterHandle = floaterp->getHandle(); gFloaterView->getParentFloater(this)->addDependentFloater(floaterp); @@ -1289,15 +1301,21 @@ void LLTextureCtrl::draw() { mBorder->setKeyboardFocusHighlight(hasFocus()); - if (mImageAssetID.isNull() || !mValid) + if (!mValid) { mTexturep = NULL; } - else + else if (!mImageAssetID.isNull()) { mTexturep = gImageList.getImage(mImageAssetID, MIPMAP_YES, IMMEDIATE_NO); mTexturep->setBoostLevel(LLViewerImage::BOOST_PREVIEW); } + else if (!mFallbackImageName.empty()) + { + // Show fallback image. + mTexturep = gImageList.getImageFromFile(mFallbackImageName); + mTexturep->setBoostLevel(LLViewerImage::BOOST_PREVIEW); + } // Border LLRect border( 0, getRect().getHeight(), getRect().getWidth(), BTN_HEIGHT_SMALL ); |