From 4f0731d722c41b6717d08b8165e941a06edd3a1f Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 5 Nov 2009 17:51:04 -0800
Subject: [PATCH] make drop add media if not there, navigate if already there

---
 indra/newview/llviewerwindow.cpp | 27 +++++++++++++++++++++------
 1 file changed, 21 insertions(+), 6 deletions(-)

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b43479689f2..ead99613fbc 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -831,12 +831,27 @@ BOOL LLViewerWindow::handleDrop( LLWindow *window,  LLCoordGL pos, MASK mask, st
 		LLVOVolume *obj = dynamic_cast<LLVOVolume*>(static_cast<LLViewerObject*>(pick_info.getObject()));
 		if (obj)
 		{
-			LLSD media_data;
-			/// XXX home URL too?
-			media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
-			media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
-			obj->syncMediaData(object_face, media_data, true, true);
-			obj->sendMediaDataUpdate();
+			LLTextureEntry *te = obj->getTE(object_face);
+			if (te)
+			{
+				if (! te->hasMedia())
+				{
+					// Create new media entry
+					LLSD media_data;
+					// XXX Should we really do Home URL too?
+					media_data[LLMediaEntry::HOME_URL_KEY] = url;
+					media_data[LLMediaEntry::CURRENT_URL_KEY] = url;
+					media_data[LLMediaEntry::AUTO_PLAY_KEY] = true;
+					obj->syncMediaData(object_face, media_data, true, true);
+					// XXX This shouldn't be necessary, should it ?!?
+					obj->getMediaImpl(object_face)->navigateReload();
+					obj->sendMediaDataUpdate();
+				}
+				else {
+					// just navigate to the URL
+					obj->getMediaImpl(object_face)->navigateTo(url);
+				}
+			}
 		}
 	}
   	// Always handled as far as the OS is concerned.
-- 
GitLab