From 53a45c182e97bb1c2e4a2edd6b020b2857269f62 Mon Sep 17 00:00:00 2001 From: Armin Weatherwax Date: Mon, 21 Mar 2011 16:30:09 +0100 Subject: allow interaction with parcel web media * the media face gets focus on click and you can interact with mouse and keyboard with it - just as you would expect it to work in the first place anyway. * added a checkbox in prefs audio & video for what I call "media helper widget" which allows zooming on the face, open the link in a browser window and such - the name of the LL debug setting is a bit misleading ("MediaOnAPrimUI"), since this is not MOAP I avoided that name. --- linden/indra/newview/llpanelaudioprefs.cpp | 3 ++- linden/indra/newview/llpanelaudioprefs.h | 1 + linden/indra/newview/lltoolpie.cpp | 17 +++++++++++------ linden/indra/newview/llviewermediafocus.cpp | 18 ++++++++++++++---- .../default/xui/en-us/panel_preferences_audio.xml | 5 +++++ 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/linden/indra/newview/llpanelaudioprefs.cpp b/linden/indra/newview/llpanelaudioprefs.cpp index 1acfcbb..f1a8af5 100644 --- a/linden/indra/newview/llpanelaudioprefs.cpp +++ b/linden/indra/newview/llpanelaudioprefs.cpp @@ -112,6 +112,7 @@ void LLPanelAudioPrefs::refreshValues() mPreviousStreamingMusic = gSavedSettings.getBOOL("AudioStreamingMusic"); mPreviousStreamingVideo = gSavedSettings.getBOOL("AudioStreamingVideo"); + mPreviousHelperWidget = gSavedSettings.getBOOL("MediaOnAPrimUI"); mPreviousMuteAudio = gSavedSettings.getBOOL("MuteAudio"); mPreviousMuteWhenMinimized = gSavedSettings.getBOOL("MuteWhenMinimized"); @@ -140,7 +141,7 @@ void LLPanelAudioPrefs::cancel() gSavedSettings.setBOOL("AudioStreamingMusic", mPreviousStreamingMusic ); gSavedSettings.setBOOL("AudioStreamingVideo", mPreviousStreamingVideo ); - + gSavedSettings.setBOOL("MediaOnAPrimUI", mPreviousHelperWidget ); gSavedSettings.setBOOL("MuteAudio", mPreviousMuteAudio ); gSavedSettings.setBOOL("MuteWhenMinimized", mPreviousMuteWhenMinimized ); diff --git a/linden/indra/newview/llpanelaudioprefs.h b/linden/indra/newview/llpanelaudioprefs.h index 21d2f59..56982b8 100644 --- a/linden/indra/newview/llpanelaudioprefs.h +++ b/linden/indra/newview/llpanelaudioprefs.h @@ -75,6 +75,7 @@ private: BOOL mPreviousStreamingMusic; BOOL mPreviousStreamingVideo; + BOOL mPreviousHelperWidget; BOOL mPreviousMuteAudio; BOOL mPreviousMuteWhenMinimized; }; diff --git a/linden/indra/newview/lltoolpie.cpp b/linden/indra/newview/lltoolpie.cpp index 34735a3..b7d762c 100644 --- a/linden/indra/newview/lltoolpie.cpp +++ b/linden/indra/newview/lltoolpie.cpp @@ -800,6 +800,14 @@ BOOL LLToolPie::handleDoubleClick(S32 x, S32 y, MASK mask) LL_DEBUGS("DoubleClicks") << "Double clicked a touch-scripted object" << LL_ENDL; return FALSE; } + + const LLTextureEntry* tep = object->getTE(mPick.mObjectFace); + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(tep->getID()); + if (tep && media_impl.notNull() && media_impl->hasMedia()) + { + LL_DEBUGS("DoubleClicks") << "Double clicked running parcel media" << LL_ENDL; + return FALSE; + } } std::string action = gSavedSettings.getString("DoubleClickAction"); @@ -938,19 +946,16 @@ static bool handle_media_click(const LLPickInfo& pick) if (tep && media_impl.notNull() && media_impl->hasMedia() - && gSavedSettings.getBOOL("MediaOnAPrimUI")) + /*&& gSavedSettings.getBOOL("MediaOnAPrimUI")*/) { LLObjectSelectionHandle selection = LLViewerMediaFocus::getInstance()->getSelection(); if (! selection->contains(pick.getObject(), pick.mObjectFace)) { LLViewerMediaFocus::getInstance()->setFocusFace(TRUE, pick.getObject(), pick.mObjectFace, media_impl); } - else - { - media_impl->mouseDown(pick.mXYCoords.mX, pick.mXYCoords.mY); - media_impl->mouseCapture(); // the mouse-up will happen when capture is lost - } + media_impl->mouseDown(pick.mXYCoords.mX, pick.mXYCoords.mY); + media_impl->mouseCapture(); // the mouse-up will happen when capture is lost return true; } diff --git a/linden/indra/newview/llviewermediafocus.cpp b/linden/indra/newview/llviewermediafocus.cpp index 2e372a1..c81cd76 100644 --- a/linden/indra/newview/llviewermediafocus.cpp +++ b/linden/indra/newview/llviewermediafocus.cpp @@ -48,6 +48,7 @@ #include "llparcel.h" #include "llviewerparcelmgr.h" #include "llweb.h" +#include "llviewercontrol.h"//gSavedSettings // // LLViewerMediaFocus // @@ -99,7 +100,7 @@ void LLViewerMediaFocus::setFocusFace( BOOL b, LLPointer objectp LLSelectMgr::getInstance()->selectObjectOnly(objectp, face); mFocus = LLSelectMgr::getInstance()->getSelection(); - if(mMediaHUD.get() && ! parcel->getMediaPreventCameraZoom()) + if(gSavedSettings.getBOOL("MediaOnAPrimUI") && mMediaHUD.get() && ! parcel->getMediaPreventCameraZoom()) { mMediaHUD.get()->resetZoomLevel(); mMediaHUD.get()->nextZoomLevel(); @@ -224,14 +225,20 @@ void LLViewerMediaFocus::setMouseOverFlag(bool b, viewer_media_t media_impl) { if (b && media_impl.notNull()) { - if(! mMediaHUD.get()) + + if(! mMediaHUD.get() && gSavedSettings.getBOOL("MediaOnAPrimUI")) { LLPanelMediaHUD* media_hud = new LLPanelMediaHUD(mMediaImpl); mMediaHUD = media_hud->getHandle(); gHUDView->addChild(media_hud); } - mMediaHUD.get()->setMediaImpl(media_impl); + + if(mMediaHUD.get()) + { + mMediaHUD.get()->setMediaImpl(media_impl); + } mMediaImpl = media_impl; + } mMouseOverFlag = b; } @@ -281,7 +288,10 @@ void LLViewerMediaFocus::update() { if (mMediaHUD.get()) { - if(mFocus.notNull() || mMouseOverFlag || mMediaHUD.get()->isMouseOver()) + if(gSavedSettings.getBOOL("MediaOnAPrimUI") + &&(mFocus.notNull() + || mMouseOverFlag + || mMediaHUD.get()->isMouseOver() ) ) { // mMediaHUD.get()->setVisible(true); mMediaHUD.get()->updateShape(); diff --git a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml index c6bb938..1f208e8 100644 --- a/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml +++ b/linden/indra/newview/skins/default/xui/en-us/panel_preferences_audio.xml @@ -42,6 +42,11 @@ initial_value="true" label="Automatically play media" left="162" mouse_opaque="true" name="auto_streaming_video" radio_style="false" width="338" /> +