From 109fd91c8b811f98aaab0dbf80884efd76e95d51 Mon Sep 17 00:00:00 2001
From: Callum Prentice <callum@lindenlab.com>
Date: Thu, 11 Feb 2010 11:40:21 -0800
Subject: [PATCH] Fix for EXT-4961 www.slurl.com will not DnD while slurl.com
 will Ccollab reviewed by Rick -
 http://10.1.19.90:8080/go?page=ReviewDisplay&reviewid=101

---
 indra/newview/llslurl.cpp | 13 ++++++++++++-
 indra/newview/llslurl.h   |  1 +
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/indra/newview/llslurl.cpp b/indra/newview/llslurl.cpp
index 3343ee88bd4..e4773f99c56 100644
--- a/indra/newview/llslurl.cpp
+++ b/indra/newview/llslurl.cpp
@@ -40,6 +40,12 @@ const std::string LLSLURL::PREFIX_SL_HELP		= "secondlife://app.";
 const std::string LLSLURL::PREFIX_SL			= "sl://";
 const std::string LLSLURL::PREFIX_SECONDLIFE	= "secondlife://";
 const std::string LLSLURL::PREFIX_SLURL_OLD		= "http://slurl.com/secondlife/";
+
+// For DnD - even though www.slurl.com redirects to slurl.com in a browser, you can copy and drag
+// text with www.slurl.com or a link explicitly pointing at www.slurl.com so testing for this
+// version is required also.
+const std::string LLSLURL::PREFIX_SLURL_WWW		= "http://www.slurl.com/secondlife/";
+
 const std::string LLSLURL::PREFIX_SLURL			= "http://maps.secondlife.com/secondlife/";
 
 const std::string LLSLURL::APP_TOKEN = "app/";
@@ -68,7 +74,10 @@ std::string LLSLURL::stripProtocol(const std::string& url)
 	{
 		stripped.erase(0, PREFIX_SLURL_OLD.length());
 	}
-
+	else if (matchPrefix(stripped, PREFIX_SLURL_WWW))
+	{
+		stripped.erase(0, PREFIX_SLURL_WWW.length());
+	}
 	
 	return stripped;
 }
@@ -81,6 +90,7 @@ bool LLSLURL::isSLURL(const std::string& url)
 	if (matchPrefix(url, PREFIX_SECONDLIFE))	return true;
 	if (matchPrefix(url, PREFIX_SLURL))			return true;
 	if (matchPrefix(url, PREFIX_SLURL_OLD))		return true;
+	if (matchPrefix(url, PREFIX_SLURL_WWW))		return true;
 	
 	return false;
 }
@@ -91,6 +101,7 @@ bool LLSLURL::isSLURLCommand(const std::string& url)
 	if (matchPrefix(url, PREFIX_SL + APP_TOKEN) ||
 		matchPrefix(url, PREFIX_SECONDLIFE + "/" + APP_TOKEN) ||
 		matchPrefix(url, PREFIX_SLURL + APP_TOKEN) ||
+		matchPrefix(url, PREFIX_SLURL_WWW + APP_TOKEN) ||
 		matchPrefix(url, PREFIX_SLURL_OLD + APP_TOKEN) )
 	{
 		return true;
diff --git a/indra/newview/llslurl.h b/indra/newview/llslurl.h
index 21b32ce4093..6a695e84f3c 100644
--- a/indra/newview/llslurl.h
+++ b/indra/newview/llslurl.h
@@ -51,6 +51,7 @@ class LLSLURL
 	static const std::string PREFIX_SECONDLIFE;
 	static const std::string PREFIX_SLURL;
 	static const std::string PREFIX_SLURL_OLD;
+	static const std::string PREFIX_SLURL_WWW;
 
 	static const std::string APP_TOKEN;
 
-- 
GitLab