summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
Diffstat (limited to 'indra')
-rw-r--r--indra/newview/llpanelmaininventory.cpp28
-rw-r--r--indra/newview/llpreviewtexture.cpp1
-rw-r--r--indra/newview/skins/default/xui/en/floater_preview_texture.xml4
3 files changed, 29 insertions, 4 deletions
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index 8f71c6f1ee..9d73fbf21a 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -33,6 +33,7 @@
#include "llviewerprecompiledheaders.h"
#include "llpanelmaininventory.h"
+#include "llagent.h"
#include "lldndbutton.h"
#include "llfilepicker.h"
#include "llfloaterinventory.h"
@@ -1017,8 +1018,31 @@ bool LLPanelMainInventory::isSaveTextureEnabled(const LLSD& userdata)
LLFolderViewItem* current_item = getActivePanel()->getRootFolder()->getCurSelectedItem();
if (current_item)
{
- LLInventoryType::EType curr_type = current_item->getListener()->getInventoryType();
- return (curr_type == LLInventoryType::IT_TEXTURE || curr_type == LLInventoryType::IT_SNAPSHOT);
+ bool can_save = false;
+ LLInventoryItem *item = gInventory.getItem(current_item->getListener()->getUUID());
+ if(item)
+ {
+ const LLPermissions& perm = item->getPermissions();
+ U32 mask = PERM_NONE;
+ if(perm.getOwner() == gAgent.getID())
+ {
+ mask = perm.getMaskBase();
+ }
+ else if(gAgent.isInGroup(perm.getGroup()))
+ {
+ mask = perm.getMaskGroup();
+ }
+ else
+ {
+ mask = perm.getMaskEveryone();
+ }
+ if((mask & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)
+ {
+ can_save = true;
+ }
+ LLInventoryType::EType curr_type = current_item->getListener()->getInventoryType();
+ return can_save && (curr_type == LLInventoryType::IT_TEXTURE || curr_type == LLInventoryType::IT_SNAPSHOT);
+ }
}
return false;
}
diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 8fa147f201..86475fe2dc 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -146,6 +146,7 @@ BOOL LLPreviewTexture::postBuild()
}
childSetAction("save_tex_btn", LLPreviewTexture::onSaveAsBtn, this);
+ childSetVisible("save_tex_btn", canSaveAs());
if (!mCopyToInv)
{
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index 054f3be70a..602a18ea56 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -61,7 +61,7 @@
name="Discard"
top_delta="0"
width="100" />
- <button
+ <button
follows="left|bottom"
height="22"
label="Save As"
@@ -70,7 +70,7 @@
name="save_tex_btn"
top_delta="0"
width="100" />
- <text
+ <text
type="string"
length="1"
follows="left|bottom"