summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMnikolenko ProductEngine <mnikolenko@productengine.com>2016-01-05 13:23:34 +0200
committerMnikolenko ProductEngine <mnikolenko@productengine.com>2016-01-05 13:23:34 +0200
commit77156c2b15d86a15753ca00955ab5f29a9128eda (patch)
tree2b88347fe82bd4567997c815d9e27076b9bb4f2c
parent2c19692c76306d794384d1e9a5c50eead3df0c0b (diff)
MAINT-1392 HUD objects Behave Badly in conjunction with the Mouse Scroll Wheel
-rwxr-xr-xdoc/contributions.txt1
-rwxr-xr-xindra/newview/llagentcamera.cpp2
-rwxr-xr-xindra/newview/llpanelprimmediacontrols.cpp41
3 files changed, 40 insertions, 4 deletions
diff --git a/doc/contributions.txt b/doc/contributions.txt
index 33547a78a1..c4eb2901f6 100755
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -987,6 +987,7 @@ NickyD
MAINT-873
Nicky Dasmijn
VWR-29228
+ MAINT-1392
MAINT-873
SUN-72
BUG-2432
diff --git a/indra/newview/llagentcamera.cpp b/indra/newview/llagentcamera.cpp
index aed27924fe..fa16f02c16 100755
--- a/indra/newview/llagentcamera.cpp
+++ b/indra/newview/llagentcamera.cpp
@@ -879,7 +879,7 @@ void LLAgentCamera::cameraZoomIn(const F32 fraction)
}
LLObjectSelectionHandle selection = LLSelectMgr::getInstance()->getSelection();
- if (selection->getObjectCount() && selection->getSelectType() == SELECT_TYPE_HUD)
+ if (LLToolMgr::getInstance()->inBuildMode() && selection->getObjectCount() && selection->getSelectType() == SELECT_TYPE_HUD)
{
// just update hud zoom level
mHUDTargetZoom /= fraction;
diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp
index f42df221e4..763657ebad 100755
--- a/indra/newview/llpanelprimmediacontrols.cpp
+++ b/indra/newview/llpanelprimmediacontrols.cpp
@@ -314,12 +314,14 @@ void LLPanelPrimMediaControls::updateShape()
if (objectp)
{
+ bool hasPermsControl = true;
bool mini_controls = false;
LLMediaEntry *media_data = objectp->getTE(mTargetObjectFace)->getMediaData();
if (media_data && NULL != dynamic_cast<LLVOVolume*>(objectp))
{
// Don't show the media controls if we do not have permissions
enabled = dynamic_cast<LLVOVolume*>(objectp)->hasMediaPermission(media_data, LLVOVolume::MEDIA_PERM_CONTROL);
+ hasPermsControl = dynamic_cast<LLVOVolume*>(objectp)->hasMediaPermission(media_data, LLVOVolume::MEDIA_PERM_CONTROL);
mini_controls = (LLMediaEntry::MINI == media_data->getControls());
}
const bool is_hud = objectp->isHUDAttachment();
@@ -562,7 +564,32 @@ void LLPanelPrimMediaControls::updateShape()
}
}
- setVisible(enabled);
+ // MAINT-1392 If this is a HUD always set it visible, but hide each control if user has no perms.
+ // When setting it invisible it won't receive any mouse messages anymore
+
+ if( !is_hud )
+ setVisible(enabled);
+ else
+ {
+ if( !hasPermsControl )
+ {
+ mBackCtrl->setVisible(false);
+ mFwdCtrl->setVisible(false);
+ mReloadCtrl->setVisible(false);
+ mStopCtrl->setVisible(false);
+ mHomeCtrl->setVisible(false);
+ mZoomCtrl->setVisible(false);
+ mUnzoomCtrl->setVisible(false);
+ mOpenCtrl->setVisible(false);
+ mMediaAddressCtrl->setVisible(false);
+ mMediaPlaySliderPanel->setVisible(false);
+ mVolumeCtrl->setVisible(false);
+ mMediaProgressPanel->setVisible(false);
+ mVolumeSliderCtrl->setVisible(false);
+ }
+
+ setVisible(true);
+ }
//
// Calculate position and shape of the controls
@@ -767,10 +794,18 @@ void LLPanelPrimMediaControls::draw()
// ignore space from right bookend padding
controls_bg_area.mRight -= mRightBookend->getRect().getWidth() - space - 2;
-
+
// draw control background UI image
- mBackgroundImage->draw( controls_bg_area, UI_VERTEX_COLOR % alpha);
+ LLViewerObject* objectp = getTargetObject();
+ LLMediaEntry *media_data(0);
+
+ if( objectp )
+ media_data = objectp->getTE(mTargetObjectFace)->getMediaData();
+
+ if( !dynamic_cast<LLVOVolume*>(objectp) || !media_data || dynamic_cast<LLVOVolume*>(objectp)->hasMediaPermission(media_data, LLVOVolume::MEDIA_PERM_CONTROL) )
+ mBackgroundImage->draw( controls_bg_area, UI_VERTEX_COLOR % alpha);
+
// draw volume slider background UI image
if (mVolumeSliderCtrl->getVisible())
{