summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorMnikolenko Productengine <mnikolenko@productengine.com>2022-04-19 02:33:59 +0300
committerMnikolenko Productengine <mnikolenko@productengine.com>2022-04-19 02:33:59 +0300
commit2445525cc573024f8eb64cabac1e6e3dc3362085 (patch)
treee1633365e3a577f3f14b9b6ca07d4f07a88c50f2 /indra/newview
parenta0ec6fd37143dd78ee2531e12ff17c7d2ee935dd (diff)
SL-17231 Copying textures should be disabled if object content was not yet updated
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llpanelface.cpp19
-rw-r--r--indra/newview/llpanelface.h4
-rw-r--r--indra/newview/skins/default/xui/en/panel_tools_texture.xml4
3 files changed, 26 insertions, 1 deletions
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index f50f587f8f..d50d42bf2f 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -330,6 +330,13 @@ LLPanelFace::~LLPanelFace()
}
+void LLPanelFace::draw()
+{
+ updateCopyTexButton();
+
+ LLPanel::draw();
+}
+
void LLPanelFace::sendTexture()
{
LLTextureCtrl* mTextureCtrl = getChild<LLTextureCtrl>("texture control");
@@ -1522,7 +1529,6 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
S32 selected_count = LLSelectMgr::getInstance()->getSelection()->getObjectCount();
BOOL single_volume = (selected_count == 1);
mMenuClipboardColor->setEnabled(editable && single_volume);
- mMenuClipboardTexture->setEnabled(editable && single_volume);
// Set variable values for numeric expressions
LLCalc* calcp = LLCalc::getInstance();
@@ -1583,6 +1589,17 @@ void LLPanelFace::updateUI(bool force_set_values /*false*/)
}
+void LLPanelFace::updateCopyTexButton()
+{
+ LLViewerObject* objectp = LLSelectMgr::getInstance()->getSelection()->getFirstObject();
+ mMenuClipboardTexture->setEnabled(objectp && objectp->getPCode() == LL_PCODE_VOLUME && objectp->permModify()
+ && !objectp->isPermanentEnforced() && !objectp->isInventoryPending()
+ && (LLSelectMgr::getInstance()->getSelection()->getObjectCount() == 1));
+ std::string tooltip = (objectp && objectp->isInventoryPending()) ? LLTrans::getString("LoadingContents") : getString("paste_options");
+ mMenuClipboardTexture->setToolTip(tooltip);
+
+}
+
void LLPanelFace::refresh()
{
LL_DEBUGS("Materials") << LL_ENDL;
diff --git a/indra/newview/llpanelface.h b/indra/newview/llpanelface.h
index 948d33c2c1..e3b925c1d4 100644
--- a/indra/newview/llpanelface.h
+++ b/indra/newview/llpanelface.h
@@ -97,6 +97,8 @@ public:
LLPanelFace();
virtual ~LLPanelFace();
+ void draw();
+
void refresh();
void setMediaURL(const std::string& url);
void setMediaType(const std::string& mime_type);
@@ -129,6 +131,8 @@ protected:
void sendMedia();
void alignTestureLayer();
+ void updateCopyTexButton();
+
// this function is to return TRUE if the drag should succeed.
static BOOL onDragTexture(LLUICtrl* ctrl, LLInventoryItem* item);
diff --git a/indra/newview/skins/default/xui/en/panel_tools_texture.xml b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
index a33d425964..0cbd7fe2dd 100644
--- a/indra/newview/skins/default/xui/en/panel_tools_texture.xml
+++ b/indra/newview/skins/default/xui/en/panel_tools_texture.xml
@@ -23,6 +23,10 @@
name="paste_error_inventory_not_found">
One or more texture not found in inventory.
</panel.string>
+ <panel.string
+ name="paste_options">
+ Paste options
+ </panel.string>
<menu_button
menu_filename="menu_copy_paste_color.xml"