diff options
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llcommon/llprocesslauncher.h | 8 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.cpp | 4 | ||||
| -rw-r--r-- | indra/llplugin/llpluginclassmedia.h | 2 | ||||
| -rw-r--r-- | indra/llplugin/llpluginprocessparent.cpp | 31 | ||||
| -rw-r--r-- | indra/llplugin/llpluginprocessparent.h | 5 | ||||
| -rw-r--r-- | indra/llui/llhelp.h | 2 | ||||
| -rw-r--r-- | indra/llui/llstyle.cpp | 1 | ||||
| -rw-r--r-- | indra/llui/llstyle.h | 7 | ||||
| -rw-r--r-- | indra/llui/lltabcontainer.cpp | 41 | ||||
| -rw-r--r-- | indra/llui/lltextbase.cpp | 5 | ||||
| -rw-r--r-- | indra/llui/lltexteditor.cpp | 3 | ||||
| -rw-r--r-- | indra/llui/lltooltip.cpp | 4 | ||||
| -rw-r--r-- | indra/llui/lltooltip.h | 6 | ||||
| -rw-r--r-- | indra/llui/lluiimage.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 11 | ||||
| -rw-r--r-- | indra/newview/llfloatersearch.cpp | 7 | ||||
| -rw-r--r-- | indra/newview/lltoolpie.cpp | 46 | ||||
| -rw-r--r-- | indra/newview/llviewerhelp.cpp | 23 | ||||
| -rw-r--r-- | indra/newview/llviewerhelp.h | 3 | ||||
| -rw-r--r-- | indra/newview/llviewermedia.cpp | 40 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_search.xml | 2 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/widgets/inspector.xml | 8 | 
22 files changed, 193 insertions, 73 deletions
diff --git a/indra/llcommon/llprocesslauncher.h b/indra/llcommon/llprocesslauncher.h index 880562157f..929d547f6e 100644 --- a/indra/llcommon/llprocesslauncher.h +++ b/indra/llcommon/llprocesslauncher.h @@ -70,6 +70,14 @@ public:  	// This needs to be called periodically on Mac/Linux to clean up zombie processes.  	static void reap(void); +	 +	// Accessors for platform-specific process ID +#if LL_WINDOWS +	HANDLE getProcessHandle() { return mProcessHandle; }; +#else +	pid_t getProcessID() { return mProcessID; }; +#endif	 +	  private:  	std::string mExecutable;  	std::string mWorkingDir; diff --git a/indra/llplugin/llpluginclassmedia.cpp b/indra/llplugin/llpluginclassmedia.cpp index 457c074ef1..42d5ec49cd 100644 --- a/indra/llplugin/llpluginclassmedia.cpp +++ b/indra/llplugin/llpluginclassmedia.cpp @@ -61,14 +61,14 @@ LLPluginClassMedia::~LLPluginClassMedia()  	reset();  } -bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename) +bool LLPluginClassMedia::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug)  {	  	LL_DEBUGS("Plugin") << "launcher: " << launcher_filename << LL_ENDL;  	LL_DEBUGS("Plugin") << "plugin: " << plugin_filename << LL_ENDL;  	mPlugin = new LLPluginProcessParent(this);  	mPlugin->setSleepTime(mSleepTime); -	mPlugin->init(launcher_filename, plugin_filename); +	mPlugin->init(launcher_filename, plugin_filename, debug);  	return true;  } diff --git a/indra/llplugin/llpluginclassmedia.h b/indra/llplugin/llpluginclassmedia.h index 90ecd1e073..dcc4a3bd6a 100644 --- a/indra/llplugin/llpluginclassmedia.h +++ b/indra/llplugin/llpluginclassmedia.h @@ -47,7 +47,7 @@ public:  	virtual ~LLPluginClassMedia();  	// local initialization, called by the media manager when creating a source -	virtual bool init(const std::string &launcher_filename, const std::string &plugin_filename); +	virtual bool init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug = false);  	// undoes everything init() didm called by the media manager when destroying a source  	virtual void reset(); diff --git a/indra/llplugin/llpluginprocessparent.cpp b/indra/llplugin/llpluginprocessparent.cpp index 39f9438fb3..b7ce800c3a 100644 --- a/indra/llplugin/llpluginprocessparent.cpp +++ b/indra/llplugin/llpluginprocessparent.cpp @@ -55,6 +55,7 @@ LLPluginProcessParent::LLPluginProcessParent(LLPluginProcessParentOwner *owner)  	mBoundPort = 0;  	mState = STATE_UNINITIALIZED;  	mDisableTimeout = false; +	mDebug = false;  	// initialize timer - heartbeat test (mHeartbeat.hasExpired())   	// can sometimes return true immediately otherwise and plugins  @@ -96,11 +97,12 @@ void LLPluginProcessParent::errorState(void)  		setState(STATE_ERROR);  } -void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename) +void LLPluginProcessParent::init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug)  {	  	mProcess.setExecutable(launcher_filename);  	mPluginFile = plugin_filename;  	mCPUUsage = 0.0f; +	mDebug = debug;  	setState(STATE_INITIALIZED);  } @@ -291,6 +293,31 @@ void LLPluginProcessParent::idle(void)  				}  				else  				{ +					if(mDebug) +					{ +						#if LL_DARWIN +						// If we're set to debug, start up a gdb instance in a new terminal window and have it attach to the plugin process and continue. +						 +						// The command we're constructing would look like this on the command line: +						// osascript -e 'tell application "Terminal"' -e 'set win to do script "gdb -pid 12345"' -e 'do script "continue" in win' -e 'end tell' + +						std::stringstream cmd; +						 +						mDebugger.setExecutable("/usr/bin/osascript"); +						mDebugger.addArgument("-e"); +						mDebugger.addArgument("tell application \"Terminal\""); +						mDebugger.addArgument("-e"); +						cmd << "set win to do script \"gdb -pid " << mProcess.getProcessID() << "\""; +						mDebugger.addArgument(cmd.str()); +						mDebugger.addArgument("-e"); +						mDebugger.addArgument("do script \"continue\" in win"); +						mDebugger.addArgument("-e"); +						mDebugger.addArgument("end tell"); +						mDebugger.launch(); + +						#endif +					} +					  					// This will allow us to time out if the process never starts.  					mHeartbeat.start();  					mHeartbeat.setTimerExpirySec(PLUGIN_LAUNCH_SECONDS); @@ -661,7 +688,7 @@ bool LLPluginProcessParent::pluginLockedUpOrQuit()  {  	bool result = false; -	if(!mDisableTimeout) +	if(!mDisableTimeout && !mDebug)  	{  		if(!mProcess.isRunning())  		{ diff --git a/indra/llplugin/llpluginprocessparent.h b/indra/llplugin/llpluginprocessparent.h index 754ebeb946..1289e86c13 100644 --- a/indra/llplugin/llpluginprocessparent.h +++ b/indra/llplugin/llpluginprocessparent.h @@ -56,7 +56,7 @@ public:  	LLPluginProcessParent(LLPluginProcessParentOwner *owner);  	~LLPluginProcessParent(); -	void init(const std::string &launcher_filename, const std::string &plugin_filename); +	void init(const std::string &launcher_filename, const std::string &plugin_filename, bool debug = false);  	void idle(void);  	// returns true if the plugin is on its way to steady state @@ -150,6 +150,9 @@ private:  	F64		mCPUUsage;  	bool mDisableTimeout; +	bool mDebug; + +	LLProcessLauncher mDebugger;  };  #endif // LL_LLPLUGINPROCESSPARENT_H diff --git a/indra/llui/llhelp.h b/indra/llui/llhelp.h index c06d29a4bd..82c3bc385f 100644 --- a/indra/llui/llhelp.h +++ b/indra/llui/llhelp.h @@ -40,6 +40,8 @@ class LLHelp  	virtual void showTopic(const std::string &topic) = 0;  	// return default (fallback) topic name suitable for showTopic()  	virtual std::string defaultTopic() = 0; +	// return topic to use before the user logs in +	virtual std::string preLoginTopic() = 0;  };  #endif // headerguard diff --git a/indra/llui/llstyle.cpp b/indra/llui/llstyle.cpp index fd3f88d1f6..71511f69a4 100644 --- a/indra/llui/llstyle.cpp +++ b/indra/llui/llstyle.cpp @@ -51,6 +51,7 @@ LLStyle::Params::Params()  LLStyle::LLStyle(const LLStyle::Params& p)  :	mVisible(p.visible),  	mColor(p.color()), +	mReadOnlyColor(p.readonly_color()),  	mFont(p.font()),  	mLink(p.link_href),  	mDropShadow(p.drop_shadow), diff --git a/indra/llui/llstyle.h b/indra/llui/llstyle.h index c769964136..ee9ca730e9 100644 --- a/indra/llui/llstyle.h +++ b/indra/llui/llstyle.h @@ -46,7 +46,8 @@ public:  	{  		Optional<bool>					visible;  		Optional<LLFontGL::ShadowType>	drop_shadow; -		Optional<LLUIColor>				color; +		Optional<LLUIColor>				color, +										readonly_color;  		Optional<const LLFontGL*>		font;  		Optional<LLUIImage*>			image;  		Optional<std::string>			link_href; @@ -57,6 +58,8 @@ public:  	const LLColor4& getColor() const { return mColor; }  	void setColor(const LLColor4 &color) { mColor = color; } +	const LLColor4& getReadOnlyColor() const { return mReadOnlyColor; } +  	BOOL isVisible() const;  	void setVisible(BOOL is_visible); @@ -81,6 +84,7 @@ public:  		return   			mVisible == rhs.mVisible  			&& mColor == rhs.mColor +			&& mReadOnlyColor == rhs.mReadOnlyColor  			&& mFont == rhs.mFont  			&& mLink == rhs.mLink  			&& mImagep == rhs.mImagep @@ -104,6 +108,7 @@ protected:  private:  	BOOL		mVisible;  	LLUIColor	mColor; +	LLUIColor   mReadOnlyColor;  	std::string	mFontName;  	const LLFontGL*   mFont;		// cached for performance  	std::string	mLink; diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index b67f753d39..44eff8d357 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -346,7 +346,13 @@ void LLTabContainer::draw()  		}  	} -	LLPanel::draw(); +	{ +		LLRect clip_rect = getLocalRect(); +		clip_rect.mLeft+=(LLPANEL_BORDER_WIDTH + 2); +		clip_rect.mRight-=(LLPANEL_BORDER_WIDTH + 2); +		LLLocalClipRect clip(clip_rect); +		LLPanel::draw(); +	}  	// if tabs are hidden, don't draw them and leave them in the invisible state  	if (!getTabsHidden()) @@ -358,24 +364,6 @@ void LLTabContainer::draw()  			tuple->mButton->setVisible( TRUE );  		} -		// Draw some of the buttons... -		LLRect clip_rect = getLocalRect(); -		if (has_scroll_arrows) -		{ -			// ...but clip them. -			if (mIsVertical) -			{ -				clip_rect.mBottom = mNextArrowBtn->getRect().mTop + 3*tabcntrv_pad; -				clip_rect.mTop = mPrevArrowBtn->getRect().mBottom - 3*tabcntrv_pad; -			} -			else -			{ -				clip_rect.mLeft = mPrevArrowBtn->getRect().mRight; -				clip_rect.mRight = mNextArrowBtn->getRect().mLeft; -			} -		} -		LLLocalClipRect clip(clip_rect); -  		S32 max_scroll_visible = getTabCount() - getMaxScrollPos() + getScrollPos();  		S32 idx = 0;  		for(tuple_list_t::iterator iter = mTabList.begin(); iter != mTabList.end(); ++iter) @@ -403,7 +391,7 @@ void LLTabContainer::draw()  						mNextArrowBtn->setFlashing( TRUE );  					}  				} -			} +			}
  			idx++;  		} @@ -1039,6 +1027,11 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)  	{  		LLUICtrl::addChild(child, 1);  	} + +	sendChildToFront(mPrevArrowBtn); +	sendChildToFront(mNextArrowBtn); +	sendChildToFront(mJumpPrevArrowBtn); +	sendChildToFront(mJumpNextArrowBtn);  	if( select )  	{ @@ -1672,23 +1665,23 @@ void LLTabContainer::initButtons()  		S32 btn_top = (getTabPosition() == TOP ) ? getRect().getHeight() - getTopBorderHeight() : tabcntr_arrow_btn_size + 1;  		LLRect left_arrow_btn_rect; -		left_arrow_btn_rect.setLeftTopAndSize( LLPANEL_BORDER_WIDTH+1+tabcntr_arrow_btn_size, btn_top + arrow_fudge, tabcntr_arrow_btn_size, tabcntr_arrow_btn_size ); +		left_arrow_btn_rect.setLeftTopAndSize( LLPANEL_BORDER_WIDTH+1+tabcntr_arrow_btn_size, btn_top + arrow_fudge, tabcntr_arrow_btn_size, mTabHeight );  		LLRect jump_left_arrow_btn_rect; -		jump_left_arrow_btn_rect.setLeftTopAndSize( LLPANEL_BORDER_WIDTH+1, btn_top + arrow_fudge, tabcntr_arrow_btn_size, tabcntr_arrow_btn_size ); +		jump_left_arrow_btn_rect.setLeftTopAndSize( LLPANEL_BORDER_WIDTH+1, btn_top + arrow_fudge, tabcntr_arrow_btn_size, mTabHeight );  		S32 right_pad = tabcntr_arrow_btn_size + LLPANEL_BORDER_WIDTH + 1;  		LLRect right_arrow_btn_rect;  		right_arrow_btn_rect.setLeftTopAndSize( getRect().getWidth() - mRightTabBtnOffset - right_pad - tabcntr_arrow_btn_size,  												btn_top + arrow_fudge, -												tabcntr_arrow_btn_size, tabcntr_arrow_btn_size ); +												tabcntr_arrow_btn_size, mTabHeight );  		LLRect jump_right_arrow_btn_rect;  		jump_right_arrow_btn_rect.setLeftTopAndSize( getRect().getWidth() - mRightTabBtnOffset - right_pad,  													 btn_top + arrow_fudge, -													 tabcntr_arrow_btn_size, tabcntr_arrow_btn_size ); +													 tabcntr_arrow_btn_size, mTabHeight );  		LLButton::Params p;  		p.name(std::string("Jump Left Arrow")); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 97ba691341..8d36c9c616 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -286,8 +286,7 @@ bool LLTextBase::truncate()  LLStyle::Params LLTextBase::getDefaultStyle()  { -	LLColor4 text_color = ( mReadOnly ? mReadOnlyFgColor.get() : mFgColor.get() ); -	return LLStyle::Params().color(text_color).font(mDefaultFont).drop_shadow(mFontShadow); +	return LLStyle::Params().color(mFgColor.get()).readonly_color(mReadOnlyFgColor.get()).font(mDefaultFont).drop_shadow(mFontShadow);  }  void LLTextBase::onValueChange(S32 start, S32 end) @@ -2232,7 +2231,7 @@ F32 LLNormalTextSegment::drawClippedSegment(S32 seg_start, S32 seg_end, S32 sele  	const LLFontGL* font = mStyle->getFont(); -	LLColor4 color = mStyle->getColor() % alpha; +	LLColor4 color = (mEditor.getReadOnly() ? mStyle->getReadOnlyColor() : mStyle->getColor())  % alpha;  	font = mStyle->getFont(); diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 3ce5a0320b..d136c6b49d 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -2005,7 +2005,8 @@ void LLTextEditor::setEnabled(BOOL enabled)  	bool read_only = !enabled;  	if (read_only != mReadOnly)  	{ -		mReadOnly = read_only; +		//mReadOnly = read_only; +		LLTextBase::setReadOnly(read_only);  		updateSegments();  		updateAllowingLanguageInput();  	} diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index fe1c2ba67c..984a534da6 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -139,6 +139,10 @@ void LLToolTipView::drawStickyRect()  {  	gl_rect_2d(LLToolTipMgr::instance().getMouseNearRect(), LLColor4::white, false);  } + +// defaults for floater param block pulled from widgets/floater.xml +static LLWidgetNameRegistry::StaticRegistrar sRegisterInspectorParams(&typeid(LLInspector::Params), "inspector"); +  //  // LLToolTip  // diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 30d251266c..774ca507c1 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -116,6 +116,12 @@ private:  	S32				mPadding;	// pixels  }; +// used for the inspector tooltips which need different background images etc. +class LLInspector : public LLToolTip +{ +public: +	struct Params : public LLInitParam::Block<Params, LLToolTip::Params> {}; +};  class LLToolTipMgr : public LLSingleton<LLToolTipMgr>  { diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp index 6c1a32722f..a8683e55c3 100644 --- a/indra/llui/lluiimage.cpp +++ b/indra/llui/lluiimage.cpp @@ -142,6 +142,13 @@ namespace LLInitParam  {  	LLUIImage* TypedParam<LLUIImage*>::getValueFromBlock() const  	{ +		// The keyword "none" is specifically requesting a null image +		// do not default to current value. Used to overwrite template images.  +		if (name() == "none") +		{ +			return NULL; +		} +  		LLUIImage* imagep =  LLUI::getUIImage(name());  		if (!imagep)  		{ diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 55ff255c38..15c9499bbc 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5327,6 +5327,17 @@        <key>Value</key>        <integer>1</integer>      </map> +    <key>PluginAttachDebuggerToPlugins</key> +    <map> +      <key>Comment</key> +      <string>If true, attach a debugger session to each plugin process as it's launched.</string> +      <key>Persist</key> +      <integer>1</integer> +      <key>Type</key> +      <string>Boolean</string> +      <key>Value</key> +      <integer>0</integer> +    </map>      <key>PluginInstancesCPULimit</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 97c573ddea..ca2cdffcf8 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -36,6 +36,7 @@  #include "llmediactrl.h"  #include "lllogininstance.h"  #include "lluri.h" +#include "llagent.h"  LLFloaterSearch::LLFloaterSearch(const LLSD& key) :  	LLFloater(key), @@ -122,6 +123,12 @@ void LLFloaterSearch::search(const LLSD &key)  	LLSD search_token = LLLoginInstance::getInstance()->getResponse("search_token");  	url += "&p=" + search_token.asString(); +	// also append the user's preferred maturity (can be changed via prefs) +	std::string maturity = "pg"; +	if (gAgent.prefersMature()) maturity += ",mature"; +	if (gAgent.prefersAdult()) maturity += ",adult"; +	url += "&r=" + maturity; +  	// and load the URL in the web view  	mBrowser->navigateTo(url);  } diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 93da32b115..d49ea5109d 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -700,13 +700,17 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)  				// *HACK: We may select this object, so pretend it was clicked  				mPick = mHoverPick; -				LLToolTipMgr::instance().show(LLToolTip::Params() -					.message(avatar_name) -					.image(LLUI::getUIImage("Info")) -					.click_callback(boost::bind(showAvatarInspector, hover_object->getID())) -					.visible_time_near(6.f) -					.visible_time_far(3.f) -					.wrap(false)); +				LLInspector::Params p; +				p.message(avatar_name); +				p.image(LLUI::getUIImage("Info")); +				p.click_callback(boost::bind(showAvatarInspector, hover_object->getID())); +				p.visible_time_near(6.f); +				p.visible_time_far(3.f); +				p.wrap(false); + +				p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); +				 +				LLToolTipMgr::instance().show(p);  			}  		}  		else @@ -787,18 +791,22 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask)  				{  					// We may select this object, so pretend it was clicked  					mPick = mHoverPick; -					LLToolTipMgr::instance().show(LLToolTip::Params() -						.message(tooltip_msg) -						.image(LLUI::getUIImage("Info_Off")) -						.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)) -						.time_based_media(is_time_based_media) -						.web_based_media(is_web_based_media)						   -						.media_playing(is_media_playing)						   -						.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)) -						.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick))						 -						.visible_time_near(6.f) -						.visible_time_far(3.f) -						.wrap(false)); +					LLInspector::Params p; +					p.message(tooltip_msg); +					p.image(LLUI::getUIImage("Info_Off")); +					p.click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)); +					p.time_based_media(is_time_based_media); +					p.web_based_media(is_web_based_media); +					p.media_playing(is_media_playing); +					p.click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)); +					p.click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)); +					p.visible_time_near(6.f); +					p.visible_time_far(3.f); +					p.wrap(false); + +					p.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLInspector>()); +					 +					LLToolTipMgr::instance().show(p);  				}  			}  		} diff --git a/indra/newview/llviewerhelp.cpp b/indra/newview/llviewerhelp.cpp index 0e0727e382..056260791c 100644 --- a/indra/newview/llviewerhelp.cpp +++ b/indra/newview/llviewerhelp.cpp @@ -39,6 +39,7 @@  #include "llviewercontrol.h"  #include "llversionviewer.h"  #include "llappviewer.h" +#include "lllogininstance.h"  #include "llviewerhelputil.h"  #include "llviewerhelp.h" @@ -51,17 +52,25 @@ void LLViewerHelp::showTopic(const std::string &topic)  {  	showHelp(); +	// allow overriding the help server with a local help file  	if( gSavedSettings.getBOOL("HelpUseLocal") )  	{  		LLFloaterHelpBrowser* helpbrowser = dynamic_cast<LLFloaterHelpBrowser*>(LLFloaterReg::getInstance("help_browser"));  		helpbrowser->navigateToLocalPage( "help-offline" , "index.html" ); +		return;  	} -	else  + +	// use a special login topic before the user logs in +	std::string help_topic = topic; +	if (! LLLoginInstance::getInstance()->authSuccess())  	{ -		const LLOSInfo& osinfo = LLAppViewer::instance()->getOSInfo(); -		std::string helpURL = LLViewerHelpUtil::buildHelpURL( topic, gSavedSettings, osinfo ); -		setRawURL( helpURL ); +		help_topic = preLoginTopic();  	} + +	// work out the URL for this topic and display it  +	const LLOSInfo& osinfo = LLAppViewer::instance()->getOSInfo(); +	std::string helpURL = LLViewerHelpUtil::buildHelpURL( help_topic, gSavedSettings, osinfo ); +	setRawURL( helpURL );  }  std::string LLViewerHelp::defaultTopic() @@ -70,6 +79,12 @@ std::string LLViewerHelp::defaultTopic()  	return "this_is_fallbacktopic";  } +std::string LLViewerHelp::preLoginTopic() +{ +	// *hack: to be done properly +	return "pre_login_help"; +} +  //////////////////////////////  // our own interfaces diff --git a/indra/newview/llviewerhelp.h b/indra/newview/llviewerhelp.h index 17aab6f239..dcb5ae32c9 100644 --- a/indra/newview/llviewerhelp.h +++ b/indra/newview/llviewerhelp.h @@ -57,6 +57,9 @@ class LLViewerHelp : public LLHelp, public LLSingleton<LLViewerHelp>  	// return topic derived from viewer UI focus, else default topic  	std::string getTopicFromFocus(); +	// return topic to use before the user logs in +	std::string preLoginTopic(); +   private:  	static void showHelp(); // make sure help UI is visible & raised  	static void setRawURL(std::string url); // send URL to help UI diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 69650425cb..605861f1cb 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -847,7 +847,7 @@ LLPluginClassMedia* LLViewerMediaImpl::newSourceFromMediaType(std::string media_  		{  			LLPluginClassMedia* media_source = new LLPluginClassMedia(owner);  			media_source->setSize(default_width, default_height); -			if (media_source->init(launcher_name, plugin_name)) +			if (media_source->init(launcher_name, plugin_name, gSavedSettings.getBOOL("PluginAttachDebuggerToPlugins")))  			{  				return media_source;  			} @@ -1133,11 +1133,15 @@ void LLViewerMediaImpl::mouseMove(S32 x, S32 y, MASK mask)  void LLViewerMediaImpl::mouseDown(const LLVector2& texture_coords, MASK mask, S32 button)  {  	if(mMediaSource) -	{		 -		mouseDown( -			llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()), -			llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()), -			mask, button); +	{ +		// scale x and y to texel units. +		S32 x = llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()); +		S32 y = llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()); + +		// Adjust for the difference between the actual texture height and the amount of the texture in use. +		y -= (mMediaSource->getTextureHeight() - mMediaSource->getHeight()); + +		mouseDown(x, y, mask, button);  	}  } @@ -1145,10 +1149,14 @@ void LLViewerMediaImpl::mouseUp(const LLVector2& texture_coords, MASK mask, S32  {  	if(mMediaSource)  	{		 -		mouseUp( -			llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()), -			llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()), -			mask, button); +		// scale x and y to texel units. +		S32 x = llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()); +		S32 y = llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()); + +		// Adjust for the difference between the actual texture height and the amount of the texture in use. +		y -= (mMediaSource->getTextureHeight() - mMediaSource->getHeight()); + +		mouseUp(x, y, mask, button);  	}  } @@ -1156,10 +1164,14 @@ void LLViewerMediaImpl::mouseMove(const LLVector2& texture_coords, MASK mask)  {  	if(mMediaSource)  	{		 -		mouseMove( -			llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()), -			llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()), -			mask); +		// scale x and y to texel units. +		S32 x = llround(texture_coords.mV[VX] * mMediaSource->getTextureWidth()); +		S32 y = llround((1.0f - texture_coords.mV[VY]) * mMediaSource->getTextureHeight()); + +		// Adjust for the difference between the actual texture height and the amount of the texture in use. +		y -= (mMediaSource->getTextureHeight() - mMediaSource->getHeight()); + +		mouseMove(x, y, mask);  	}  } diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index edc1fb8838..b9cf456842 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -2,7 +2,7 @@  <floater   legacy_header_height="18"   can_resize="true" - height="400" + height="512"   layout="topleft"   min_height="140"   min_width="467" diff --git a/indra/newview/skins/default/xui/en/widgets/inspector.xml b/indra/newview/skins/default/xui/en/widgets/inspector.xml new file mode 100644 index 0000000000..61950d7554 --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/inspector.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- See also settings.xml UIFloater* settings for configuration --> +<inspector name="inspector" +          bg_opaque_color="ToolTipBgColor" +          background_visible="true" +          bg_opaque_image="none" +          bg_alpha_image="none" + />  | 
