summaryrefslogtreecommitdiff
path: root/indra/newview/lltexturectrl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/lltexturectrl.cpp')
-rw-r--r--indra/newview/lltexturectrl.cpp30
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 );