diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/app_settings/settings.xml | 2 | ||||
| -rw-r--r-- | indra/newview/llchathistory.cpp | 68 | ||||
| -rw-r--r-- | indra/newview/llgrouplist.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llgrouplist.h | 11 | ||||
| -rw-r--r-- | indra/newview/llimfloater.cpp | 8 | ||||
| -rw-r--r-- | indra/newview/llimview.cpp | 46 | ||||
| -rw-r--r-- | indra/newview/llimview.h | 10 | ||||
| -rw-r--r-- | indra/newview/llinventorymodel.cpp | 134 | ||||
| -rw-r--r-- | indra/newview/llpanelimcontrolpanel.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelme.cpp | 4 | ||||
| -rw-r--r-- | indra/newview/llpanelpeople.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llpanelteleporthistory.cpp | 3 | ||||
| -rw-r--r-- | indra/newview/llteleporthistory.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 1 | ||||
| -rw-r--r-- | indra/newview/llviewermessage.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llvoicechannel.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llvoiceclient.cpp | 2 | ||||
| -rw-r--r-- | indra/newview/llvoiceclient.h | 1 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_im_session.xml | 10 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_chat_header.xml | 7 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_people.xml | 16 | 
21 files changed, 166 insertions, 213 deletions
| diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 62197406b6..793d7b6207 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -7802,7 +7802,7 @@        <key>Type</key>        <string>Boolean</string>        <key>Value</key> -      <integer>1</integer> +      <integer>0</integer>      </map>      <key>ShowCrosshairs</key>      <map> diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index 581c210bd5..a351c52ce2 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -53,8 +53,11 @@  #include "llagent.h"  #include "llnotificationsutil.h"  #include "lltoastnotifypanel.h" +#include "lltooltip.h"  #include "llviewerregion.h" +#include "llviewertexteditor.h"  #include "llworld.h" +#include "lluiconstants.h"  #include "llsidetray.h"//for blocked objects panel @@ -110,6 +113,34 @@ public:  		return LLPanel::handleMouseUp(x,y,mask);  	} +	//*TODO remake it using mouse enter/leave and static LLHandle<LLIconCtrl> to add/remove as a child +	BOOL handleToolTip(S32 x, S32 y, MASK mask) +	{ +		LLViewerTextEditor* name = getChild<LLViewerTextEditor>("user_name"); +		if (name && name->parentPointInView(x, y) && mAvatarID.notNull() && SYSTEM_FROM != mFrom) +		{ + +			// Spawn at right side of the name textbox. +			LLRect sticky_rect = name->calcScreenRect(); +			S32 icon_x = llmin(sticky_rect.mLeft + name->getTextBoundingRect().getWidth() + 7, sticky_rect.mRight - 3); + +			LLToolTip::Params params; +			params.background_visible(false); +			params.click_callback(boost::bind(&LLChatHistoryHeader::onHeaderPanelClick, this, 0, 0, 0)); +			params.delay_time(0.0f);		// spawn instantly on hover +			params.image(LLUI::getUIImage("Info_Small")); +			params.message(""); +			params.padding(0); +			params.pos(LLCoordGL(icon_x, sticky_rect.mTop - 2)); +			params.sticky_rect(sticky_rect); + +			LLToolTipMgr::getInstance()->show(params); +			return TRUE; +		} + +		return LLPanel::handleToolTip(x, y, mask); +	} +  	void onObjectIconContextMenuItemClicked(const LLSD& userdata)  	{  		std::string level = userdata.asString(); @@ -664,8 +695,36 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  		{  			LLToastNotifyPanel* notify_box = new LLToastNotifyPanel(  					notification); +			//we can't set follows in xml since it broke toasts behavior  			notify_box->setFollowsLeft();  			notify_box->setFollowsRight(); +			notify_box->setFollowsTop(); + +			LLButton* accept_button = notify_box->getChild<LLButton> ("Accept", +					TRUE); +			if (accept_button != NULL) +			{ +				accept_button->setFollowsNone(); +				accept_button->setOrigin(2*HPAD, accept_button->getRect().mBottom); +			} + +			LLButton* decline_button = notify_box->getChild<LLButton> ( +					"Decline", TRUE); +			if (accept_button != NULL && decline_button != NULL) +			{ +				decline_button->setFollowsNone(); +				decline_button->setOrigin(4*HPAD +						+ accept_button->getRect().getWidth(), +						decline_button->getRect().mBottom); +			} + +			LLTextEditor* text_editor = notify_box->getChild<LLTextEditor>("text_editor_box", TRUE); +			S32 text_heigth = 0; +			if(text_editor != NULL) +			{ +				text_heigth = text_editor->getTextBoundingRect().getHeight(); +			} +  			//Prepare the rect for the view  			LLRect target_rect = mEditor->getDocumentView()->getRect();  			// squeeze down the widget by subtracting padding off left and right @@ -675,6 +734,15 @@ void LLChatHistory::appendMessage(const LLChat& chat, const LLSD &args, const LL  					notify_box->getRect().getHeight());  			notify_box->setOrigin(target_rect.mLeft, notify_box->getRect().mBottom); +			if (text_editor != NULL) +			{ +				S32 text_heigth_delta = +						text_editor->getTextBoundingRect().getHeight() +								- text_heigth; +				notify_box->reshape(target_rect.getWidth(), +								notify_box->getRect().getHeight() + text_heigth_delta); +			} +  			LLInlineViewSegment::Params params;  			params.view = notify_box;  			params.left_pad = mLeftWidgetPad; diff --git a/indra/newview/llgrouplist.cpp b/indra/newview/llgrouplist.cpp index e01709aa3a..1ed1113f4d 100644 --- a/indra/newview/llgrouplist.cpp +++ b/indra/newview/llgrouplist.cpp @@ -72,6 +72,8 @@ public:  static const LLGroupComparator GROUP_COMPARATOR;  LLGroupList::Params::Params() +: no_groups_msg("no_groups_msg") +, no_filtered_groups_msg("no_filtered_groups_msg")  {  } @@ -79,15 +81,14 @@ LLGroupList::Params::Params()  LLGroupList::LLGroupList(const Params& p)  :	LLFlatListView(p)  	, mDirty(true) // to force initial update +	, mNoFilteredGroupsMsg(p.no_filtered_groups_msg) +	, mNoGroupsMsg(p.no_groups_msg)  {  	// Listen for agent group changes.  	gAgent.addListener(this, "new group");  	mShowIcons = gSavedSettings.getBOOL("GroupListShowIcons");  	setCommitOnSelectionChange(true); -	// TODO: implement context menu -	// display a context menu appropriate for a list of group names -//	setContextMenu(LLScrollListCtrl::MENU_GROUP);  	// Set default sort order.  	setComparator(&GROUP_COMPARATOR); @@ -158,6 +159,18 @@ void LLGroupList::refresh()  	LLUUID				id;  	bool				have_filter		= !mNameFilter.empty(); +	// set no items message depend on filter state & total count of groups +	if (have_filter) +	{ +		// groups were filtered +		setNoItemsCommentText(mNoFilteredGroupsMsg); +	} +	else if (0 == count) +	{ +		// user is not a member of any group +		setNoItemsCommentText(mNoGroupsMsg); +	} +  	clear();  	for(S32 i = 0; i < count; ++i) @@ -173,7 +186,8 @@ void LLGroupList::refresh()  	sort();  	// Add "none" to list at top if filter not set (what's the point of filtering "none"?). -	if (!have_filter) +	// but only if some real groups exists. EXT-4838 +	if (!have_filter && count > 0)  	{  		std::string loc_none = LLTrans::getString("GroupsNone");  		addNewItem(LLUUID::null, loc_none, LLUUID::null, ADD_TOP); diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h index f7afe0c0b2..f3ac676edd 100644 --- a/indra/newview/llgrouplist.h +++ b/indra/newview/llgrouplist.h @@ -53,6 +53,15 @@ class LLGroupList: public LLFlatListView, public LLOldEvents::LLSimpleListener  public:  	struct Params : public LLInitParam::Block<Params, LLFlatListView::Params>   	{ +		/** +		 * Contains a message for empty list when user is not a member of any group +		 */ +		Optional<std::string>	no_groups_msg; + +		/** +		 * Contains a message for empty list when all groups don't match passed filter +		 */ +		Optional<std::string>	no_filtered_groups_msg;  		Params();  	}; @@ -80,6 +89,8 @@ private:  	bool mShowIcons;  	bool mDirty;  	std::string mNameFilter; +	std::string mNoFilteredGroupsMsg; +	std::string mNoGroupsMsg;  };  class LLButton; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 4a18c8640f..1eac90371d 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -515,7 +515,7 @@ BOOL LLIMFloater::getVisible()  	if(isChatMultiTab())  	{  		LLIMFloaterContainer* im_container = LLIMFloaterContainer::getInstance(); -		// Tabbed IM window is "visible" when we minimize it. +		// getVisible() returns TRUE when Tabbed IM window is minimized.  		return !im_container->isMinimized() && im_container->getVisible();  	}  	else @@ -572,6 +572,12 @@ void LLIMFloater::sessionInitReplyReceived(const LLUUID& im_session_id)  		setKey(im_session_id);  		mControlPanel->setSessionId(im_session_id);  	} + +	// updating "Call" button from group control panel here to enable it without placing into draw() (EXT-4796) +	if(gAgent.isInGroup(im_session_id)) +	{ +		mControlPanel->updateCallButton(); +	}  	//*TODO here we should remove "starting session..." warning message if we added it in postBuild() (IB) diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp index db6b2041f8..0c64c2b032 100644 --- a/indra/newview/llimview.cpp +++ b/indra/newview/llimview.cpp @@ -1709,6 +1709,8 @@ BOOL LLOutgoingCallDialog::postBuild()  	childSetAction("Cancel", onCancel, this); +	setCanDrag(FALSE); +  	return success;  } @@ -1808,6 +1810,8 @@ BOOL LLIncomingCallDialog::postBuild()  		mLifetimeTimer.stop();  	} +	setCanDrag(FALSE); +  	return TRUE;  } @@ -2985,48 +2989,6 @@ public:  	}  }; -LLCallInfoDialog::LLCallInfoDialog(const LLSD& payload) : LLCallDialog(payload) -{ -} - -BOOL LLCallInfoDialog::postBuild() -{ -	// init notification's lifetime -	std::istringstream ss( getString("lifetime") ); -	if (!(ss >> mLifetime)) -	{ -		mLifetime = DEFAULT_LIFETIME; -	} -	return LLCallDialog::postBuild(); -} - -void LLCallInfoDialog::onOpen(const LLSD& key) -{ -	if(key.has("msg")) -	{ -		std::string msg = key["msg"]; -		getChild<LLTextBox>("msg")->setValue(msg); -	} - -	mLifetimeTimer.start(); -} - -void LLCallInfoDialog::show(const std::string& status_name, const LLSD& args) -{ -	LLUIString message = LLTrans::getString(status_name); -	message.setArgs(args); - -	LLSD payload; -	payload["msg"] = message; -	LLFloater* inst = LLFloaterReg::findInstance("call_info"); - -	// avoid recreate instance with the same message -	if (inst == NULL || message.getString() != inst->getChild<LLTextBox>("msg")->getValue()) -	{ -		LLFloaterReg::showInstance("call_info", payload); -	} -} -  LLHTTPRegistration<LLViewerChatterBoxSessionStartReply>     gHTTPRegistrationMessageChatterboxsessionstartreply(  	   "/message/ChatterBoxSessionStartReply"); diff --git a/indra/newview/llimview.h b/indra/newview/llimview.h index b573490fa3..1c7aaa3f1b 100644 --- a/indra/newview/llimview.h +++ b/indra/newview/llimview.h @@ -530,16 +530,6 @@ private:  	void hideAllText();  }; -class LLCallInfoDialog : public LLCallDialog -{ -public: -	LLCallInfoDialog(const LLSD& payload); -	/*virtual*/ BOOL postBuild(); -	/*virtual*/ void onOpen(const LLSD& key); - -	static void show(const std::string& status_name, const LLSD& args); -}; -  // Globals  extern LLIMMgr *gIMMgr; diff --git a/indra/newview/llinventorymodel.cpp b/indra/newview/llinventorymodel.cpp index bdf1ebddac..961f7adc0a 100644 --- a/indra/newview/llinventorymodel.cpp +++ b/indra/newview/llinventorymodel.cpp @@ -142,105 +142,6 @@ bool LLCanCache::operator()(LLInventoryCategory* cat, LLInventoryItem* item)  	return rv;  } -/* -This namespace contains a functionality to remove LM prefixes were used to store sort order of -Favorite Landmarks in landmarks' names. -Once being in Favorites folder LM inventory Item has such prefix. -Due to another solution is implemented in EXT-3985 these prefixes should be removed. - -*NOTE: It will be unnecessary after the first successful session in viewer 2.0. -Can be removed before public release. - -Implementation details: -At the first run with this patch it patches all cached landmarks: removes LM sort prefixes and -updates them on the viewer and server sides. -Also it calls fetching agent's inventory to process not yet loaded landmarks too. -If fetching is successfully done it will store special per-agent empty file-marker -in the user temporary folder (where cached inventory is loaded) while caching agent's inventory. -After that in will not affect the viewer until cached marker is removed. -*/ -namespace LMSortPrefix -{ -	bool cleanup_done = false; -	const std::string getMarkerPath() -	{ -		std::string path(gDirUtilp->getExpandedFilename(LL_PATH_CACHE, gAgentID.asString())); -		std::string marker_filename = llformat("%s-lm_prefix_marker", path.c_str()); - -		return marker_filename; -	} -	bool wasClean() -	{ -		static bool was_clean = false; -		static bool already_init = false; -		if (already_init) return was_clean; - -		already_init = true; -		std::string path_to_marker = getMarkerPath(); -		was_clean = LLFile::isfile(path_to_marker); - -		return was_clean; -	} - -	void setLandmarksWereCleaned() -	{ -		if (cleanup_done) -		{ -			std::string path_to_marker = getMarkerPath(); -			LLFILE* file = LLFile::fopen(path_to_marker, "w"); -			if(!file) -			{ -				llwarns << "unable to save marker that LM prefixes were removed: " << path_to_marker << llendl; -				return; -			} - -			fclose(file); -		} -	} - -	void removePrefix(LLPointer<LLViewerInventoryItem> inv_item) -	{ -		if (wasClean()) -		{ -			LL_INFOS_ONCE("") << "Inventory was cleaned for this avatar. Patch can be removed." << LL_ENDL; -			return; -		} - -		if (LLInventoryType::IT_LANDMARK != inv_item->getInventoryType()) return; - -		std::string old_name = inv_item->getName(); - -		S32 sort_field = -1; -		std::string display_name; -		BOOL exists = LLViewerInventoryItem::extractSortFieldAndDisplayName(old_name, &sort_field, &display_name); -		if (exists && sort_field != -1) -		{ -			llinfos << "Removing Landmark sort field and separator for: " << old_name << " | " << inv_item->getUUID() << llendl; -			LLUUID parent_uuid = inv_item->getParentUUID(); -			if (gInventory.getCategory(parent_uuid)) -			{ -				llinfos << "parent folder is: " << gInventory.getCategory(parent_uuid)->getName() << llendl; -			} - - -			// mark item completed to avoid error while copying and updating server -			inv_item->setComplete(TRUE); -			LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(inv_item.get()); -			new_item->rename(display_name); -			gInventory.updateItem(new_item); -			new_item->updateServer(FALSE); - -			gInventory.notifyObservers(); -		} -	} - -	void completeCleanup() -	{ -		// background fetch is completed. can save marker -		cleanup_done = true; -	} -} -  ///----------------------------------------------------------------------------  /// Class LLInventoryModel  ///---------------------------------------------------------------------------- @@ -1835,8 +1736,6 @@ void LLInventoryModel::stopBackgroundFetch()  		gIdleCallbacks.deleteFunction(&LLInventoryModel::backgroundFetch, NULL);  		sBulkFetchCount=0;  		sMinTimeBetweenFetches=0.0f; - -		LMSortPrefix::completeCleanup();  	}  } @@ -1983,13 +1882,6 @@ void LLInventoryModel::cache(  	const LLUUID& parent_folder_id,  	const LLUUID& agent_id)  { -	if (getRootFolderID() == parent_folder_id) -	{ -		// *TODO: mantipov: can be removed before public release, EXT-3985 -		//save marker to avoid fetching inventory on future sessions -		LMSortPrefix::setLandmarksWereCleaned(); -	} -  	lldebugs << "Caching " << parent_folder_id << " for " << agent_id  			 << llendl;  	LLViewerInventoryCategory* root_cat = getCategory(parent_folder_id); @@ -2800,28 +2692,6 @@ void LLInventoryModel::buildParentChildMap()  			// The inv tree is built.  			mIsAgentInvUsable = true; -			{// *TODO: mantipov: can be removed before public release, EXT-3985 -				/* -				*HACK: mantipov: to cleanup landmarks were marked with sort index prefix in name. -				Is necessary to be called once per account after EXT-3985 is implemented. -				So, let fetch agent's inventory, processing will be done in processInventoryDescendents() -				Should be removed before public release. -				*/ -				if (!LMSortPrefix::wasClean()) -				{ -					cat_array_t cats; -					item_array_t items; -					collectDescendents(agent_inv_root_id, cats, items, INCLUDE_TRASH); - -					for (item_array_t::const_iterator it= items.begin(); it != items.end(); ++it) -					{ -						LMSortPrefix::removePrefix(*it); -					} - -					gInventory.startBackgroundFetch(agent_inv_root_id); -				} -			} -  			llinfos << "Inventory initialized, notifying observers" << llendl;  			addChangedMask(LLInventoryObserver::ALL, LLUUID::null);  			notifyObservers(); @@ -3587,10 +3457,6 @@ void LLInventoryModel::processInventoryDescendents(LLMessageSystem* msg,void**)  			continue;  		}  		gInventory.updateItem(titem); - -		{// *TODO: mantipov: can be removed before public release, EXT-3985 -			LMSortPrefix::removePrefix(titem); -		}  	}  	// set version and descendentcount according to message. diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index ff1e43b526..d491583b56 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -280,8 +280,6 @@ void LLPanelGroupControlPanel::draw()  	// Need to resort the participant list if it's in sort by recent speaker order.  	if (mParticipantList)  		mParticipantList->updateRecentSpeakersOrder(); -	//* TODO: find better way to properly enable call button for group and remove this call from draw() -	updateCallButton();  	LLPanelChatControlPanel::draw();  } diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp index 0f0fb4b94e..ea66ef7d2c 100644 --- a/indra/newview/llpanelme.cpp +++ b/indra/newview/llpanelme.cpp @@ -198,6 +198,10 @@ void LLPanelMyProfileEdit::processProfileProperties(const LLAvatarData* avatar_d  {  	fillCommonData(avatar_data); +	// 'Home page' was hidden in LLPanelAvatarProfile::fillCommonData() to fix  EXT-4734 +	// Show 'Home page' in Edit My Profile (EXT-4873) +	childSetVisible("homepage_edit", true); +  	fillPartnerData(avatar_data);  	fillAccountStatus(avatar_data); diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp index b01cdcc832..423ee61e25 100644 --- a/indra/newview/llpanelpeople.cpp +++ b/indra/newview/llpanelpeople.cpp @@ -516,7 +516,6 @@ BOOL LLPanelPeople::postBuild()  	mRecentList->setShowIcons("RecentListShowIcons");  	mGroupList = getChild<LLGroupList>("group_list"); -	mGroupList->setNoItemsCommentText(getString("no_groups"));  	mNearbyList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);  	mRecentList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu); @@ -668,6 +667,11 @@ void LLPanelPeople::updateFriendList()  		lldebugs << "Friends Cards were not found" << llendl;  	} +	// show special help text for just created account to help found friends. EXT-4836 +	static LLTextBox* no_friends_text = getChild<LLTextBox>("no_friends_msg"); +	no_friends_text->setVisible(all_friendsp.size() == 0); + +  	LLAvatarTracker::buddy_map_t::const_iterator buddy_it = all_buddies.begin();  	for (; buddy_it != all_buddies.end(); ++buddy_it)  	{ diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp index 43e0f9a88c..90c8f2551f 100644 --- a/indra/newview/llpanelteleporthistory.cpp +++ b/indra/newview/llpanelteleporthistory.cpp @@ -940,6 +940,9 @@ bool LLTeleportHistoryPanel::onClearTeleportHistoryDialog(const LLSD& notificati  	if (0 == option)  	{ +		// order does matter, call this first or teleport history will contain one record(current location) +		LLTeleportHistory::getInstance()->purgeItems(); +  		LLTeleportHistoryStorage *th = LLTeleportHistoryStorage::getInstance();  		th->purgeItems();  		th->save(); diff --git a/indra/newview/llteleporthistory.cpp b/indra/newview/llteleporthistory.cpp index ce00dec802..dcc85392f7 100644 --- a/indra/newview/llteleporthistory.cpp +++ b/indra/newview/llteleporthistory.cpp @@ -173,6 +173,8 @@ void LLTeleportHistory::purgeItems()  	// reset the count  	mRequestedItem = -1;  	mCurrentItem = 0; + +	onHistoryChanged();  }  // static diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 658d1c9ddd..29114c33c5 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -200,7 +200,6 @@ void LLViewerFloaterReg::registerFloaters()  	LLFloaterReg::add("openobject", "floater_openobject.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterOpenObject>);  	LLFloaterReg::add("outgoing_call", "floater_outgoing_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLOutgoingCallDialog>); -	LLFloaterReg::add("call_info", "floater_call_info.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLCallInfoDialog>);  	LLFloaterReg::add("parcel_info", "floater_preview_url.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterParcelInfo>);  	LLFloaterPayUtil::registerFloater(); diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 26c9a1dd79..3bf0fb6f71 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2181,6 +2181,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data)  				chat.mFromID = from_id ^ gAgent.getSessionID();  			} +			if(SYSTEM_FROM == name) +			{ +				// System's UUID is NULL (fixes EXT-4766) +				chat.mFromID = from_id = LLUUID::null; +			} +  			LLSD query_string;  			query_string["owner"] = from_id;  			query_string["slurl"] = location; diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp index 9d49fb69d6..bb09a18cc3 100644 --- a/indra/newview/llvoicechannel.cpp +++ b/indra/newview/llvoicechannel.cpp @@ -389,13 +389,16 @@ void LLVoiceChannel::setState(EState state)  	switch(state)  	{  	case STATE_RINGING: -		LLCallInfoDialog::show("ringing", mNotifyArgs); +		//TODO: remove or redirect this call status notification +//		LLCallInfoDialog::show("ringing", mNotifyArgs);  		break;  	case STATE_CONNECTED: -		LLCallInfoDialog::show("connected", mNotifyArgs); +		//TODO: remove or redirect this call status notification +//		LLCallInfoDialog::show("connected", mNotifyArgs);  		break;  	case STATE_HUNG_UP: -		LLCallInfoDialog::show("hang_up", mNotifyArgs); +		//TODO: remove or redirect this call status notification +//		LLCallInfoDialog::show("hang_up", mNotifyArgs);  		break;  	default:  		break; @@ -635,7 +638,8 @@ void LLVoiceChannelGroup::setState(EState state)  	case STATE_RINGING:  		if ( !mIsRetrying )  		{ -			LLCallInfoDialog::show("ringing", mNotifyArgs); +			//TODO: remove or redirect this call status notification +//			LLCallInfoDialog::show("ringing", mNotifyArgs);  		}  		doSetState(state); @@ -701,7 +705,8 @@ void LLVoiceChannelProximal::handleStatusChange(EStatusType status)  		//skip showing "Voice not available at your current location" when agent voice is disabled (EXT-4749)  		if(LLVoiceClient::voiceEnabled() && gVoiceClient->voiceWorking())  		{ -			LLCallInfoDialog::show("unavailable", mNotifyArgs); +			//TODO: remove or redirect this call status notification +//			LLCallInfoDialog::show("unavailable", mNotifyArgs);  		}  		return;  	default: @@ -901,7 +906,8 @@ void LLVoiceChannelP2P::setState(EState state)  		// so provide a special purpose message here  		if (mReceivedCall && state == STATE_RINGING)  		{ -			LLCallInfoDialog::show("answering", mNotifyArgs); +			//TODO: remove or redirect this call status notification +//			LLCallInfoDialog::show("answering", mNotifyArgs);  			doSetState(state);  			return;  		} diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 7c6ba33553..431e9625c4 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -5979,8 +5979,10 @@ bool LLVoiceClient::voiceEnabled()  	return gSavedSettings.getBOOL("EnableVoiceChat") && !gSavedSettings.getBOOL("CmdLineDisableVoice");  } +//AD *TODO: investigate possible merge of voiceWorking() and voiceEnabled() into one non-static method  bool LLVoiceClient::voiceWorking()  { +	//Added stateSessionTerminated state to avoid problems with call in parcels with disabled voice (EXT-4758)  	return (stateLoggedIn <= mState) && (mState <= stateSessionTerminated);  } diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index 8f668dff19..a96cf18e27 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -192,6 +192,7 @@ static	void updatePosition(void);  		void setVoiceEnabled(bool enabled);  		static bool voiceEnabled();  		// Checks is voice working judging from mState +		// Returns true if vivox has successfully logged in and is not in error state  		bool voiceWorking();  		void setUsePTT(bool usePTT);  		void setPTTIsToggle(bool PTTIsToggle); diff --git a/indra/newview/skins/default/xui/en/floater_im_session.xml b/indra/newview/skins/default/xui/en/floater_im_session.xml index 9aaa660574..d2e5473157 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -12,7 +12,7 @@   can_minimize="true"   can_close="true"   visible="false" - width="440" + width="360"   can_resize="true"   min_width="250"   min_height="190"> @@ -20,7 +20,7 @@     animate="false"     follows="all"    height="320" -  width="440" +  width="360"    layout="topleft"    orientation="horizontal"    name="im_panels" @@ -38,7 +38,7 @@         left="0"         top="0"         height="200" -	     width="325" +	     width="245"         user_resize="true">          <button            height="20" @@ -65,7 +65,7 @@           parse_highlights="true"           allow_html="true"          left="1" -         width="320"> +         width="240">          </chat_history>          <line_editor           bottom="0" @@ -75,7 +75,7 @@           label="To"           layout="bottomleft"           name="chat_editor" -         width="320"> +         width="240">          </line_editor>      </layout_panel>    </layout_stack> diff --git a/indra/newview/skins/default/xui/en/panel_chat_header.xml b/indra/newview/skins/default/xui/en/panel_chat_header.xml index 39c4923f12..89d632c4c6 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_header.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml @@ -21,19 +21,20 @@           width="18" />      <text_editor        allow_scroll="false" -      v_pad = "0" +      v_pad = "7"        read_only = "true"        follows="left|right"        font.style="BOLD" -      height="12" +      height="24"        layout="topleft"        left_pad="5"        right="-120"        name="user_name"        text_color="white"        bg_readonly_color="black" -      top="8" +      top="0"        use_ellipses="true" +      valign="bottom"         value="Ericag Vader" />      <text              font="SansSerifSmall" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index ac98bb9bd9..3b5add33a8 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -24,9 +24,6 @@ background_visible="true"       name="no_friends"       value="No friends" />      <string -     name="no_groups" -     value="No groups" /> -    <string       name="people_filter_label"       value="Filter People" />      <string @@ -163,6 +160,17 @@ background_visible="true"                           width="313" />                  </accordion_tab>              </accordion> +            <text +             follows="all" +             height="450" +             left="10" +             name="no_friends_msg" +             top="10" +             width="293" +             wrap="true"> +                To add friends try [secondlife:///app/search/people global search] or click on a user to add them as a friend. +If you're looking for people to hang out with, [secondlife:///app/worldmap try the Map]. +             </text>              <panel               follows="left|right|bottom"               height="30" @@ -226,6 +234,8 @@ background_visible="true"               layout="topleft"               left="0"               name="group_list" +             no_filtered_groups_msg="No groups" +             no_groups_msg="[secondlife:///app/search/groups Trying searching for some groups to join.]"               top="0"               width="313" />              <panel | 
