diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2012-11-06 16:37:51 -0500 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2012-11-06 16:37:51 -0500 | 
| commit | 55a812ca7797ec1b857e95254fde1fa75bd92d06 (patch) | |
| tree | c15fdb992af40162cc5adb3c25257f3ba1f069a1 /indra/newview | |
| parent | bf6d1670756ba96abde570e7dbbf94c62c71ca5b (diff) | |
| parent | a9ea41003587e2411c7247f84ea04df2a686552b (diff) | |
Automated merge with http://hg.secondlife.com/viewer-development
Diffstat (limited to 'indra/newview')
| -rwxr-xr-x | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llappviewer.cpp | 65 | ||||
| -rw-r--r-- | indra/newview/lldaycyclemanager.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterhelpbrowser.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llfloateruipreview.cpp | 122 | ||||
| -rw-r--r-- | indra/newview/llhints.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llmediactrl.cpp | 30 | ||||
| -rw-r--r-- | indra/newview/llpreviewscript.cpp | 2 | ||||
| -rwxr-xr-x | indra/newview/llstartup.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llsyswellwindow.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/lltoast.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerhelp.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/llviewertexturelist.cpp | 56 | ||||
| -rwxr-xr-x | indra/newview/llviewerwindow.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llwaterparammanager.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llwlparammanager.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/skins/paths.xml | 10 | ||||
| -rw-r--r-- | indra/newview/tests/lldir_stub.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/viewer_manifest.py | 10 | 
20 files changed, 122 insertions, 244 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5e42fc29f7..f5badb078d 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4051,17 +4051,6 @@        <key>Value</key>        <integer>305</integer>      </map> -    <key>HelpUseLocal</key> -    <map> -      <key>Comment</key> -      <string>If set, always use this for help: skins/default/html/[LANGUAGE]/help-offline/index.html</string> -      <key>Persist</key> -      <integer>0</integer> -      <key>Type</key> -      <string>Boolean</string> -      <key>Value</key> -      <integer>0</integer> -    </map>      <key>HelpURLFormat</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 0a9d6229ef..3cdd5cffc1 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -123,7 +123,6 @@  #include <boost/algorithm/string.hpp> -  #if LL_WINDOWS  #	include <share.h> // For _SH_DENYWR in initMarkerFile  #else @@ -691,7 +690,7 @@ bool LLAppViewer::init()  	gDirUtilp->initAppDirs("SecondLife");  	// set skin search path to default, will be overridden later  	// this allows simple skinned file lookups to work -	gDirUtilp->setSkinFolder("default"); +	gDirUtilp->setSkinFolder("default", "en");  	initLogging(); @@ -775,12 +774,16 @@ bool LLAppViewer::init()  		&LLUI::sGLScaleFactor);  	LL_INFOS("InitInfo") << "UI initialized." << LL_ENDL ; -	// Setup paths and LLTrans after LLUI::initClass has been called. -	LLUI::setupPaths(); +	// NOW LLUI::getLanguage() should work. gDirUtilp must know the language +	// for this session ASAP so all the file-loading commands that follow, +	// that use findSkinnedFilenames(), will include the localized files. +	gDirUtilp->setSkinFolder(gDirUtilp->getSkinFolder(), LLUI::getLanguage()); + +	// Setup LLTrans after LLUI::initClass has been called.  	LLTransUtil::parseStrings("strings.xml", default_trans_args);  	LLTransUtil::parseLanguageStrings("language_settings.xml"); -	// Setup notifications after LLUI::setupPaths() has been called. +	// Setup notifications after LLUI::initClass() has been called.  	LLNotifications::instance();  	LL_INFOS("InitInfo") << "Notifications initialized." << LL_ENDL ; @@ -2252,8 +2255,7 @@ bool LLAppViewer::initConfiguration()  		OSMessageBox(msg.str(),LLStringUtil::null,OSMB_OK);  		return false;  	} -	 -	LLUI::setupPaths(); // setup paths for LLTrans based on settings files only +  	LLTransUtil::parseStrings("strings.xml", default_trans_args);  	LLTransUtil::parseLanguageStrings("language_settings.xml");  	// - set procedural settings @@ -2569,13 +2571,15 @@ bool LLAppViewer::initConfiguration()  		LLStartUp::setStartSLURL(start_slurl);      } -    const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinCurrent"); -    if(skinfolder && LLStringUtil::null != skinfolder->getValue().asString()) -    {    -		// hack to force the skin to default. -        gDirUtilp->setSkinFolder(skinfolder->getValue().asString()); -		//gDirUtilp->setSkinFolder("default"); -    } +	const LLControlVariable* skinfolder = gSavedSettings.getControl("SkinCurrent"); +	if(skinfolder && LLStringUtil::null != skinfolder->getValue().asString()) +	{	 +		// Examining "Language" may not suffice -- see LLUI::getLanguage() +		// logic. Unfortunately LLUI::getLanguage() doesn't yet do us much +		// good because we haven't yet called LLUI::initClass(). +		gDirUtilp->setSkinFolder(skinfolder->getValue().asString(), +								 gSavedSettings.getString("Language")); +	}  	if (gSavedSettings.getBOOL("SpellCheck"))  	{ @@ -3599,8 +3603,7 @@ void LLAppViewer::migrateCacheDirectory()  	{  		gSavedSettings.setBOOL("MigrateCacheDirectory", FALSE); -		std::string delimiter = gDirUtilp->getDirDelimiter(); -		std::string old_cache_dir = gDirUtilp->getOSUserAppDir() + delimiter + "cache"; +		std::string old_cache_dir = gDirUtilp->add(gDirUtilp->getOSUserAppDir(), "cache");  		std::string new_cache_dir = gDirUtilp->getCacheDir(true);  		if (gDirUtilp->fileExists(old_cache_dir)) @@ -3616,8 +3619,8 @@ void LLAppViewer::migrateCacheDirectory()  			while (iter.next(file_name))  			{  				if (file_name == "." || file_name == "..") continue; -				std::string source_path = old_cache_dir + delimiter + file_name; -				std::string dest_path = new_cache_dir + delimiter + file_name; +				std::string source_path = gDirUtilp->add(old_cache_dir, file_name); +				std::string dest_path = gDirUtilp->add(new_cache_dir, file_name);  				if (!LLFile::rename(source_path, dest_path))  				{  					file_count++; @@ -3848,7 +3851,7 @@ bool LLAppViewer::initCache()  		LLDirIterator iter(dir, mask);  		if (iter.next(found_file))  		{ -			old_vfs_data_file = dir + gDirUtilp->getDirDelimiter() + found_file; +			old_vfs_data_file = gDirUtilp->add(dir, found_file);  			S32 start_pos = found_file.find_last_of('.');  			if (start_pos > 0) @@ -5163,20 +5166,20 @@ void LLAppViewer::launchUpdater()  	// we tell the updater where to find the xml containing string  	// translations which it can use for its own UI  	std::string xml_strings_file = "strings.xml"; -	std::vector<std::string> xui_path_vec = LLUI::getXUIPaths(); +	std::vector<std::string> xui_path_vec = +		gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_strings_file);  	std::string xml_search_paths; -	std::vector<std::string>::const_iterator iter; +	const char* delim = "";  	// build comma-delimited list of xml paths to pass to updater -	for (iter = xui_path_vec.begin(); iter != xui_path_vec.end(); ) -	{ -		std::string this_skin_dir = gDirUtilp->getDefaultSkinDir() -			+ gDirUtilp->getDirDelimiter() -			+ (*iter); -		llinfos << "Got a XUI path: " << this_skin_dir << llendl; -		xml_search_paths.append(this_skin_dir); -		++iter; -		if (iter != xui_path_vec.end()) -			xml_search_paths.append(","); // comma-delimit +	BOOST_FOREACH(std::string this_skin_path, xui_path_vec) +	{ +		// Although we already have the full set of paths with the filename +		// appended, the linux-updater.bin command-line switches require us to +		// snip the filename OFF and pass it as a separate switch argument. :-P +		llinfos << "Got a XUI path: " << this_skin_path << llendl; +		xml_search_paths.append(delim); +		xml_search_paths.append(gDirUtilp->getDirName(this_skin_path)); +		delim = ",";  	}  	// build the overall command-line to run the updater correctly  	LLAppViewer::sUpdaterInfo->mUpdateExePath =  diff --git a/indra/newview/lldaycyclemanager.cpp b/indra/newview/lldaycyclemanager.cpp index 347a467a8b..8af2f4ea33 100644 --- a/indra/newview/lldaycyclemanager.cpp +++ b/indra/newview/lldaycyclemanager.cpp @@ -184,7 +184,7 @@ void LLDayCycleManager::loadPresets(const std::string& dir)  	{  		std::string file;  		if (!dir_iter.next(file)) break; // no more files -		loadPreset(dir + file); +		loadPreset(gDirUtilp->add(dir, file));  	}  } diff --git a/indra/newview/llfloaterhelpbrowser.cpp b/indra/newview/llfloaterhelpbrowser.cpp index fd9c37ae73..4cb632bd6a 100644 --- a/indra/newview/llfloaterhelpbrowser.cpp +++ b/indra/newview/llfloaterhelpbrowser.cpp @@ -77,15 +77,7 @@ void LLFloaterHelpBrowser::onOpen(const LLSD& key)  	gSavedSettings.setBOOL("HelpFloaterOpen", TRUE);  	std::string topic = key.asString(); - -	if (topic == "__local") -	{ -		mBrowser->navigateToLocalPage( "help-offline" , "index.html" ); -	} -	else -	{ -		mBrowser->navigateTo(LLViewerHelp::instance().getURL(topic)); -	} +	mBrowser->navigateTo(LLViewerHelp::instance().getURL(topic));  }  //virtual diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index d741b5b133..15e0b89f6c 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -137,7 +137,7 @@ public:  	virtual ~LLFloaterUIPreview();  	std::string getLocStr(S32 ID);							// fetches the localization string based on what is selected in the drop-down menu -	void displayFloater(BOOL click, S32 ID, bool save = false);			// needs to be public so live file can call it when it finds an update +	void displayFloater(BOOL click, S32 ID);			// needs to be public so live file can call it when it finds an update  	/*virtual*/ BOOL postBuild();  	/*virtual*/ void onClose(bool app_quitting); @@ -291,7 +291,8 @@ LLLocalizationResetForcer::LLLocalizationResetForcer(LLFloaterUIPreview* floater  {  	mSavedLocalization = LLUI::sSettingGroups["config"]->getString("Language");				// save current localization setting  	LLUI::sSettingGroups["config"]->setString("Language", floater->getLocStr(ID));// hack language to be the one we want to preview floaters in -	LLUI::setupPaths();														// forcibly reset XUI paths with this new language +	// forcibly reset XUI paths with this new language +	gDirUtilp->setSkinFolder(gDirUtilp->getSkinFolder(), floater->getLocStr(ID));  }  // Actually reset in destructor @@ -299,7 +300,8 @@ LLLocalizationResetForcer::LLLocalizationResetForcer(LLFloaterUIPreview* floater  LLLocalizationResetForcer::~LLLocalizationResetForcer()  {  	LLUI::sSettingGroups["config"]->setString("Language", mSavedLocalization);	// reset language to what it was before we changed it -	LLUI::setupPaths();														// forcibly reset XUI paths with this new language +	// forcibly reset XUI paths with this new language +	gDirUtilp->setSkinFolder(gDirUtilp->getSkinFolder(), mSavedLocalization);  }  // Live file constructor @@ -488,7 +490,7 @@ BOOL LLFloaterUIPreview::postBuild()  	{  		if((found = iter.next(language_directory)))							// get next directory  		{ -			std::string full_path = xui_dir + language_directory; +			std::string full_path = gDirUtilp->add(xui_dir, language_directory);  			if(LLFile::isfile(full_path.c_str()))																	// if it's not a directory, skip it  			{  				continue; @@ -773,7 +775,8 @@ void LLFloaterUIPreview::onClickDisplayFloater(S32 caller_id)  // Saves the current floater/panel  void LLFloaterUIPreview::onClickSaveFloater(S32 caller_id)  { -	displayFloater(TRUE, caller_id, true); +	displayFloater(TRUE, caller_id); +	popupAndPrintWarning("Save-floater functionality removed, use XML schema to clean up XUI files");  }  // Saves all floater/panels @@ -784,25 +787,15 @@ void LLFloaterUIPreview::onClickSaveAll(S32 caller_id)  	for (int index = 0; index < listSize; index++)  	{  		mFileList->selectNthItem(index); -		displayFloater(TRUE, caller_id, true); +		displayFloater(TRUE, caller_id);  	} -} - -// Given path to floater or panel XML file "filename.xml", -// returns "filename_new.xml" -static std::string append_new_to_xml_filename(const std::string& path) -{ -	std::string full_filename = gDirUtilp->findSkinnedFilename(LLUI::getLocalizedSkinPath(), path); -	std::string::size_type extension_pos = full_filename.rfind(".xml"); -	full_filename.resize(extension_pos); -	full_filename += "_new.xml"; -	return full_filename; +	popupAndPrintWarning("Save-floater functionality removed, use XML schema to clean up XUI files");  }  // Actually display the floater  // Only set up a new live file if this came from a click (at which point there should be no existing live file), rather than from the live file's update itself;  // otherwise, we get an infinite loop as the live file keeps recreating itself.  That means this function is generally called twice. -void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) +void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID)  {  	// Convince UI that we're in a different language (the one selected on the drop-down menu)  	LLLocalizationResetForcer reset_forcer(this, ID);						// save old language in reset forcer object (to be reset upon destruction when it falls out of scope) @@ -843,48 +836,13 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)  	if(!strncmp(path.c_str(),"floater_",8)  		|| !strncmp(path.c_str(), "inspect_", 8))		// if it's a floater  	{ -		if (save) -		{ -			LLXMLNodePtr floater_write = new LLXMLNode();			 -			(*floaterp)->buildFromFile(path, floater_write);	// just build it - -			if (!floater_write->isNull()) -			{ -				std::string full_filename = append_new_to_xml_filename(path); -				LLFILE* floater_temp = LLFile::fopen(full_filename.c_str(), "w"); -				LLXMLNode::writeHeaderToFile(floater_temp); -				const bool use_type_decorations = false; -				floater_write->writeToFile(floater_temp, std::string(), use_type_decorations); -				fclose(floater_temp); -			} -		} -		else -		{ -			(*floaterp)->buildFromFile(path);	// just build it -			(*floaterp)->openFloater((*floaterp)->getKey()); -			(*floaterp)->setCanResize((*floaterp)->isResizable()); -		} - +		(*floaterp)->buildFromFile(path);	// just build it +		(*floaterp)->openFloater((*floaterp)->getKey()); +		(*floaterp)->setCanResize((*floaterp)->isResizable());  	}  	else if (!strncmp(path.c_str(),"menu_",5))								// if it's a menu  	{ -		if (save) -		{	 -			LLXMLNodePtr menu_write = new LLXMLNode();	 -			LLMenuGL* menu = LLUICtrlFactory::getInstance()->createFromFile<LLMenuGL>(path, gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance(), menu_write); - -			if (!menu_write->isNull()) -			{ -				std::string full_filename = append_new_to_xml_filename(path); -				LLFILE* menu_temp = LLFile::fopen(full_filename.c_str(), "w"); -				LLXMLNode::writeHeaderToFile(menu_temp); -				const bool use_type_decorations = false; -				menu_write->writeToFile(menu_temp, std::string(), use_type_decorations); -				fclose(menu_temp); -			} - -			delete menu; -		} +		// former 'save' processing excised  	}  	else																// if it is a panel...  	{ @@ -896,39 +854,21 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)  		LLPanel::Params panel_params;  		LLPanel* panel = LLUICtrlFactory::create<LLPanel>(panel_params);	// create a new panel -		if (save) -		{ -			LLXMLNodePtr panel_write = new LLXMLNode(); -			panel->buildFromFile(path, panel_write);		// build it -			 -			if (!panel_write->isNull()) -			{ -				std::string full_filename = append_new_to_xml_filename(path); -				LLFILE* panel_temp = LLFile::fopen(full_filename.c_str(), "w"); -				LLXMLNode::writeHeaderToFile(panel_temp); -				const bool use_type_decorations = false; -				panel_write->writeToFile(panel_temp, std::string(), use_type_decorations); -				fclose(panel_temp); -			} -		} -		else -		{ -			panel->buildFromFile(path);										// build it -			LLRect new_size = panel->getRect();								// get its rectangle -			panel->setOrigin(2,2);											// reset its origin point so it's not offset by -left or other XUI attributes -			(*floaterp)->setTitle(path);									// use the file name as its title, since panels have no guaranteed meaningful name attribute -			panel->setUseBoundingRect(TRUE);								// enable the use of its outer bounding rect (normally disabled because it's O(n) on the number of sub-elements) -			panel->updateBoundingRect();									// update bounding rect -			LLRect bounding_rect = panel->getBoundingRect();				// get the bounding rect -			LLRect new_rect = panel->getRect();								// get the panel's rect -			new_rect.unionWith(bounding_rect);								// union them to make sure we get the biggest one possible -			LLRect floater_rect = new_rect; -			floater_rect.stretch(4, 4); -			(*floaterp)->reshape(floater_rect.getWidth(), floater_rect.getHeight() + floater_header_size);	// reshape floater to match the union rect's dimensions -			panel->reshape(new_rect.getWidth(), new_rect.getHeight());		// reshape panel to match the union rect's dimensions as well (both are needed) -			(*floaterp)->addChild(panel);					// add panel as child -			(*floaterp)->openFloater();						// open floater (needed?) -		} +		panel->buildFromFile(path);										// build it +		LLRect new_size = panel->getRect();								// get its rectangle +		panel->setOrigin(2,2);											// reset its origin point so it's not offset by -left or other XUI attributes +		(*floaterp)->setTitle(path);									// use the file name as its title, since panels have no guaranteed meaningful name attribute +		panel->setUseBoundingRect(TRUE);								// enable the use of its outer bounding rect (normally disabled because it's O(n) on the number of sub-elements) +		panel->updateBoundingRect();									// update bounding rect +		LLRect bounding_rect = panel->getBoundingRect();				// get the bounding rect +		LLRect new_rect = panel->getRect();								// get the panel's rect +		new_rect.unionWith(bounding_rect);								// union them to make sure we get the biggest one possible +		LLRect floater_rect = new_rect; +		floater_rect.stretch(4, 4); +		(*floaterp)->reshape(floater_rect.getWidth(), floater_rect.getHeight() + floater_header_size);	// reshape floater to match the union rect's dimensions +		panel->reshape(new_rect.getWidth(), new_rect.getHeight());		// reshape panel to match the union rect's dimensions as well (both are needed) +		(*floaterp)->addChild(panel);					// add panel as child +		(*floaterp)->openFloater();						// open floater (needed?)  	}  	if(ID == 1) @@ -964,7 +904,7 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save)  	(*floaterp)->center();  	addDependentFloater(*floaterp); -	if(click && ID == 1 && !save) +	if(click && ID == 1)  	{  		// set up live file to track it  		if(mLiveFile) diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp index e15862e2a4..197408b40e 100644 --- a/indra/newview/llhints.cpp +++ b/indra/newview/llhints.cpp @@ -171,12 +171,12 @@ LLHintPopup::LLHintPopup(const LLHintPopup::Params& p)  	}  	if (p.hint_image.isProvided())  	{ -		buildFromFile("panel_hint_image.xml", NULL, p); +		buildFromFile("panel_hint_image.xml", p);  		getChild<LLIconCtrl>("hint_image")->setImage(p.hint_image());  	}  	else  	{ -		buildFromFile( "panel_hint.xml", NULL, p); +		buildFromFile( "panel_hint.xml", p);  	}  } diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp index 7650fe9229..99b4707158 100644 --- a/indra/newview/llmediactrl.cpp +++ b/indra/newview/llmediactrl.cpp @@ -564,32 +564,13 @@ void LLMediaCtrl::navigateTo( std::string url_in, std::string mime_type)  //  void LLMediaCtrl::navigateToLocalPage( const std::string& subdir, const std::string& filename_in )  { -	std::string language = LLUI::getLanguage(); -	std::string delim = gDirUtilp->getDirDelimiter(); -	std::string filename; +	std::string filename(gDirUtilp->add(subdir, filename_in)); +	std::string expanded_filename = gDirUtilp->findSkinnedFilename("html", filename); -	filename += subdir; -	filename += delim; -	filename += filename_in; - -	std::string expanded_filename = gDirUtilp->findSkinnedFilename("html", language, filename); - -	if (! gDirUtilp->fileExists(expanded_filename)) +	if (expanded_filename.empty())  	{ -		if (language != "en") -		{ -			expanded_filename = gDirUtilp->findSkinnedFilename("html", "en", filename); -			if (! gDirUtilp->fileExists(expanded_filename)) -			{ -				llwarns << "File " << subdir << delim << filename_in << "not found" << llendl; -				return; -			} -		} -		else -		{ -			llwarns << "File " << subdir << delim << filename_in << "not found" << llendl; -			return; -		} +		llwarns << "File " << filename << "not found" << llendl; +		return;  	}  	if (ensureMediaSourceExists())  	{ @@ -597,7 +578,6 @@ void LLMediaCtrl::navigateToLocalPage( const std::string& subdir, const std::str  		mMediaSource->setSize(mTextureWidth, mTextureHeight);  		mMediaSource->navigateTo(expanded_filename, "text/html", false);  	} -  }  //////////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index 88727bf59b..9c25e69db0 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -815,7 +815,7 @@ void LLScriptEdCore::onBtnDynamicHelp()  	if (!live_help_floater)  	{  		live_help_floater = new LLFloater(LLSD()); -		live_help_floater->buildFromFile("floater_lsl_guide.xml", NULL); +		live_help_floater->buildFromFile("floater_lsl_guide.xml");  		LLFloater* parent = dynamic_cast<LLFloater*>(getParent());  		llassert(parent);  		if (parent) diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 42648b82c2..3d1fd74ba6 100755 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -3307,11 +3307,8 @@ bool process_login_success_response()  	{  		// replace the default help URL format  		gSavedSettings.setString("HelpURLFormat",text); -		 -		// don't fall back to Standalone's pre-connection static help -		gSavedSettings.setBOOL("HelpUseLocal", false);  	} -			 +  	std::string home_location = response["home"];  	if(!home_location.empty())  	{ diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 0cb6c85012..2002647fef 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -242,7 +242,7 @@ LLIMWellWindow::RowPanel::RowPanel(const LLSysWellWindow* parent, const LLUUID&  		S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId) :  		LLPanel(LLPanel::Params()), mChiclet(NULL), mParent(parent)  { -	buildFromFile( "panel_activeim_row.xml", NULL); +	buildFromFile( "panel_activeim_row.xml");  	// Choose which of the pre-created chiclets (IM/group) to use.  	// The other one gets hidden. @@ -356,7 +356,7 @@ LLIMWellWindow::ObjectRowPanel::ObjectRowPanel(const LLUUID& notification_id, bo   : LLPanel()   , mChiclet(NULL)  { -	buildFromFile( "panel_active_object_row.xml", NULL); +	buildFromFile( "panel_active_object_row.xml");  	initChiclet(notification_id); diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 0eec7f0afd..9dfb29b905 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -118,7 +118,7 @@ LLToast::LLToast(const LLToast::Params& p)  {  	mTimer.reset(new LLToastLifeTimer(this, p.lifetime_secs)); -	buildFromFile("panel_toast.xml", NULL); +	buildFromFile("panel_toast.xml");  	setCanDrag(FALSE); diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index a8a918f259..04c2e27c9d 100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp @@ -71,12 +71,6 @@ LLHelpHandler gHelpHandler;  std::string LLViewerHelp::getURL(const std::string &topic)  { -	// allow overriding the help server with a local help file -	if( gSavedSettings.getBOOL("HelpUseLocal") ) -	{ -		return "__local"; -	} -  	// if the help topic is empty, use the default topic  	std::string help_topic = topic;  	if (help_topic.empty()) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 1eb4bedfaf..47059b0b8c 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1184,12 +1184,9 @@ void LLViewerMedia::clearAllCookies()  	LLDirIterator dir_iter(base_dir, "*_*");  	while (dir_iter.next(filename))  	{ -		target = base_dir; -		target += filename; -		target += gDirUtilp->getDirDelimiter(); -		target += "browser_profile"; -		target += gDirUtilp->getDirDelimiter(); -		target += "cookies"; +		target = gDirUtilp->add(base_dir, filename); +		gDirUtilp->append(target, "browser_profile"); +		gDirUtilp->append(target, "cookies");  		lldebugs << "target = " << target << llendl;  		if(LLFile::isfile(target))  		{	 @@ -1197,10 +1194,8 @@ void LLViewerMedia::clearAllCookies()  		}  		// Other accounts may have new-style cookie files too -- delete them as well -		target = base_dir; -		target += filename; -		target += gDirUtilp->getDirDelimiter(); -		target += PLUGIN_COOKIE_FILE_NAME; +		target = gDirUtilp->add(base_dir, filename); +		gDirUtilp->append(target, PLUGIN_COOKIE_FILE_NAME);  		lldebugs << "target = " << target << llendl;  		if(LLFile::isfile(target))  		{	 diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index e4669cde34..49d7e8b842 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -1686,49 +1686,43 @@ struct UIImageDeclarations : public LLInitParam::Block<UIImageDeclarations>  bool LLUIImageList::initFromFile()  { -	// construct path to canonical textures.xml in default skin dir -	std::string base_file_path = gDirUtilp->getExpandedFilename(LL_PATH_SKINS, "default", "textures", "textures.xml"); +	// Look for textures.xml in all the right places. Pass +	// constraint=LLDir::ALL_SKINS because we want to overlay textures.xml +	// from all the skins directories. +	std::vector<std::string> textures_paths = +		gDirUtilp->findSkinnedFilenames(LLDir::TEXTURES, "textures.xml", LLDir::ALL_SKINS); +	std::vector<std::string>::const_iterator pi(textures_paths.begin()), pend(textures_paths.end()); +	if (pi == pend) +	{ +		llwarns << "No textures.xml found in skins directories" << llendl; +		return false; +	} +	// The first (most generic) file gets special validations  	LLXMLNodePtr root; - -	if (!LLXMLNode::parseFile(base_file_path, root, NULL)) +	if (!LLXMLNode::parseFile(*pi, root, NULL))  	{ -		llwarns << "Unable to parse UI image list file " << base_file_path << llendl; +		llwarns << "Unable to parse UI image list file " << *pi << llendl;  		return false;  	}  	if (!root->hasAttribute("version"))  	{ -		llwarns << "No valid version number in UI image list file " << base_file_path << llendl; +		llwarns << "No valid version number in UI image list file " << *pi << llendl;  		return false;  	}  	UIImageDeclarations images;  	LLXUIParser parser; -	parser.readXUI(root, images, base_file_path); - -	// add components defined in current skin -	std::string skin_update_path = gDirUtilp->getSkinDir()  -									+ gDirUtilp->getDirDelimiter()  -									+ "textures" -									+ gDirUtilp->getDirDelimiter() -									+ "textures.xml"; -	LLXMLNodePtr update_root; -	if (skin_update_path != base_file_path -		&& LLXMLNode::parseFile(skin_update_path, update_root, NULL)) -	{ -		parser.readXUI(update_root, images, skin_update_path); -	} - -	// add components defined in user override of current skin -	skin_update_path = gDirUtilp->getUserSkinDir()  -						+ gDirUtilp->getDirDelimiter()  -						+ "textures" -						+ gDirUtilp->getDirDelimiter() -						+ "textures.xml"; -	if (skin_update_path != base_file_path -		&& LLXMLNode::parseFile(skin_update_path, update_root, NULL)) -	{ -		parser.readXUI(update_root, images, skin_update_path); +	parser.readXUI(root, images, *pi); + +	// add components defined in the rest of the skin paths +	while (++pi != pend) +	{ +		LLXMLNodePtr update_root; +		if (LLXMLNode::parseFile(*pi, update_root, NULL)) +		{ +			parser.readXUI(update_root, images, *pi); +		}  	}  	if (!images.validateBlock()) return false; diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c3af0f6a51..44e6d70546 100755 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -1692,8 +1692,7 @@ LLViewerWindow::LLViewerWindow(const Params& p)  	LLFontGL::initClass( gSavedSettings.getF32("FontScreenDPI"),  								mDisplayScale.mV[VX],  								mDisplayScale.mV[VY], -								gDirUtilp->getAppRODataDir(), -								LLUI::getXUIPaths()); +								gDirUtilp->getAppRODataDir());  	// Create container for all sub-views  	LLView::Params rvp; @@ -4764,8 +4763,7 @@ void LLViewerWindow::initFonts(F32 zoom_factor)  	LLFontGL::initClass( gSavedSettings.getF32("FontScreenDPI"),  								mDisplayScale.mV[VX] * zoom_factor,  								mDisplayScale.mV[VY] * zoom_factor, -								gDirUtilp->getAppRODataDir(), -								LLUI::getXUIPaths()); +								gDirUtilp->getAppRODataDir());  	// Force font reloads, which can be very slow  	LLFontGL::loadDefaultFonts();  } diff --git a/indra/newview/llwaterparammanager.cpp b/indra/newview/llwaterparammanager.cpp index e386112334..4f52ff9778 100644 --- a/indra/newview/llwaterparammanager.cpp +++ b/indra/newview/llwaterparammanager.cpp @@ -100,7 +100,7 @@ void LLWaterParamManager::loadPresetsFromDir(const std::string& dir)  			break; // no more files  		} -		std::string path = dir + file; +		std::string path = gDirUtilp->add(dir, file);  		if (!loadPreset(path))  		{  			llwarns << "Error loading water preset from " << path << llendl; diff --git a/indra/newview/llwlparammanager.cpp b/indra/newview/llwlparammanager.cpp index 49d9d44d74..6077208799 100644 --- a/indra/newview/llwlparammanager.cpp +++ b/indra/newview/llwlparammanager.cpp @@ -283,7 +283,7 @@ void LLWLParamManager::loadPresetsFromDir(const std::string& dir)  			break; // no more files  		} -		std::string path = dir + file; +		std::string path = gDirUtilp->add(dir, file);  		if (!loadPreset(path))  		{  			llwarns << "Error loading sky preset from " << path << llendl; diff --git a/indra/newview/skins/paths.xml b/indra/newview/skins/paths.xml deleted file mode 100644 index 3c0da041c7..0000000000 --- a/indra/newview/skins/paths.xml +++ /dev/null @@ -1,10 +0,0 @@ -<paths>  -	<directory> -    <subdir>xui</subdir> -    <subdir>en</subdir> -  </directory> -	<directory> -    <subdir>xui</subdir> -    <subdir>[LANGUAGE]</subdir> -  </directory> -</paths>
\ No newline at end of file diff --git a/indra/newview/tests/lldir_stub.cpp b/indra/newview/tests/lldir_stub.cpp index 18cf4e7419..3c0a4377d8 100644 --- a/indra/newview/tests/lldir_stub.cpp +++ b/indra/newview/tests/lldir_stub.cpp @@ -32,7 +32,7 @@ BOOL LLDir::deleteFilesInDir(const std::string &dirname, const std::string &mask  void LLDir::setChatLogsDir(const std::string &path) {}  void LLDir::setPerAccountChatLogsDir(const std::string &first, const std::string &last) {}  void LLDir::setLindenUserDir(const std::string &first, const std::string &last) {} -void LLDir::setSkinFolder(const std::string &skin_folder) {} +void LLDir::setSkinFolder(const std::string &skin_folder, const std::string& language) {}  bool LLDir::setCacheDir(const std::string &path) { return true; }  void LLDir::dumpCurrentDirectories() {} diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 99dcc90f8f..8bf2eef155 100644 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -114,7 +114,6 @@ class ViewerManifest(LLManifest):              # skins              if self.prefix(src="skins"): -                    self.path("paths.xml")                      # include the entire textures directory recursively                      if self.prefix(src="*/textures"):                              self.path("*/*.tga") @@ -132,11 +131,18 @@ class ViewerManifest(LLManifest):                      self.path("*/*.xml")                      # Local HTML files (e.g. loading screen) -                    if self.prefix(src="*/html"): +                    # The claim is that we never use local html files any +                    # longer. But rather than commenting out this block, let's +                    # rename every html subdirectory as html.old. That way, if +                    # we're wrong, a user actually does have the relevant +                    # files; s/he just needs to rename every html.old +                    # directory back to html to recover them. +                    if self.prefix(src="*/html", dst="*/html.old"):                              self.path("*.png")                              self.path("*/*/*.html")                              self.path("*/*/*.gif")                              self.end_prefix("*/html") +                      self.end_prefix("skins")              # local_assets dir (for pre-cached textures) | 
