diff options
21 files changed, 106 insertions, 140 deletions
| @@ -370,6 +370,7 @@ then          if [ x"$package" != x ]          then            upload_item installer "$package" binary/octet-stream +          upload_item quicklink "$package" binary/octet-stream          else            record_failure "Failed to upload $package_id package ($package::$additional_package_name)."          fi diff --git a/doc/contributions.txt b/doc/contributions.txt index 2f9d0c2c86..e4ee2141a8 100755 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -180,6 +180,9 @@ Ansariel Hiller  	MAINT-2368  	STORM-1931  	MAINT-2773 +	BUG-3764 +	STORM-1984 +	STORM-1979  Aralara Rajal  Arare Chantilly  	CHUIBUG-191 @@ -307,6 +310,7 @@ Christopher  Organiser  Ciaran Laval  Cinder Roxley      BUG-2326 +    BUG-3863      OPEN-185      STORM-1703  	STORM-1948 @@ -674,6 +678,9 @@ Jonathan Yap  	OPEN-161  	STORM-1953  	STORM-1957 +	STORM-1975 +	STORM-1987 +	STORM-1982  Kadah Coba  	STORM-1060      STORM-1843 @@ -1140,6 +1147,7 @@ snowy Sidran  Sovereign Engineer      MAINT-2334      OPEN-189 +    OPEN-195  SpacedOut Frye  	VWR-34  	VWR-45 @@ -1259,6 +1267,8 @@ Tofu Buzzard  Tony Kembia  Tonya Souther  	STORM-1905 +	BUG-3875 +	BUG-3968  Torben Trautman  TouchaHoney Perhaps  TraductoresAnonimos Alter diff --git a/indra/lib/python/indra/base/lluuid.py b/indra/lib/python/indra/base/lluuid.py index 369ae4e92f..7413ffe10d 100755 --- a/indra/lib/python/indra/base/lluuid.py +++ b/indra/lib/python/indra/base/lluuid.py @@ -72,7 +72,7 @@ class UUID(object):      ip = ''      try:          ip = socket.gethostbyname(socket.gethostname()) -    except(socket.gaierror): +    except(socket.gaierror, socket.error):          # no ip address, so just default to somewhere in 10.x.x.x          ip = '10'          for i in range(3): diff --git a/indra/llmath/llvolume.cpp b/indra/llmath/llvolume.cpp index f74c934b21..cc5742ff7a 100755 --- a/indra/llmath/llvolume.cpp +++ b/indra/llmath/llvolume.cpp @@ -6747,7 +6747,7 @@ BOOL LLVolumeFace::createSide(LLVolume* volume, BOOL partial_build)  	return TRUE;  } -//adapted from Lengyel, Eric. “Computing Tangent Space Basis Vectors for an Arbitrary Mesh”. Terathon Software 3D Graphics Library, 2001. http://www.terathon.com/code/tangent.html +//adapted from Lengyel, Eric. "Computing Tangent Space Basis Vectors for an Arbitrary Mesh". Terathon Software 3D Graphics Library, 2001. http://www.terathon.com/code/tangent.html  void CalculateTangentArray(U32 vertexCount, const LLVector4a *vertex, const LLVector4a *normal,          const LLVector2 *texcoord, U32 triangleCount, const U16* index_array, LLVector4a *tangent)  { diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 50ac511d18..3cfe5ac57f 100755 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -641,7 +641,7 @@ void LLButton::draw()  	bool use_glow_effect = FALSE;  	LLColor4 highlighting_color = LLColor4::white; -	LLColor4 glow_color; +	LLColor4 glow_color = LLColor4::white;  	LLRender::eBlendType glow_type = LLRender::BT_ADD_WITH_ALPHA;  	LLUIImage* imagep = NULL; diff --git a/indra/llui/llcommandmanager.cpp b/indra/llui/llcommandmanager.cpp index 49cfb2255e..625fb8e870 100755 --- a/indra/llui/llcommandmanager.cpp +++ b/indra/llui/llcommandmanager.cpp @@ -50,8 +50,6 @@ const LLCommandId LLCommandId::null = LLCommandId("null command");  LLCommand::Params::Params()  	: available_in_toybox("available_in_toybox", false)  	, icon("icon") -	, hover_icon_unselected("hover_icon_unselected") -	, hover_icon_selected("hover_icon_selected")  	, label_ref("label_ref")  	, name("name")  	, tooltip_ref("tooltip_ref") @@ -73,8 +71,6 @@ LLCommand::LLCommand(const LLCommand::Params& p)  	: mIdentifier(p.name)  	, mAvailableInToybox(p.available_in_toybox)  	, mIcon(p.icon) -	, mHoverIconUnselected(p.hover_icon_unselected) -	, mHoverIconSelected(p.hover_icon_selected)  	, mLabelRef(p.label_ref)  	, mName(p.name)  	, mTooltipRef(p.tooltip_ref) diff --git a/indra/llui/llcommandmanager.h b/indra/llui/llcommandmanager.h index 9f276f712d..ff5a8a3257 100755 --- a/indra/llui/llcommandmanager.h +++ b/indra/llui/llcommandmanager.h @@ -96,9 +96,6 @@ public:  		Mandatory<std::string>	name;  		Mandatory<std::string>	tooltip_ref; -		Optional<std::string>   hover_icon_selected; -		Optional<std::string>   hover_icon_unselected; -  		Mandatory<std::string>	execute_function;  		Optional<LLSD>			execute_parameters; @@ -127,8 +124,6 @@ public:  	const std::string& labelRef() const { return mLabelRef; }  	const std::string& name() const { return mName; }  	const std::string& tooltipRef() const { return mTooltipRef; } -	const std::string& hoverIconUnselected() const {return mHoverIconUnselected; } -	const std::string& hoverIconSelected() const {return mHoverIconSelected; }  	const std::string& executeFunctionName() const { return mExecuteFunction; }  	const LLSD& executeParameters() const { return mExecuteParameters; } @@ -155,8 +150,6 @@ private:  	std::string mLabelRef;  	std::string mName;  	std::string mTooltipRef; -	std::string mHoverIconUnselected; -	std::string mHoverIconSelected;  	std::string mExecuteFunction;  	LLSD        mExecuteParameters; diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 6fd2bb1b36..76ba53ec32 100755 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -193,15 +193,12 @@ LLTabContainer::TabParams::TabParams()  :	tab_top_image_unselected("tab_top_image_unselected"),  	tab_top_image_selected("tab_top_image_selected"),  	tab_top_image_flash("tab_top_image_flash"), -	tab_top_image_hovered("tab_top_image_hovered"),  	tab_bottom_image_unselected("tab_bottom_image_unselected"),  	tab_bottom_image_selected("tab_bottom_image_selected"),  	tab_bottom_image_flash("tab_bottom_image_flash"), -	tab_bottom_image_hovered("tab_bottom_image_hovered"),  	tab_left_image_unselected("tab_left_image_unselected"),  	tab_left_image_selected("tab_left_image_selected"), -	tab_left_image_flash("tab_left_image_flash"), -	tab_left_image_hovered("tab_left_image_hovered") +	tab_left_image_flash("tab_left_image_flash")  {}  LLTabContainer::Params::Params() @@ -221,8 +218,7 @@ LLTabContainer::Params::Params()  	open_tabs_on_drag_and_drop("open_tabs_on_drag_and_drop", false),  	tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0),  	use_ellipses("use_ellipses"), -	font_halign("halign"), -	use_highlighting_on_hover("use_highlighting_on_hover",false) +	font_halign("halign")  {}  LLTabContainer::LLTabContainer(const LLTabContainer::Params& p) @@ -258,8 +254,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)  	mCustomIconCtrlUsed(p.use_custom_icon_ctrl),  	mOpenTabsOnDragAndDrop(p.open_tabs_on_drag_and_drop),  	mTabIconCtrlPad(p.tab_icon_ctrl_pad), -	mUseTabEllipses(p.use_ellipses), -	mUseHighlightingOnHover(p.use_highlighting_on_hover) +	mUseTabEllipses(p.use_ellipses)  {  	static LLUICachedControl<S32> tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -908,30 +903,18 @@ void LLTabContainer::update_images(LLTabTuple* tuple, TabParams params, LLTabCon  			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_top_image_unselected));  			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_top_image_selected));  			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_top_image_flash)); -			if(mUseHighlightingOnHover) -			{ -				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_top_image_hovered)); -			}  		}  		else if (pos == LLTabContainer::BOTTOM)  		{  			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_unselected));  			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_bottom_image_selected));  			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_bottom_image_flash)); -			if(mUseHighlightingOnHover) -			{ -				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_bottom_image_hovered)); -			}  		}  		else if (pos == LLTabContainer::LEFT)  		{  			tuple->mButton->setImageUnselected(static_cast<LLUIImage*>(params.tab_left_image_unselected));  			tuple->mButton->setImageSelected(static_cast<LLUIImage*>(params.tab_left_image_selected));  			tuple->mButton->setImageFlash(static_cast<LLUIImage*>(params.tab_left_image_flash)); -			if(mUseHighlightingOnHover) -			{ -				tuple->mButton->setImageHoverUnselected(static_cast<LLUIImage*>(params.tab_left_image_hovered)); -			}  		}  	}  } diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 7e7d4ac6e6..57862fc626 100755 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -62,15 +62,12 @@ public:  		Optional<LLUIImage*>				tab_top_image_unselected,  											tab_top_image_selected,  											tab_top_image_flash, -											tab_top_image_hovered,  											tab_bottom_image_unselected,  											tab_bottom_image_selected,  											tab_bottom_image_flash, -											tab_bottom_image_hovered,  											tab_left_image_unselected,  											tab_left_image_selected, -											tab_left_image_flash, -											tab_left_image_hovered; +											tab_left_image_flash;		  		TabParams();  	}; @@ -117,11 +114,6 @@ public:  		 */  		Optional<S32>						tab_icon_ctrl_pad; -		/** -		 *  This variable is used to found out should we highlight tab button on hover -		*/ -		Optional<bool>						use_highlighting_on_hover; -  		Params();  	}; @@ -315,7 +307,6 @@ private:  	bool							mOpenTabsOnDragAndDrop;  	S32								mTabIconCtrlPad;  	bool							mUseTabEllipses; -	bool                            mUseHighlightingOnHover;  };  #endif  // LL_TABCONTAINER_H diff --git a/indra/llui/lltoolbar.cpp b/indra/llui/lltoolbar.cpp index 6bfe113933..928e82cb8c 100755 --- a/indra/llui/lltoolbar.cpp +++ b/indra/llui/lltoolbar.cpp @@ -928,8 +928,6 @@ LLToolBarButton* LLToolBar::createButton(const LLCommandId& id)  	button_p.label = LLTrans::getString(commandp->labelRef());  	button_p.tool_tip = LLTrans::getString(commandp->tooltipRef());  	button_p.image_overlay = LLUI::getUIImage(commandp->icon()); -	button_p.image_hover_unselected = LLUI::getUIImage(commandp->hoverIconUnselected()); -	button_p.image_hover_selected = LLUI::getUIImage(commandp->hoverIconSelected());  	button_p.button_flash_enable = commandp->isFlashingAllowed();  	button_p.overwriteFrom(mButtonParams[mButtonType]);  	LLToolBarButton* button = LLUICtrlFactory::create<LLToolBarButton>(button_p); diff --git a/indra/llwindow/llopenglview-objc.mm b/indra/llwindow/llopenglview-objc.mm index 7415c9d8dc..b393a3796d 100644 --- a/indra/llwindow/llopenglview-objc.mm +++ b/indra/llwindow/llopenglview-objc.mm @@ -376,13 +376,6 @@ attributedStringInfo getSegments(NSAttributedString *str)          [[self inputContext] handleEvent:theEvent];      } -    if ([[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSCarriageReturnCharacter || -        [[theEvent charactersIgnoringModifiers] characterAtIndex:0] == NSEnterCharacter) -    { -        // callKeyDown won't return the value we expect for enter or return.  Handle them as a separate case. -        [[self inputContext] handleEvent:theEvent]; -    } -          // OS X intentionally does not send us key-up information on cmd-key combinations.      // This behaviour is not a bug, and only applies to cmd-combinations (no others).      // Since SL assumes we receive those, we fake it here. diff --git a/indra/newview/app_settings/commands.xml b/indra/newview/app_settings/commands.xml index ce878f156b..60c942094a 100755 --- a/indra/newview/app_settings/commands.xml +++ b/indra/newview/app_settings/commands.xml @@ -3,8 +3,6 @@    <command name="aboutland"             available_in_toybox="true"             icon="Command_AboutLand_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_AboutLand_Label"             tooltip_ref="Command_AboutLand_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -15,8 +13,6 @@    <command name="appearance"               available_in_toybox="true"             icon="Command_Appearance_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Appearance_Label"             tooltip_ref="Command_Appearance_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -27,8 +23,6 @@    <command name="avatar"             available_in_toybox="true"             icon="Command_Avatar_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Avatar_Label"             tooltip_ref="Command_Avatar_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -39,8 +33,6 @@    <command name="build"             available_in_toybox="true"             icon="Command_Build_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Build_Label"             tooltip_ref="Command_Build_Tooltip"             execute_function="Build.Toggle" @@ -54,8 +46,6 @@             available_in_toybox="true"  		   is_flashing_allowed="true"             icon="Command_Chat_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Chat_Label"             tooltip_ref="Command_Conversations_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -66,8 +56,6 @@    <command name="compass"             available_in_toybox="false"             icon="Command_Compass_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Compass_Label"             tooltip_ref="Command_Compass_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -78,8 +66,6 @@    <command name="destinations"             available_in_toybox="true"             icon="Command_Destinations_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Destinations_Label"             tooltip_ref="Command_Destinations_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -90,8 +76,6 @@    <command name="gestures"             available_in_toybox="true"             icon="Command_Gestures_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Gestures_Label"             tooltip_ref="Command_Gestures_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -102,8 +86,6 @@    <command name="howto"             available_in_toybox="true"             icon="Command_HowTo_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_HowTo_Label"             tooltip_ref="Command_HowTo_Tooltip"             execute_function="Help.ToggleHowTo" @@ -112,8 +94,6 @@    <command name="inventory"             available_in_toybox="true"             icon="Command_Inventory_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Inventory_Label"             tooltip_ref="Command_Inventory_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -124,8 +104,6 @@    <command name="map"             available_in_toybox="true"             icon="Command_Map_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Map_Label"             tooltip_ref="Command_Map_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -136,8 +114,6 @@    <command name="marketplace"             available_in_toybox="false"             icon="Command_Marketplace_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Marketplace_Label"             tooltip_ref="Command_Marketplace_Tooltip"             execute_function="Avatar.OpenMarketplace" @@ -145,8 +121,6 @@    <command name="minimap"             available_in_toybox="true"             icon="Command_MiniMap_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_MiniMap_Label"             tooltip_ref="Command_MiniMap_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -157,8 +131,6 @@    <command name="move"             available_in_toybox="true"             icon="Command_Move_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Move_Label"             tooltip_ref="Command_Move_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -169,8 +141,6 @@    <command name="outbox"             available_in_toybox="false"             icon="Command_Outbox_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Outbox_Label"             tooltip_ref="Command_Outbox_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -181,8 +151,6 @@    <command name="people"             available_in_toybox="true"             icon="Command_People_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_People_Label"             tooltip_ref="Command_People_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -193,8 +161,6 @@    <command name="picks"             available_in_toybox="true"             icon="Command_Picks_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Picks_Label"             tooltip_ref="Command_Picks_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -205,8 +171,6 @@    <command name="places"             available_in_toybox="true"             icon="Command_Places_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Places_Label"             tooltip_ref="Command_Places_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -217,8 +181,6 @@    <command name="preferences"             available_in_toybox="true"             icon="Command_Preferences_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Preferences_Label"             tooltip_ref="Command_Preferences_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -229,8 +191,6 @@    <command name="profile"             available_in_toybox="true"             icon="Command_Profile_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Profile_Label"             tooltip_ref="Command_Profile_Tooltip"             execute_function="Avatar.ToggleMyProfile" @@ -239,8 +199,6 @@    <command name="search"             available_in_toybox="true"             icon="Command_Search_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Search_Label"             tooltip_ref="Command_Search_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -251,8 +209,6 @@    <command name="snapshot"             available_in_toybox="true"             icon="Command_Snapshot_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Snapshot_Label"             tooltip_ref="Command_Snapshot_Tooltip"             execute_function="Floater.ToggleOrBringToFront" @@ -273,8 +229,6 @@    <command name="speak"             available_in_toybox="true"             icon="Command_Speak_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_Speak_Label"             tooltip_ref="Command_Speak_Tooltip"             execute_function="Agent.PressMicrophone" @@ -289,8 +243,6 @@    <command name="view"             available_in_toybox="true"             icon="Command_View_Icon" -           hover_icon_unselected="Command_Highlighting_Icon" -           hover_icon_selected="Command_Highlighting_Selected_Icon"             label_ref="Command_View_Label"             tooltip_ref="Command_View_Tooltip"             execute_function="Floater.ToggleOrBringToFront" diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index d9093c2a6d..bf34fea635 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -14871,17 +14871,6 @@      <key>Value</key>      <integer>0</integer>    </map> -  <key>DisablePrecacheDelayAfterTeleporting</key> -  <map> -    <key>Comment</key> -    <string>Disables the artificial delay in the viewer that precaches some incoming assets</string> -    <key>Persist</key> -    <integer>0</integer> -    <key>Type</key> -    <string>Boolean</string> -    <key>Value</key> -    <integer>0</integer> -  </map>    <key>FMODExProfilerEnable</key>    <map>      <key>Comment</key> diff --git a/indra/newview/llfloaterimsession.cpp b/indra/newview/llfloaterimsession.cpp index 14e1a486d3..84921849d0 100755 --- a/indra/newview/llfloaterimsession.cpp +++ b/indra/newview/llfloaterimsession.cpp @@ -61,6 +61,9 @@  #include "llnotificationmanager.h"  #include "llautoreplace.h" +const F32 ME_TYPING_TIMEOUT = 4.0f; +const F32 OTHER_TYPING_TIMEOUT = 9.0f; +  floater_showed_signal_t LLFloaterIMSession::sIMFloaterShowedSignal;  LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id) @@ -75,7 +78,10 @@ LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id)  	mTypingTimer(),  	mTypingTimeoutTimer(),  	mPositioned(false), -	mSessionInitialized(false) +	mSessionInitialized(false), +	mMeTypingTimer(), +	mOtherTypingTimer(), +	mImInfo()  {  	mIsNearbyChat = false; @@ -96,13 +102,31 @@ LLFloaterIMSession::LLFloaterIMSession(const LLUUID& session_id)  void LLFloaterIMSession::refresh()  {  	if (mMeTyping) -{ +	{ +		// Send an additional Start Typing packet every ME_TYPING_TIMEOUT seconds +		if (mMeTypingTimer.getElapsedTimeF32() > ME_TYPING_TIMEOUT && false == mShouldSendTypingState) +		{ +			LL_DEBUGS("TypingMsgs") << "Send additional Start Typing packet" << LL_ENDL; +			LLIMModel::instance().sendTypingState(mSessionID, mOtherParticipantUUID, TRUE); +			mMeTypingTimer.reset(); +		} +  		// Time out if user hasn't typed for a while.  		if (mTypingTimeoutTimer.getElapsedTimeF32() > LLAgent::TYPING_TIMEOUT_SECS)  		{ -	setTyping(false); +			setTyping(false); +			LL_DEBUGS("TypingMsgs") << "Send stop typing due to timeout" << LL_ENDL;  		}  	} + +	// Clear <name is typing> message if no data received for OTHER_TYPING_TIMEOUT seconds +	if (mOtherTyping && mOtherTypingTimer.getElapsedTimeF32() > OTHER_TYPING_TIMEOUT) +	{ +		LL_DEBUGS("TypingMsgs") << "Received: is typing cleared due to timeout" << LL_ENDL; +		removeTypingIndicator(mImInfo); +		mOtherTyping = false; +	} +  }  // virtual @@ -953,13 +977,21 @@ void LLFloaterIMSession::setTyping(bool typing)  	// much network traffic. Only send in person-to-person IMs.  	if ( mShouldSendTypingState && mDialog == IM_NOTHING_SPECIAL )  	{ -		// Still typing, send 'start typing' notification or -		// send 'stop typing' notification immediately -		if (!mMeTyping || mTypingTimer.getElapsedTimeF32() > 1.f) +		if ( mMeTyping )  		{ -			LLIMModel::instance().sendTypingState(mSessionID, -					mOtherParticipantUUID, mMeTyping); -					mShouldSendTypingState = false; +			if ( mTypingTimer.getElapsedTimeF32() > 1.f ) +			{ +				// Still typing, send 'start typing' notification +				LLIMModel::instance().sendTypingState(mSessionID, mOtherParticipantUUID, TRUE); +				mShouldSendTypingState = false; +				mMeTypingTimer.reset(); +			} +		} +		else +		{ +			// Send 'stop typing' notification immediately +			LLIMModel::instance().sendTypingState(mSessionID, mOtherParticipantUUID, FALSE); +			mShouldSendTypingState = false;  		}  	} @@ -975,10 +1007,12 @@ void LLFloaterIMSession::setTyping(bool typing)  void LLFloaterIMSession::processIMTyping(const LLIMInfo* im_info, BOOL typing)  { +	LL_DEBUGS("TypingMsgs") << "typing=" << typing << LL_ENDL;  	if ( typing )  	{  		// other user started typing  		addTypingIndicator(im_info); +		mOtherTypingTimer.reset();  	}  	else  	{ @@ -1202,10 +1236,40 @@ BOOL LLFloaterIMSession::inviteToSession(const uuid_vec_t& ids)  void LLFloaterIMSession::addTypingIndicator(const LLIMInfo* im_info)  { +/* Operation of "<name> is typing" state machine: +Not Typing state: + +    User types in P2P IM chat ... Send Start Typing, save Started time, +    start Idle Timer (N seconds) go to Typing state + +Typing State: + +    User enters a non-return character: if Now - Started > ME_TYPING_TIMEOUT, send +    Start Typing, restart Idle Timer +    User enters a return character: stop Idle Timer, send IM and Stop +    Typing, go to Not Typing state +    Idle Timer expires: send Stop Typing, go to Not Typing state + +The recipient has a complementary state machine in which a Start Typing +that is not followed by either an IM or another Start Typing within OTHER_TYPING_TIMEOUT +seconds switches the sender out of typing state. + +This has the nice quality of being self-healing for lost start/stop +messages while adding messages only for the (relatively rare) case of a +user who types a very long message (one that takes more than ME_TYPING_TIMEOUT seconds +to type). + +Note: OTHER_TYPING_TIMEOUT must be > ME_TYPING_TIMEOUT for proper operation of the state machine + +*/ +  	// We may have lost a "stop-typing" packet, don't add it twice  	if (im_info && !mOtherTyping)  	{  		mOtherTyping = true; +		mOtherTypingTimer.reset(); +		// Save im_info so that removeTypingIndicator can be properly called because a timeout has occurred +		mImInfo = im_info;  		// Update speaker  		LLIMSpeakerMgr* speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID); diff --git a/indra/newview/llfloaterimsession.h b/indra/newview/llfloaterimsession.h index d6718843ca..2b9d06e744 100755 --- a/indra/newview/llfloaterimsession.h +++ b/indra/newview/llfloaterimsession.h @@ -187,6 +187,8 @@ private:  	LLFrameTimer mTypingTimer;  	LLFrameTimer mTypingTimeoutTimer;  	bool mSessionNameUpdatedForTyping; +	LLFrameTimer mMeTypingTimer; +	LLFrameTimer mOtherTypingTimer;  	bool mSessionInitialized;  	LLSD mQueuedMsgsForInit; @@ -196,6 +198,8 @@ private:  	// connection to voice channel state change signal  	boost::signals2::connection mVoiceChannelStateChangeConnection; + +	const LLIMInfo* mImInfo;  };  #endif  // LL_FLOATERIMSESSION_H diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 0756faf5c0..9c380f63bd 100755 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -359,6 +359,11 @@ void LLTeleportHistoryPanel::ContextMenu::onInfo()  void LLTeleportHistoryPanel::ContextMenu::gotSLURLCallback(const std::string& slurl)  {  	LLClipboard::instance().copyToClipboard(utf8str_to_wstring(slurl),0,slurl.size()); + +	LLSD args; +	args["SLURL"] = slurl; + +	LLNotificationsUtil::add("CopySLURL", args);  }  void LLTeleportHistoryPanel::ContextMenu::onCopyToClipboard() diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index bb891996c9..94c187e21a 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -153,8 +153,6 @@ with the same filename but different name    <texture name="Command_Speak_Icon"        file_name="toolbar_icons/speak.png"        preload="true" />    <texture name="Command_View_Icon"         file_name="toolbar_icons/view.png"         preload="true" />    <texture name="Command_Voice_Icon"        file_name="toolbar_icons/nearbyvoice.png"  preload="true" /> -  <texture name="Command_Highlighting_Icon" file_name="toolbar_icons/highlighting.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" /> -  <texture name="Command_Highlighting_Selected_Icon" file_name="toolbar_icons/highlighting_selected.png" preload="true" scale.left="4" scale.top="19" scale.right="28" scale.bottom="4" />    <texture name="Caret_Bottom_Icon"         file_name="toolbar_icons/caret_bottom.png" preload="true" scale.left="1" scale.top="23" scale.right="15" scale.bottom="1" />    <texture name="Caret_Right_Icon"          file_name="toolbar_icons/caret_right.png"  preload="true" scale.left="5" scale.top="15" scale.right="28" scale.bottom="1" />    <texture name="Caret_Left_Icon"           file_name="toolbar_icons/caret_left.png"   preload="true" scale.left="1" scale.top="15" scale.right="23" scale.bottom="1" /> @@ -165,7 +163,6 @@ with the same filename but different name    <texture name="ComboButton_On" file_name="widgets/ComboButton_On.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_Off" file_name="widgets/ComboButton_Off.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="ComboButton_UpOff" file_name="widgets/ComboButton_UpOff.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" /> -  <texture name="ComboButton_Hovered" file_name="widgets/ComboButton_Hover.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />    <texture name="Container" file_name="containers/Container.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml index 0160d52b17..f939c3996d 100755 --- a/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml +++ b/indra/newview/skins/default/xui/en/menu_teleport_history_item.xml @@ -17,7 +17,7 @@           function="TeleportHistory.MoreInformation" />      </menu_item_call>      <menu_item_call -     label="Copy to Clipboard" +     label="Copy SLurl"       layout="topleft"       name="CopyToClipboard">          <menu_item_call.on_click diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 3caf2b3d7e..d2caf63052 100755 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -66,8 +66,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M       tab_position="top"       top="0"       halign="center" -     right="-5" -     use_highlighting_on_hover="true"> +     right="-5">  <!-- ================================= NEARBY tab =========================== --> @@ -507,6 +506,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M                  right="-10"                  top_pad="4"                  left="3" +                use_ellipses="true"                  name="groupcount">                You belong to [COUNT] groups, and can join [REMAINING] more.              </text> diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml index 4ea1aa6efb..61ec046649 100755 --- a/indra/newview/skins/default/xui/en/widgets/location_input.xml +++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml @@ -150,7 +150,6 @@    <combo_button  		name="Location History"                  label="" -                image_hover_unselected="ComboButton_Hovered"                  pad_right="0"/>    <combo_list  	      bg_writeable_color="MenuDefaultBgColor" diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml index 9559be214a..0586119681 100755 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -24,26 +24,17 @@ label_pad_left - padding to the left of tab button labels                 tab_bottom_image_unselected="Toolbar_Left_Off"                 tab_bottom_image_selected="Toolbar_Left_Selected"                 tab_left_image_unselected="SegmentedBtn_Left_Disabled" -               tab_left_image_selected="SegmentedBtn_Left_Selected_Over" -               tab_top_image_hovered="TabTop_Left_Selected" -               tab_button_image_hovered="Toolbar_Left_Selected" -               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/> +               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>    <middle_tab tab_top_image_unselected="TabTop_Middle_Off"                 tab_top_image_selected="TabTop_Middle_Selected"                 tab_bottom_image_unselected="Toolbar_Middle_Off"                 tab_bottom_image_selected="Toolbar_Middle_Selected"                 tab_left_image_unselected="SegmentedBtn_Left_Disabled" -               tab_left_image_selected="SegmentedBtn_Left_Selected_Over" -               tab_top_image_hovered="TabTop_Middle_Selected" -               tab_button_image_hovered="Toolbar_Middle_Selected" -               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/> +               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>    <last_tab tab_top_image_unselected="TabTop_Right_Off"                 tab_top_image_selected="TabTop_Right_Selected"                 tab_bottom_image_unselected="Toolbar_Right_Off"                 tab_bottom_image_selected="Toolbar_Right_Selected"                 tab_left_image_unselected="SegmentedBtn_Left_Disabled" -               tab_left_image_selected="SegmentedBtn_Left_Selected_Over" -               tab_top_image_hovered="TabTop_Right_Selected" -               tab_button_image_hovered="Toolbar_Right_Selected" -               tab_left_image_hovered="SegmentedBtn_Left_Selected_Over"/> +               tab_left_image_selected="SegmentedBtn_Left_Selected_Over"/>  </tab_container> | 
