diff options
Diffstat (limited to 'indra')
32 files changed, 182 insertions, 691 deletions
| diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index b31fd1f8ae..b50405421d 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@  const S32 LL_VERSION_MAJOR = 3;  const S32 LL_VERSION_MINOR = 2; -const S32 LL_VERSION_PATCH = 3; +const S32 LL_VERSION_PATCH = 4;  const S32 LL_VERSION_BUILD = 0;  const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llui/llsdparam.cpp b/indra/llui/llsdparam.cpp index 6fa90933a4..0e29873bb0 100644 --- a/indra/llui/llsdparam.cpp +++ b/indra/llui/llsdparam.cpp @@ -36,6 +36,8 @@ static 	LLInitParam::Parser::parser_write_func_map_t sWriteFuncs;  static 	LLInitParam::Parser::parser_inspect_func_map_t sInspectFuncs;  static const LLSD NO_VALUE_MARKER; +LLFastTimer::DeclareTimer FTM_SD_PARAM_ADAPTOR("LLSD to LLInitParam conversion"); +  //  // LLParamSDParser  // diff --git a/indra/llui/llsdparam.h b/indra/llui/llsdparam.h index c1cfa98399..3dfc6d020e 100644 --- a/indra/llui/llsdparam.h +++ b/indra/llui/llsdparam.h @@ -91,6 +91,8 @@ private:  	LLSD*					mCurWriteSD;  }; + +extern LLFastTimer::DeclareTimer FTM_SD_PARAM_ADAPTOR;  template<typename T>  class LLSDParamAdapter : public T  { @@ -98,8 +100,11 @@ public:  	LLSDParamAdapter() {}  	LLSDParamAdapter(const LLSD& sd)  	{ +		LLFastTimer _(FTM_SD_PARAM_ADAPTOR);  		LLParamSDParser parser; -		parser.readSD(sd, *this); +		// don't spam for implicit parsing of LLSD, as we want to allow arbitrary freeform data and ignore most of it +		bool parse_silently = true; +		parser.readSD(sd, *this, parse_silently);  	}  	operator LLSD() const diff --git a/indra/llui/llurlaction.cpp b/indra/llui/llurlaction.cpp index 42b779bd28..fd9b3d9a6d 100644 --- a/indra/llui/llurlaction.cpp +++ b/indra/llui/llurlaction.cpp @@ -33,28 +33,28 @@  #include "llurlregistry.h"  // global state for the callback functions -void (*LLUrlAction::sOpenURLCallback) (const std::string& url) = NULL; -void (*LLUrlAction::sOpenURLInternalCallback) (const std::string& url) = NULL; -void (*LLUrlAction::sOpenURLExternalCallback) (const std::string& url) = NULL; -bool (*LLUrlAction::sExecuteSLURLCallback) (const std::string& url) = NULL; +LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLCallback; +LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLInternalCallback; +LLUrlAction::url_callback_t 		LLUrlAction::sOpenURLExternalCallback; +LLUrlAction::execute_url_callback_t LLUrlAction::sExecuteSLURLCallback; -void LLUrlAction::setOpenURLCallback(void (*cb) (const std::string& url)) +void LLUrlAction::setOpenURLCallback(url_callback_t cb)  {  	sOpenURLCallback = cb;  } -void LLUrlAction::setOpenURLInternalCallback(void (*cb) (const std::string& url)) +void LLUrlAction::setOpenURLInternalCallback(url_callback_t cb)  {  	sOpenURLInternalCallback = cb;  } -void LLUrlAction::setOpenURLExternalCallback(void (*cb) (const std::string& url)) +void LLUrlAction::setOpenURLExternalCallback(url_callback_t cb)  {  	sOpenURLExternalCallback = cb;  } -void LLUrlAction::setExecuteSLURLCallback(bool (*cb) (const std::string& url)) +void LLUrlAction::setExecuteSLURLCallback(execute_url_callback_t cb)  {  	sExecuteSLURLCallback = cb;  } @@ -63,7 +63,7 @@ void LLUrlAction::openURL(std::string url)  {  	if (sOpenURLCallback)  	{ -		(*sOpenURLCallback)(url); +		sOpenURLCallback(url);  	}  } @@ -71,7 +71,7 @@ void LLUrlAction::openURLInternal(std::string url)  {  	if (sOpenURLInternalCallback)  	{ -		(*sOpenURLInternalCallback)(url); +		sOpenURLInternalCallback(url);  	}  } @@ -79,7 +79,7 @@ void LLUrlAction::openURLExternal(std::string url)  {  	if (sOpenURLExternalCallback)  	{ -		(*sOpenURLExternalCallback)(url); +		sOpenURLExternalCallback(url);  	}  } @@ -87,18 +87,18 @@ void LLUrlAction::executeSLURL(std::string url)  {  	if (sExecuteSLURLCallback)  	{ -		(*sExecuteSLURLCallback)(url); +		sExecuteSLURLCallback(url);  	}  }  void LLUrlAction::clickAction(std::string url)  {  	// Try to handle as SLURL first, then http Url -	if ( (sExecuteSLURLCallback) && !(*sExecuteSLURLCallback)(url) ) +	if ( (sExecuteSLURLCallback) && !sExecuteSLURLCallback(url) )  	{  		if (sOpenURLCallback)  		{ -			(*sOpenURLCallback)(url); +			sOpenURLCallback(url);  		}  	}  } diff --git a/indra/llui/llurlaction.h b/indra/llui/llurlaction.h index 0132dbaaf0..c34960b826 100644 --- a/indra/llui/llurlaction.h +++ b/indra/llui/llurlaction.h @@ -29,6 +29,7 @@  #define LL_LLURLACTION_H  #include <string> +#include <boost/function.hpp>  ///  /// The LLUrlAction class provides a number of static functions that @@ -77,17 +78,21 @@ public:  	static void showProfile(std::string url);  	/// specify the callbacks to enable this class's functionality -	static void	setOpenURLCallback(void (*cb) (const std::string& url)); -	static void	setOpenURLInternalCallback(void (*cb) (const std::string& url)); -	static void	setOpenURLExternalCallback(void (*cb) (const std::string& url)); -	static void	setExecuteSLURLCallback(bool (*cb) (const std::string& url)); +	typedef boost::function<void (const std::string&)> url_callback_t; +	typedef boost::function<bool(const std::string& url)> execute_url_callback_t; + +	static void	setOpenURLCallback(url_callback_t cb); +	static void	setOpenURLInternalCallback(url_callback_t cb); +	static void	setOpenURLExternalCallback(url_callback_t cb); +	static void	setExecuteSLURLCallback(execute_url_callback_t cb);  private:  	// callbacks for operations we can perform on Urls -	static void (*sOpenURLCallback) (const std::string& url); -	static void (*sOpenURLInternalCallback) (const std::string& url); -	static void (*sOpenURLExternalCallback) (const std::string& url); -	static bool (*sExecuteSLURLCallback) (const std::string& url); +	static url_callback_t sOpenURLCallback; +	static url_callback_t sOpenURLInternalCallback; +	static url_callback_t sOpenURLExternalCallback; + +	static execute_url_callback_t sExecuteSLURLCallback;  };  #endif diff --git a/indra/llwindow/llwindowsdl.cpp b/indra/llwindow/llwindowsdl.cpp index e41aa9820f..da2222ad51 100644 --- a/indra/llwindow/llwindowsdl.cpp +++ b/indra/llwindow/llwindowsdl.cpp @@ -63,6 +63,9 @@ extern BOOL gDebugWindowProc;  const S32 MAX_NUM_RESOLUTIONS = 200; +const S32 MIN_WINDOW_WIDTH = 1024; +const S32 MIN_WINDOW_HEIGHT = 768; +  // static variable for ATI mouse cursor crash work-around:  static bool ATIbug = false;  @@ -1843,11 +1846,15 @@ void LLWindowSDL::gatherInput()                  break;              case SDL_VIDEORESIZE:  // *FIX: handle this? +            {  		llinfos << "Handling a resize event: " << event.resize.w <<  			"x" << event.resize.h << llendl; +		S32 width = llmax(event.resize.w, MIN_WINDOW_WIDTH); +		S32 height = llmax(event.resize.h, MIN_WINDOW_HEIGHT); +  		// *FIX: I'm not sure this is necessary! -		mWindow = SDL_SetVideoMode(event.resize.w, event.resize.h, 32, mSDLFlags); +		mWindow = SDL_SetVideoMode(width, height, 32, mSDLFlags);  		if (!mWindow)  		{  			// *FIX: More informative dialog? @@ -1861,9 +1868,9 @@ void LLWindowSDL::gatherInput()                  break;  		} -		mCallbacks->handleResize(this, event.resize.w, event.resize.h ); +		mCallbacks->handleResize(this, width, height);                  break; - +            }              case SDL_ACTIVEEVENT:                  if (event.active.state & SDL_APPINPUTFOCUS)                  { diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index ff9cf3199e..ba05f6288b 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -207,7 +207,6 @@ set(viewer_SOURCE_FILES      llfloaterland.cpp      llfloaterlandholdings.cpp      llfloatermap.cpp -    llfloatermediabrowser.cpp      llfloatermediasettings.cpp      llfloatermemleak.cpp      llfloatermodelpreview.cpp @@ -781,7 +780,6 @@ set(viewer_HEADER_FILES      llfloaterland.h      llfloaterlandholdings.h      llfloatermap.h -    llfloatermediabrowser.h      llfloatermediasettings.h      llfloatermemleak.h      llfloatermodelpreview.h diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index c937f604fc..8bf4d94059 100755 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -847,9 +847,9 @@ bool LLAppViewer::init()  	LLWeb::initClass();			  // do this after LLUI  	// Provide the text fields with callbacks for opening Urls -	LLUrlAction::setOpenURLCallback(&LLWeb::loadURL); -	LLUrlAction::setOpenURLInternalCallback(&LLWeb::loadURLInternal); -	LLUrlAction::setOpenURLExternalCallback(&LLWeb::loadURLExternal); +	LLUrlAction::setOpenURLCallback(boost::bind(&LLWeb::loadURL, _1, LLStringUtil::null, LLStringUtil::null)); +	LLUrlAction::setOpenURLInternalCallback(boost::bind(&LLWeb::loadURLInternal, _1, LLStringUtil::null, LLStringUtil::null)); +	LLUrlAction::setOpenURLExternalCallback(boost::bind(&LLWeb::loadURLExternal, _1, true, LLStringUtil::null));  	LLUrlAction::setExecuteSLURLCallback(&LLURLDispatcher::dispatchFromTextEditor);  	// Let code in llui access the viewer help floater diff --git a/indra/newview/llfloaterhelpbrowser.h b/indra/newview/llfloaterhelpbrowser.h index 80b0ecc06b..bf4f544a14 100644 --- a/indra/newview/llfloaterhelpbrowser.h +++ b/indra/newview/llfloaterhelpbrowser.h @@ -1,5 +1,5 @@  /**  - * @file llfloatermediabrowser.h + * @file llfloaterhelpbrowser.h   * @brief HTML Help floater - uses embedded web browser control   *   * $LicenseInfo:firstyear=2006&license=viewerlgpl$ diff --git a/indra/newview/llfloatermediabrowser.cpp b/indra/newview/llfloatermediabrowser.cpp deleted file mode 100644 index 7a670dd90c..0000000000 --- a/indra/newview/llfloatermediabrowser.cpp +++ /dev/null @@ -1,462 +0,0 @@ -/**  - * @file llfloatermediabrowser.cpp - * @brief media browser floater - uses embedded media browser control - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#include "llviewerprecompiledheaders.h" - -#include "llfloatermediabrowser.h" - -#include "llfloaterreg.h" -#include "llparcel.h" -#include "llpluginclassmedia.h" -#include "lluictrlfactory.h" -#include "llmediactrl.h" -#include "llviewerwindow.h" -#include "llviewercontrol.h" -#include "llviewerparcelmgr.h" -#include "llweb.h" -#include "llui.h" -#include "roles_constants.h" - -#include "llurlhistory.h" -#include "llmediactrl.h" -#include "llviewermedia.h" -#include "llviewerparcelmedia.h" -#include "llcombobox.h" -#include "llwindow.h" -#include "lllayoutstack.h" -#include "llcheckboxctrl.h" - -#include "llnotifications.h" - -// TEMP -#include "llsdutil.h" - -LLFloaterMediaBrowser::LLFloaterMediaBrowser(const LLSD& key) -	: LLFloater(key) -{ -} - -//static  -void LLFloaterMediaBrowser::create(const std::string &url, const std::string& target, const std::string& uuid) -{ -	lldebugs << "url = " << url << ", target = " << target << ", uuid = " << uuid << llendl; -	 -	std::string tag = target; -	 -	if(target.empty() || target == "_blank") -	{ -		if(!uuid.empty()) -		{ -			tag = uuid; -		} -		else -		{ -		// create a unique tag for this instance -		LLUUID id; -		id.generate(); -		tag = id.asString(); -	} -	} -	 -	S32 browser_window_limit = gSavedSettings.getS32("MediaBrowserWindowLimit"); -	 -	if(LLFloaterReg::findInstance("media_browser", tag) != NULL) -	{ -		// There's already a media browser for this tag, so we won't be opening a new window. -	} -	else if(browser_window_limit != 0) -	{ -		// showInstance will open a new window.  Figure out how many media browsers are already open,  -		// and close the least recently opened one if this will put us over the limit. -		 -		LLFloaterReg::const_instance_list_t &instances = LLFloaterReg::getFloaterList("media_browser"); -		lldebugs << "total instance count is " << instances.size() << llendl; -		 -		for(LLFloaterReg::const_instance_list_t::const_iterator iter = instances.begin(); iter != instances.end(); iter++) -		{ -			lldebugs << "    " << (*iter)->getKey() << llendl; -		} -		 -		if(instances.size() >= (size_t)browser_window_limit) -		{ -			// Destroy the least recently opened instance -			(*instances.begin())->closeFloater(); -		} -	} - -	LLFloaterMediaBrowser *browser = dynamic_cast<LLFloaterMediaBrowser*> (LLFloaterReg::showInstance("media_browser", tag)); -	llassert(browser); -	if(browser) -	{ -		browser->mUUID = uuid; - -		// tell the browser instance to load the specified URL -		browser->openMedia(url, target); -		LLViewerMedia::proxyWindowOpened(target, uuid); -	} -} - -//static  -void LLFloaterMediaBrowser::closeRequest(const std::string &uuid) -{ -	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser"); -	lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl; -	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) -	{ -		LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter); -		lldebugs << "    " << i->mUUID << llendl; -		if (i && i->mUUID == uuid) -		{ -			i->closeFloater(false); -			return; - 		} - 	} -} - -//static  -void LLFloaterMediaBrowser::geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height) -{ -	LLFloaterReg::const_instance_list_t& inst_list = LLFloaterReg::getFloaterList("media_browser"); -	lldebugs << "instance list size is " << inst_list.size() << ", incoming uuid is " << uuid << llendl; -	for (LLFloaterReg::const_instance_list_t::const_iterator iter = inst_list.begin(); iter != inst_list.end(); ++iter) -	{ -		LLFloaterMediaBrowser* i = dynamic_cast<LLFloaterMediaBrowser*>(*iter); -		lldebugs << "    " << i->mUUID << llendl; -		if (i && i->mUUID == uuid) -		{ -			i->geometryChanged(x, y, width, height); -			return; -	} -} -} -	 -void LLFloaterMediaBrowser::geometryChanged(S32 x, S32 y, S32 width, S32 height) -{	 -	// Make sure the layout of the browser control is updated, so this calculation is correct. -	LLLayoutStack::updateClass(); -		 -	// TODO: need to adjust size and constrain position to make sure floaters aren't moved outside the window view, etc. -	LLCoordWindow window_size; -	getWindow()->getSize(&window_size); - -	// Adjust width and height for the size of the chrome on the Media Browser window. -	width += getRect().getWidth() - mBrowser->getRect().getWidth(); -	height += getRect().getHeight() - mBrowser->getRect().getHeight(); -	 -	LLRect geom; -	geom.setOriginAndSize(x, window_size.mY - (y + height), width, height); - -	lldebugs << "geometry change: " << geom << llendl; -	 -	handleReshape(geom,false); -} - - -void LLFloaterMediaBrowser::draw() -{ -	getChildView("go")->setEnabled(!mAddressCombo->getValue().asString().empty()); -	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -	if(parcel) -	{ -		getChildView("parcel_owner_controls")->setVisible( LLViewerParcelMgr::isParcelModifiableByAgent(parcel, GP_LAND_CHANGE_MEDIA)); -		getChildView("assign")->setEnabled(!mAddressCombo->getValue().asString().empty()); -	} -	bool show_time_controls = false; -	bool media_playing = false; -	if(mBrowser) -	{ -		LLPluginClassMedia* media_plugin = mBrowser->getMediaPlugin(); -		if(media_plugin) -		{ -			show_time_controls = media_plugin->pluginSupportsMediaTime(); -			media_playing = media_plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING; -		} -	} -	getChildView("rewind")->setVisible( show_time_controls); -	getChildView("play")->setVisible( show_time_controls && ! media_playing); -	getChildView("pause")->setVisible( show_time_controls && media_playing); -	getChildView("stop")->setVisible( show_time_controls); -	getChildView("seek")->setVisible( show_time_controls); - -	getChildView("play")->setEnabled(! media_playing); -	getChildView("stop")->setEnabled(media_playing); - -	getChildView("back")->setEnabled(mBrowser->canNavigateBack()); -	getChildView("forward")->setEnabled(mBrowser->canNavigateForward()); - -	LLFloater::draw(); -} - -BOOL LLFloaterMediaBrowser::postBuild() -{ -	mBrowser = getChild<LLMediaCtrl>("browser"); -	mBrowser->addObserver(this); - -	mAddressCombo = getChild<LLComboBox>("address"); -	mAddressCombo->setCommitCallback(onEnterAddress, this); -	mAddressCombo->sortByName(); - -	childSetAction("back", onClickBack, this); -	childSetAction("forward", onClickForward, this); -	childSetAction("reload", onClickRefresh, this); -	childSetAction("rewind", onClickRewind, this); -	childSetAction("play", onClickPlay, this); -	childSetAction("stop", onClickStop, this); -	childSetAction("pause", onClickPlay, this); -	childSetAction("seek", onClickSeek, this); -	childSetAction("go", onClickGo, this); -	childSetAction("close", onClickClose, this); -	childSetAction("open_browser", onClickOpenWebBrowser, this); -	childSetAction("assign", onClickAssign, this); - -	buildURLHistory(); - -	return TRUE; -} - -void LLFloaterMediaBrowser::buildURLHistory() -{ -	LLCtrlListInterface* url_list = childGetListInterface("address"); -	if (url_list) -	{ -		url_list->operateOnAll(LLCtrlListInterface::OP_DELETE); -	} - -	// Get all of the entries in the "browser" collection -	LLSD browser_history = LLURLHistory::getURLHistory("browser"); - -	LLSD::array_iterator iter_history = -		browser_history.beginArray(); -	LLSD::array_iterator end_history = -		browser_history.endArray(); -	for(; iter_history != end_history; ++iter_history) -	{ -		std::string url = (*iter_history).asString(); -		if(! url.empty()) -			url_list->addSimpleElement(url); -	} - -	// initialize URL history in the plugin -	if(mBrowser && mBrowser->getMediaPlugin()) -	{ -		mBrowser->getMediaPlugin()->initializeUrlHistory(browser_history); -	} -} - -std::string LLFloaterMediaBrowser::getSupportURL() -{ -	return getString("support_page_url"); -} - -//virtual -void LLFloaterMediaBrowser::onClose(bool app_quitting) -{ -	LLViewerMedia::proxyWindowClosed(mUUID); -	//setVisible(FALSE); -	destroy(); -} - -void LLFloaterMediaBrowser::handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event) -{ -	if(event == MEDIA_EVENT_LOCATION_CHANGED) -	{ -		setCurrentURL(self->getLocation()); -	} -	else if(event == MEDIA_EVENT_NAVIGATE_COMPLETE) -	{ -		// This is the event these flags are sent with. -		getChildView("back")->setEnabled(self->getHistoryBackAvailable()); -		getChildView("forward")->setEnabled(self->getHistoryForwardAvailable()); -	} -	else if(event == MEDIA_EVENT_CLOSE_REQUEST) -	{ -		// The browser instance wants its window closed. -		closeFloater(); -	} -	else if(event == MEDIA_EVENT_GEOMETRY_CHANGE) -	{ -		geometryChanged(self->getGeometryX(), self->getGeometryY(), self->getGeometryWidth(), self->getGeometryHeight()); -	} -} - -void LLFloaterMediaBrowser::setCurrentURL(const std::string& url) -{ -	mCurrentURL = url; - -	mAddressCombo->remove(mCurrentURL); -	mAddressCombo->add(mCurrentURL); -	mAddressCombo->selectByValue(mCurrentURL); - -	// Serialize url history -	LLURLHistory::removeURL("browser", mCurrentURL); -	LLURLHistory::addURL("browser", mCurrentURL); - -	getChildView("back")->setEnabled(mBrowser->canNavigateBack()); -	getChildView("forward")->setEnabled(mBrowser->canNavigateForward()); -	getChildView("reload")->setEnabled(TRUE); -} - -//static  -void LLFloaterMediaBrowser::onEnterAddress(LLUICtrl* ctrl, void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; -	self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString()); -} - -//static  -void LLFloaterMediaBrowser::onClickRefresh(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	if( self->mBrowser->getMediaPlugin() &&  self->mBrowser->getMediaPlugin()->pluginSupportsMediaBrowser()) -	{ -		bool ignore_cache = true; -		self->mBrowser->getMediaPlugin()->browse_reload( ignore_cache ); -	} -	else -	{ -		self->mBrowser->navigateTo(self->mCurrentURL); -	} -} - -//static  -void LLFloaterMediaBrowser::onClickForward(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	self->mBrowser->navigateForward(); -} - -//static  -void LLFloaterMediaBrowser::onClickBack(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	self->mBrowser->navigateBack(); -} - -//static  -void LLFloaterMediaBrowser::onClickGo(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	self->mBrowser->navigateTo(self->mAddressCombo->getValue().asString()); -} - -//static  -void LLFloaterMediaBrowser::onClickClose(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	self->closeFloater(); -} - -//static  -void LLFloaterMediaBrowser::onClickOpenWebBrowser(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	std::string url = self->mCurrentURL.empty() ?  -		self->mBrowser->getHomePageUrl() : -		self->mCurrentURL; -	LLWeb::loadURLExternal(url); -} - -void LLFloaterMediaBrowser::onClickAssign(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); -	if (!parcel) -	{ -		return; -	} -	std::string media_url = self->mAddressCombo->getValue().asString(); -	LLStringUtil::trim(media_url); - -	if(parcel->getMediaType() != "text/html") -	{ -		parcel->setMediaURL(media_url); -		parcel->setMediaCurrentURL(media_url); -		parcel->setMediaType(std::string("text/html")); -		LLViewerParcelMgr::getInstance()->sendParcelPropertiesUpdate( parcel, true ); -		LLViewerParcelMedia::sendMediaNavigateMessage(media_url); -		LLViewerParcelMedia::stop(); -		// LLViewerParcelMedia::update( parcel ); -	} -	LLViewerParcelMedia::sendMediaNavigateMessage(media_url); -} -//static  -void LLFloaterMediaBrowser::onClickRewind(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	if(self->mBrowser->getMediaPlugin()) -		self->mBrowser->getMediaPlugin()->start(-2.0f); -} -//static  -void LLFloaterMediaBrowser::onClickPlay(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	LLPluginClassMedia* plugin = self->mBrowser->getMediaPlugin(); -	if(plugin) -	{ -		if(plugin->getStatus() == LLPluginClassMediaOwner::MEDIA_PLAYING) -		{ -			plugin->pause(); -		} -		else -		{ -			plugin->start(); -		} -	} -} -//static  -void LLFloaterMediaBrowser::onClickStop(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	if(self->mBrowser->getMediaPlugin()) -		self->mBrowser->getMediaPlugin()->stop(); -} -//static  -void LLFloaterMediaBrowser::onClickSeek(void* user_data) -{ -	LLFloaterMediaBrowser* self = (LLFloaterMediaBrowser*)user_data; - -	if(self->mBrowser->getMediaPlugin()) -		self->mBrowser->getMediaPlugin()->start(2.0f); -} -void LLFloaterMediaBrowser::openMedia(const std::string& media_url, const std::string& target) -{ -	mBrowser->setHomePageUrl(media_url); -	mBrowser->setTarget(target); -	mBrowser->navigateTo(media_url); -	setCurrentURL(media_url); -} - - diff --git a/indra/newview/llfloatermediabrowser.h b/indra/newview/llfloatermediabrowser.h deleted file mode 100644 index 152d221a01..0000000000 --- a/indra/newview/llfloatermediabrowser.h +++ /dev/null @@ -1,86 +0,0 @@ -/**  - * @file llfloatermediabrowser.h - * @brief media browser floater - uses embedded media browser control - * - * $LicenseInfo:firstyear=2006&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - *  - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; - * version 2.1 of the License only. - *  - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU - * Lesser General Public License for more details. - *  - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA - *  - * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLFLOATERMEDIABROWSER_H -#define LL_LLFLOATERMEDIABROWSER_H - -#include "llfloater.h" -#include "llmediactrl.h" - - -class LLComboBox; -class LLMediaCtrl; -class LLNotification; - -class LLFloaterMediaBrowser :  -	public LLFloater,  -	public LLViewerMediaObserver -{ -public: -    LOG_CLASS(LLFloaterMediaBrowser); -	LLFloaterMediaBrowser(const LLSD& key); - -	static void create(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null); - -	static void closeRequest(const std::string &uuid); -	static void geometryChanged(const std::string &uuid, S32 x, S32 y, S32 width, S32 height); -	void geometryChanged(S32 x, S32 y, S32 width, S32 height); -	 -	/*virtual*/ BOOL postBuild(); -	/*virtual*/ void onClose(bool app_quitting); -	/*virtual*/ void draw(); - -	// inherited from LLViewerMediaObserver -	/*virtual*/ void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); - -	void openMedia(const std::string& media_url, const std::string& target); -	void buildURLHistory(); -	std::string getSupportURL(); -	void setCurrentURL(const std::string& url); - -	static void onEnterAddress(LLUICtrl* ctrl, void* user_data); -	static void onClickRefresh(void* user_data); -	static void onClickBack(void* user_data); -	static void onClickForward(void* user_data); -	static void onClickGo(void* user_data); -	static void onClickClose(void* user_data); -	static void onClickOpenWebBrowser(void* user_data); -	static void onClickAssign(void* user_data); -	static void onClickRewind(void* user_data); -	static void onClickPlay(void* user_data); -	static void onClickStop(void* user_data); -	static void onClickSeek(void* user_data); - -private: -	LLMediaCtrl* mBrowser; -	LLComboBox* mAddressCombo; -	std::string mCurrentURL; -	boost::shared_ptr<LLNotification> mCurNotification; -	std::string mUUID; -}; - -#endif  // LL_LLFLOATERMEDIABROWSER_H - diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 18c3f76826..acbec531b6 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1128,19 +1128,78 @@ LLInventoryPanel* LLInventoryPanel::getActiveInventoryPanel(BOOL auto_open)  	{  		// Make sure the floater is not minimized (STORM-438).  		if (active_inv_floaterp && active_inv_floaterp->isMinimized()) +		{  			active_inv_floaterp->setMinimized(FALSE); +		} +	}	 +	else if (auto_open) +	{ +		floater_inventory->openFloater(); -		return res; +		res = sidepanel_inventory->getActivePanel();  	} + +	return res; +} + +//static +void LLInventoryPanel::openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id) +{ +	LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open); + +	if (active_panel) +	{ +		LL_DEBUGS("Messaging") << "Highlighting" << obj_id  << LL_ENDL; -	// C. If no panels are open and we don't want to force open a panel, then just abort out. -	if (!auto_open) return NULL; -	 -	// D. Open the inventory side panel floater and use that. -	floater_inventory->openFloater(); -	return sidepanel_inventory->getActivePanel(); +		LLViewerInventoryItem * item = gInventory.getItem(obj_id); +		LLViewerInventoryCategory * cat = gInventory.getCategory(obj_id); +		 +		bool in_inbox = false; +		bool in_outbox = false; +		 +		LLViewerInventoryCategory * parent_cat = NULL; +		 +		if (item) +		{ +			parent_cat = gInventory.getCategory(item->getParentUUID()); +		} +		else if (cat) +		{ +			parent_cat = gInventory.getCategory(cat->getParentUUID()); +		} +		 +		if (parent_cat) +		{ +			in_inbox = (LLFolderType::FT_INBOX == parent_cat->getPreferredType()); +			in_outbox = (LLFolderType::FT_OUTBOX == parent_cat->getPreferredType()); +		} +		 +		if (in_inbox || in_outbox) +		{ +			LLSidepanelInventory * sidepanel_inventory =	LLFloaterSidePanelContainer::getPanel<LLSidepanelInventory>("inventory"); +			LLInventoryPanel * inventory_panel = NULL; +			 +			if (in_inbox) +			{ +				sidepanel_inventory->openInbox(); +				inventory_panel = sidepanel_inventory->getInboxPanel(); +			} +			else +			{ +				sidepanel_inventory->openOutbox(); +				inventory_panel = sidepanel_inventory->getOutboxPanel(); +			} -	return NULL; +			if (inventory_panel) +			{ +				inventory_panel->setSelection(obj_id, TAKE_FOCUS_YES); +			} +		} +		else +		{ +			active_panel->setSelection(obj_id, TAKE_FOCUS_YES); +		} +	}  }  void LLInventoryPanel::addHideFolderType(LLFolderType::EType folder_type) diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index 8635ebc5c8..2a24327115 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -175,6 +175,8 @@ public:  	// Find whichever inventory panel is active / on top.  	// "Auto_open" determines if we open an inventory panel if none are open.  	static LLInventoryPanel *getActiveInventoryPanel(BOOL auto_open = TRUE); +	 +	static void openInventoryPanelAndSetSelection(BOOL auto_open, const LLUUID& obj_id);  protected:  	void openStartFolderOrMyInventory(); // open the first level of inventory diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 58ba0219cc..74fa5d350a 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -57,7 +57,6 @@  #include "llcheckboxctrl.h"  #include "llnotifications.h"  #include "lllineeditor.h" -#include "llfloatermediabrowser.h"  #include "llfloaterwebcontent.h"  #include "llwindowshade.h" @@ -1082,26 +1081,6 @@ void LLMediaCtrl::onPopup(const LLSD& notification, const LLSD& response)  {  	if (response["open"])  	{ -		// name of default floater to open -		std::string floater_name = "media_browser"; - -		// look for parent floater name -		if ( gFloaterView ) -		{ -			if ( gFloaterView->getParentFloater(this) ) -			{ -				floater_name = gFloaterView->getParentFloater(this)->getInstanceName(); -			} -			else -			{ -				lldebugs << "No gFloaterView->getParentFloater(this) for onPopuup()" << llendl; -			}; -		} -		else -		{ -			lldebugs << "No gFloaterView for onPopuup()" << llendl; -		}; -  		LLWeb::loadURL(notification["payload"]["url"], notification["payload"]["target"], notification["payload"]["uuid"]);  	}  	else diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index fc264db5af..146bcbe47b 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -54,7 +54,6 @@  #include "llworldmapmessage.h"  #include "llappviewer.h"  #include "llviewercontrol.h" -#include "llfloatermediabrowser.h"  #include "llweb.h"  #include "llhints.h" diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp index df89adb8da..678e4f2843 100644 --- a/indra/newview/llpanelmarketplaceinboxinventory.cpp +++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp @@ -189,16 +189,16 @@ void LLInboxFolderViewFolder::draw()  void LLInboxFolderViewFolder::selectItem()  { -	LLFolderViewFolder::selectItem(); -  	deFreshify(); + +	LLFolderViewFolder::selectItem();  }  void LLInboxFolderViewFolder::toggleOpen()  { -	LLFolderViewFolder::toggleOpen(); -  	deFreshify(); + +	LLFolderViewFolder::toggleOpen();  }  void LLInboxFolderViewFolder::computeFreshness() @@ -270,7 +270,9 @@ BOOL LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder, LLFolderView  BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)  { -	return TRUE; +	deFreshify(); +	 +	return LLFolderViewItem::handleDoubleClick(x, y, mask);  }  // virtual @@ -290,9 +292,9 @@ void LLInboxFolderViewItem::draw()  void LLInboxFolderViewItem::selectItem()  { -	LLFolderViewItem::selectItem(); -  	deFreshify(); + +	LLFolderViewItem::selectItem();  }  void LLInboxFolderViewItem::computeFreshness() diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 04e78e04e3..50dc66ed7c 100755 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -134,7 +134,10 @@ public:  		LLFloater* picks_floater = LLFloaterReg::showInstance("picks");  		LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks"); -		picks->createNewPick(); +		if (picks) +		{ +			picks->createNewPick(); +		}  	}  	void editPick(LLPickData* pick_info) @@ -147,7 +150,7 @@ public:  		params["snapshot_id"] = pick_info->snapshot_id;  		params["pick_name"] = pick_info->name;  		params["pick_desc"] = pick_info->desc; -		LLFloaterSidePanelContainer::showPanel("my_profile", params); +		LLFloaterSidePanelContainer::showPanel("picks", params);  	}  	/*virtual*/ void processProperties(void* data, EAvatarProcessorType type) @@ -251,7 +254,10 @@ public:  		LLFloater* picks_floater = LLFloaterReg::showInstance("picks");  		LLPanelPicks* picks = picks_floater->findChild<LLPanelPicks>("panel_picks"); -		picks->createNewClassified(); +		if (picks) +		{ +			picks->createNewClassified(); +		}  	}  	void openClassified(LLAvatarClassifiedInfo* c_info) @@ -269,7 +275,7 @@ public:  			params["classified_name"] = c_info->name;  			params["classified_desc"] = c_info->description;  			params["from_search"] = true; -			LLFloaterSidePanelContainer::showPanel("people", "panel_profile_view", params); +			LLFloaterSidePanelContainer::showPanel("picks", params);  		}  		else if (mRequestVerb == "edit")  		{ diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 91f8035556..9d069c3996 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -450,6 +450,24 @@ void LLSidepanelInventory::enableOutbox(bool enabled)  	}  } +void LLSidepanelInventory::openInbox() +{ +	if (mInboxEnabled) +	{ +		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true); +		onToggleInboxBtn(); +	} +} + +void LLSidepanelInventory::openOutbox() +{ +	if (mOutboxEnabled) +	{ +		getChild<LLButton>(OUTBOX_BUTTON_NAME)->setToggleState(true); +		onToggleOutboxBtn(); +	} +} +  void LLSidepanelInventory::onInboxChanged(const LLUUID& inbox_id)  {  	// Trigger a load of the entire inbox so we always know the contents and their creation dates for sorting diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h index 4e34926a4b..2c6f807013 100644 --- a/indra/newview/llsidepanelinventory.h +++ b/indra/newview/llsidepanelinventory.h @@ -58,6 +58,9 @@ public:  	/*virtual*/ void onOpen(const LLSD& key);  	LLInventoryPanel* getActivePanel(); // Returns an active inventory panel, if any. +	LLInventoryPanel* getInboxPanel() const { return mInventoryPanelInbox; } +	LLInventoryPanel* getOutboxPanel() const { return mInventoryPanelOutbox; } +  	LLPanelMainInventory* getMainInventoryPanel() const { return mPanelMainInventory; }  	BOOL isMainInventoryPanelActive() const; @@ -77,6 +80,9 @@ public:  	void enableInbox(bool enabled);  	void enableOutbox(bool enabled); +	void openInbox(); +	void openOutbox(); +	  	bool isInboxEnabled() const { return mInboxEnabled; }  	bool isOutboxEnabled() const { return mOutboxEnabled; } diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 9d8d1be0f5..66187f6b42 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -2034,7 +2034,7 @@ bool idle_startup()  		show_debug_menus(); // Debug menu visiblity and First Use trigger  		// If we've got a startup URL, dispatch it -		LLStartUp::dispatchURL(); +		//LLStartUp::dispatchURL();  		// Retrieve information about the land data  		// (just accessing this the first time will fetch it, @@ -2694,12 +2694,12 @@ void LLStartUp::cleanupNameCache()  bool LLStartUp::dispatchURL()  {  	// ok, if we've gotten this far and have a startup URL -        if (!getStartSLURL().isValid()) +    if (!getStartSLURL().isValid())  	{  	  return false;  	} -        if(getStartSLURL().getType() != LLSLURL::APP) -	  { +    if(getStartSLURL().getType() != LLSLURL::APP) +	{  		// If we started with a location, but we're already  		// at that location, don't pop dialogs open. diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 74c4f6d2dc..273bf822bc 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -64,7 +64,6 @@  #include "llfloatergroups.h"  #include "llfloaterhardwaresettings.h"  #include "llfloaterhelpbrowser.h" -#include "llfloatermediabrowser.h"  #include "llfloaterwebcontent.h"  #include "llfloatermediasettings.h"  #include "llfloaterhud.h" @@ -226,7 +225,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("land_holdings", "floater_land_holdings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLandHoldings>);  	LLFloaterReg::add("mem_leaking", "floater_mem_leaking.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMemLeak>); -	LLFloaterReg::add("media_browser", "floater_media_browser.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaBrowser>);	  	LLFloaterReg::add("media_settings", "floater_media_settings.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMediaSettings>);	  	LLFloaterReg::add("message_critical", "floater_critical.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>);  	LLFloaterReg::add("message_tos", "floater_tos.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterTOS>); diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 2858330597..67c8a4b902 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -69,7 +69,6 @@  #include "llwindow.h" -#include "llfloatermediabrowser.h"	// for handling window close requests and geometry change requests in media browser windows.  #include "llfloaterwebcontent.h"	// for handling window close requests and geometry change requests in media browser windows.  #include <boost/bind.hpp>	// for SkinFolder listener @@ -3374,7 +3373,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla  			{  				// This close request is directed at another instance  				pass_through = false; -				LLFloaterMediaBrowser::closeRequest(uuid);  				LLFloaterWebContent::closeRequest(uuid);  			}  		} @@ -3394,7 +3392,6 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla  			{  				// This request is directed at another instance  				pass_through = false; -				LLFloaterMediaBrowser::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());  				LLFloaterWebContent::geometryChanged(uuid, plugin->getGeometryX(), plugin->getGeometryY(), plugin->getGeometryWidth(), plugin->getGeometryHeight());  			}  		} diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 7cae19a1d2..dca5cdd06d 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1256,14 +1256,7 @@ void open_inventory_offer(const uuid_vec_t& objects, const std::string& from_nam  		const BOOL auto_open =   			gSavedSettings.getBOOL("ShowInInventory") && // don't open if showininventory is false  			!from_name.empty(); // don't open if it's not from anyone. -		LLInventoryPanel *active_panel = LLInventoryPanel::getActiveInventoryPanel(auto_open); -		if(active_panel) -		{ -			LL_DEBUGS("Messaging") << "Highlighting" << obj_id  << LL_ENDL; -			LLFocusableElement* focus_ctrl = gFocusMgr.getKeyboardFocus(); -			active_panel->setSelection(obj_id, TAKE_FOCUS_NO); -			gFocusMgr.setKeyboardFocus(focus_ctrl); -		} +		LLInventoryPanel::openInventoryPanelAndSetSelection(auto_open, obj_id);  	}  } diff --git a/indra/newview/llweb.cpp b/indra/newview/llweb.cpp index b2f35892d0..d2d48dc68f 100644 --- a/indra/newview/llweb.cpp +++ b/indra/newview/llweb.cpp @@ -34,7 +34,6 @@  #include "llagent.h"  #include "llappviewer.h" -#include "llfloatermediabrowser.h"  #include "llfloaterwebcontent.h"  #include "llfloaterreg.h"  #include "lllogininstance.h" @@ -78,32 +77,15 @@ void LLWeb::initClass()  } -// static -void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid) -{ -	loadWebURL(url, target, uuid); -	//if(target == "_internal") -	//{ -	//	// Force load in the internal browser, as if with a blank target. -	//	loadURLInternal(url, "", uuid); -	//} -	//else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external")) -	//{ -	//	loadURLExternal(url); -	//} -	//else -	//{ -	//	loadURLInternal(url, target, uuid); -	//} -} +  // static -void LLWeb::loadWebURL(const std::string& url, const std::string& target, const std::string& uuid) +void LLWeb::loadURL(const std::string& url, const std::string& target, const std::string& uuid)  {  	if(target == "_internal")  	{  		// Force load in the internal browser, as if with a blank target. -		loadWebURLInternal(url, "", uuid); +		loadURLInternal(url, "", uuid);  	}  	else if (gSavedSettings.getBOOL("UseExternalBrowser") || (target == "_external"))  	{ @@ -111,19 +93,13 @@ void LLWeb::loadWebURL(const std::string& url, const std::string& target, const  	}  	else  	{ -		loadWebURLInternal(url, target, uuid); +		loadURLInternal(url, target, uuid);  	}  }  // static -void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid) -{ -	LLFloaterMediaBrowser::create(url, target, uuid); -} - -// static  // Explicitly open a Web URL using the Web content floater -void LLWeb::loadWebURLInternal(const std::string &url, const std::string& target, const std::string& uuid) +void LLWeb::loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid)  {  	LLFloaterWebContent::Params p;  	p.url(url).target(target).id(uuid); diff --git a/indra/newview/llweb.h b/indra/newview/llweb.h index 376abc0ece..0b95f664d6 100644 --- a/indra/newview/llweb.h +++ b/indra/newview/llweb.h @@ -42,23 +42,15 @@ class LLWeb  public:  	static void initClass(); -	/// Load the given url in the user's preferred web browser -	static void loadURL(const std::string& url, const std::string& target, const std::string& uuid = LLStringUtil::null); -	static void loadURL(const std::string& url) { loadURL(url, LLStringUtil::null); } -	/// Load the given url in the user's preferred web browser	 -	static void loadURL(const char* url, const std::string& target = LLStringUtil::null) { loadURL( ll_safe_string(url), target); } -	/// Load the given url in the Second Life internal web browser -	static void loadURLInternal(const std::string &url, const std::string& target, const std::string& uuid = LLStringUtil::null); -	static void loadURLInternal(const std::string &url) { loadURLInternal(url, LLStringUtil::null, LLStringUtil::null);}  	/// Load the given url in the operating system's web browser, async if we want to return immediately  	/// before browser has spawned  	static void loadURLExternal(const std::string& url) {loadURLExternal(url, LLStringUtil::null);}  	static void loadURLExternal(const std::string& url, const std::string& uuid);  	static void loadURLExternal(const std::string& url, bool async, const std::string& uuid = LLStringUtil::null); -	// Explicitly open a Web URL using the Web content floater vs. the more general media browser -	static void loadWebURL(const std::string& url, const std::string& target, const std::string& uuid); -	static void loadWebURLInternal(const std::string &url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null); +	static void loadURL(const std::string& url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null); +	// load content using built-in browser +	static void loadURLInternal(const std::string &url, const std::string& target = LLStringUtil::null, const std::string& uuid = LLStringUtil::null);  	/// Returns escaped url (eg, " " to "%20") - used by all loadURL methods  	static std::string escapeURL(const std::string& url); diff --git a/indra/newview/llworldmapmessage.cpp b/indra/newview/llworldmapmessage.cpp index 66d0d698ba..8307d32336 100644 --- a/indra/newview/llworldmapmessage.cpp +++ b/indra/newview/llworldmapmessage.cpp @@ -210,15 +210,14 @@ void LLWorldMapMessage::processMapBlockReply(LLMessageSystem* msg, void**)  		}  		// Handle the SLURL callback if any -		if(LLWorldMapMessage::getInstance()->mSLURLCallback != NULL) +		url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback; +		if(callback != NULL)  		{  			U64 handle = to_region_handle(x_world, y_world);  			// Check if we reached the requested region  			if ((LLStringUtil::compareInsensitive(LLWorldMapMessage::getInstance()->mSLURLRegionName, name)==0)  				|| (LLWorldMapMessage::getInstance()->mSLURLRegionHandle == handle))  			{ -				url_callback_t callback = LLWorldMapMessage::getInstance()->mSLURLCallback; -  				LLWorldMapMessage::getInstance()->mSLURLCallback = NULL;  				LLWorldMapMessage::getInstance()->mSLURLRegionName.clear();  				LLWorldMapMessage::getInstance()->mSLURLRegionHandle = 0; diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml index 80e310a873..8ac1ac9e09 100644 --- a/indra/newview/skins/default/xui/en/menu_login.xml +++ b/indra/newview/skins/default/xui/en/menu_login.xml @@ -167,13 +167,6 @@               function="Floater.Show"               parameter="message_critical" />          </menu_item_call> -        <menu_item_call -         label="Media Browser Test" -         name="Web Browser Test"> -          <menu_item_call.on_click -           function="Advanced.WebBrowserTest" -           parameter="http://join.secondlife.com/"/> -        </menu_item_call>        <menu_item_call         label="Web Content Floater Debug Test"         name="Web Content Floater Debug Test"> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml index f47e9874b4..0e29ed0d0b 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_adhoc.xml @@ -22,6 +22,7 @@        draw_border="false"        height="24"        left="25" +      bottom="1"              name="speaker"        visible="false"        width="20" /> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml index 8dfdf95e80..77011139bf 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_group.xml @@ -22,6 +22,7 @@        draw_border="false"        height="24"        left="25" +      bottom="1"              name="speaker"        visible="false"        width="20" /> diff --git a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml index cef698e577..8b56a8f0f6 100644 --- a/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml +++ b/indra/newview/skins/default/xui/en/widgets/chiclet_im_p2p.xml @@ -22,6 +22,7 @@        draw_border="false"        height="24"        left="25" +      bottom="1"        name="speaker"        visible="false"        width="20" /> diff --git a/indra/newview/skins/default/xui/ru/floater_destinations.xml b/indra/newview/skins/default/xui/ru/floater_destinations.xml index e769812beb..bb068c8125 100644 --- a/indra/newview/skins/default/xui/ru/floater_destinations.xml +++ b/indra/newview/skins/default/xui/ru/floater_destinations.xml @@ -1,2 +1,2 @@  <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater name="Destinations" title="МЕСТА"/> +<floater name="Destinations" title="ПУНКТЫ"/> diff --git a/indra/newview/skins/default/xui/ru/strings.xml b/indra/newview/skins/default/xui/ru/strings.xml index df657b39c6..89a2c2543d 100644 --- a/indra/newview/skins/default/xui/ru/strings.xml +++ b/indra/newview/skins/default/xui/ru/strings.xml @@ -4794,7 +4794,7 @@ support@secondlife.com.  		Компас  	</string>  	<string name="Command_Destinations_Label"> -		Места +		Пункты  	</string>  	<string name="Command_Gestures_Label">  		Жесты | 
