diff options
20 files changed, 102 insertions, 62 deletions
| diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp index 20957499bc..42a1b9ad9c 100644 --- a/indra/llui/lllineeditor.cpp +++ b/indra/llui/lllineeditor.cpp @@ -624,7 +624,7 @@ BOOL LLLineEditor::handleMouseDown(S32 x, S32 y, MASK mask)  	// delay cursor flashing  	mKeystrokeTimer.reset(); -	LLUICtrl::handleMouseDown(x,y,mask); +	mMouseDownSignal(this,x,y,mask);  	return TRUE;  } diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 06873c599c..4e7b3e2f68 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8153,6 +8153,17 @@        <key>Value</key>        <string>5748decc-f629-461c-9a36-a35a221fe21f</string>      </map> +    <key>NearByChatChannelUUID</key> +    <map> +      <key>Comment</key> +      <string /> +      <key>Persist</key> +      <integer>0</integer> +      <key>Type</key> +      <string>String</string> +      <key>Value</key> +      <string>E1158BD6-661C-4981-9DAD-4DCBFF062502</string> +    </map>        <key>UIImgWhiteUUID</key>      <map>        <key>Comment</key> diff --git a/indra/newview/llchannelmanager.cpp b/indra/newview/llchannelmanager.cpp index 91945038aa..57ea6064a4 100644 --- a/indra/newview/llchannelmanager.cpp +++ b/indra/newview/llchannelmanager.cpp @@ -62,7 +62,10 @@ void LLChannelManager::onLoginCompleted()  	for(std::vector<ChannelElem>::iterator it = mChannelList.begin(); it !=  mChannelList.end(); ++it)  	{ -		away_notifications +=(*it).channel->getNumberOfHiddenToasts(); +		if(!(*it).channel->getDisplayToastsAlways()) +		{ +			away_notifications +=(*it).channel->getNumberOfHiddenToasts(); +		}  	}  	if(!away_notifications) @@ -95,6 +98,11 @@ void LLChannelManager::removeStartUpChannel()  	getRootView()->removeChild(mStartUpChannel);  	delete mStartUpChannel;  	mStartUpChannel = NULL; + +	//force NEARBY CHAT CHANNEL to repost all toasts if present +	LLScreenChannel* nearby_channel = getChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID"))); +	nearby_channel->loadStoredToastsToChannel(); +	nearby_channel->setCanStoreToasts(false);  }  //-------------------------------------------------------------------------- @@ -118,6 +126,7 @@ LLScreenChannel* LLChannelManager::createChannel(LLChannelManager::Params& p)  	getRootView()->addChild(new_channel);  	new_channel->init(p.channel_right_bound - p.channel_width, p.channel_right_bound);  	new_channel->setToastAlignment(p.align); +	new_channel->setDisplayToastsAlways(p.display_toasts_always);  	ChannelElem new_elem;  	new_elem.id = p.id; diff --git a/indra/newview/llchannelmanager.h b/indra/newview/llchannelmanager.h index 6adc79713a..dbd2e0b422 100644 --- a/indra/newview/llchannelmanager.h +++ b/indra/newview/llchannelmanager.h @@ -60,12 +60,14 @@ public:  		Optional<LLChiclet*>		chiclet;  		Optional<S32>				channel_right_bound;  		Optional<S32>				channel_width; +		Optional<bool>				display_toasts_always;  		Optional<EToastAlignment>	align;  		Params():	id("id", LLUUID("")),  					chiclet("chiclet", NULL),   					channel_right_bound("channel_right_bound", 0),   					channel_width("channel_width", 0),  +					display_toasts_always("display_toasts_always", false),  					align("align", NA_BOTTOM)  		{}  	}; diff --git a/indra/newview/lllandmarkactions.cpp b/indra/newview/lllandmarkactions.cpp index a341d81b94..aa5432740c 100644 --- a/indra/newview/lllandmarkactions.cpp +++ b/indra/newview/lllandmarkactions.cpp @@ -77,11 +77,14 @@ class LLFetchLandmarksByName : public LLInventoryCollectFunctor  {  private:  	std::string name; +	BOOL use_substring;  public: -LLFetchLandmarksByName(std::string &landmark_name) -:name(landmark_name) +LLFetchLandmarksByName(std::string &landmark_name, BOOL if_use_substring) +:name(landmark_name), +use_substring(if_use_substring)  	{ +	LLStringUtil::toLower(name);  	}  public: @@ -94,20 +97,28 @@ public:  		if (!landmark) // the landmark not been loaded yet  			return false; -		if (item->getName() == name) +		std::string landmark_name = item->getName(); +		LLStringUtil::toLower(landmark_name); +		if(use_substring)  		{ -			return true; +			if ( landmark_name.find( name ) != std::string::npos) +				return true; +		} +		else +		{ +			if ( landmark_name == name ) +				return true;  		}  		return false;  	}  }; -LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::string& name) +LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::string& name, BOOL if_starts_with)  {  	LLInventoryModel::cat_array_t cats;  	LLInventoryModel::item_array_t items; -	LLFetchLandmarksByName fetchLandmarks(name); +	LLFetchLandmarksByName fetchLandmarks(name, if_starts_with);  	gInventory.collectDescendentsIf(gInventory.getRootFolderID(),  			cats,  			items, @@ -115,6 +126,7 @@ LLInventoryModel::item_array_t LLLandmarkActions::fetchLandmarksByName(std::stri  			fetchLandmarks);  	return items;  } +  bool LLLandmarkActions::landmarkAlreadyExists()  {  	// Determine whether there are landmarks pointing to the current parcel. diff --git a/indra/newview/lllandmarkactions.h b/indra/newview/lllandmarkactions.h index 12c7398f6a..3c2a0a5522 100644 --- a/indra/newview/lllandmarkactions.h +++ b/indra/newview/lllandmarkactions.h @@ -46,7 +46,7 @@ public:  	/**  	 * @brief Fetches landmark LLViewerInventoryItems for the given landmark name.   	 */ -	static LLInventoryModel::item_array_t fetchLandmarksByName(std::string& name); +	static LLInventoryModel::item_array_t fetchLandmarksByName(std::string& name, BOOL if_use_substring);  	/**  	 * @brief Checks whether landmark exists for current parcel.  	 */ diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp index a6662ef379..cdfb15fd71 100644 --- a/indra/newview/lllocationinputctrl.cpp +++ b/indra/newview/lllocationinputctrl.cpp @@ -49,6 +49,7 @@  #include "lllandmarklist.h"  #include "lllocationhistory.h"  #include "llsidetray.h" +#include "llslurl.h"  #include "lltrans.h"  #include "llviewerinventory.h"  #include "llviewerparcelmgr.h" @@ -411,6 +412,14 @@ void LLLocationInputCtrl::onLocationPrearrange(const LLSD& data)  {  	std::string filter = data.asString();  	rebuildLocationHistory(filter); + +	//Let's add landmarks to the top of the list if any +	LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(filter, TRUE); + +	for(U32 i=0; i < landmark_items.size(); i++) +	{ +		mList->addSimpleElement(landmark_items[i]->getName(), ADD_TOP); +	}  	mList->mouseOverHighlightNthItem(-1); // Clear highlight on the last selected item.  } @@ -540,8 +549,10 @@ void LLLocationInputCtrl::updateWidgetlayout()  void LLLocationInputCtrl::changeLocationPresentation()  { -	// change location presentation only if user select anything.  -	if(mTextEntry && !mTextEntry->hasSelection() ) +	//change location presentation only if user does not  select anything and  +	//human-readable region name  is being displayed +	if(mTextEntry && !mTextEntry->hasSelection() &&  +		!LLSLURL::isSLURL(mTextEntry->getText()))  	{  		mTextEntry->setText(gAgent.getUnescapedSLURL());  		mTextEntry->selectAll(); diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index e3c4cd4895..9a66507eae 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -315,26 +315,18 @@ void LLNavigationBar::onLocationSelection()  	}  	else  	{ -		region_name = extractLocalCoordsFromRegName(typed_location, &x, &y, &z); - -		if (region_name != typed_location) { -			local_coords.set(x, y, z); -		}  +		LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(typed_location, FALSE); +		if ( !landmark_items.empty() ) +		{ +			mUpdateTypedLocationHistory = true; +			gAgent.teleportViaLandmark(landmark_items[0]->getAssetUUID()); +			return; +		}  		else  		{ -			LLInventoryModel::item_array_t landmark_items = LLLandmarkActions::fetchLandmarksByName(typed_location); -			LLViewerInventoryItem* item = NULL; -			if ( !landmark_items.empty() ) -			{ -				item = landmark_items[0]; -			} - -			if (item) -			{ -				mUpdateTypedLocationHistory = true; -				gAgent.teleportViaLandmark(item->getAssetUUID()); -				return; -			} +			region_name = extractLocalCoordsFromRegName(typed_location, &x, &y, &z); +			if (region_name != typed_location) +				local_coords.set(x, y, z);  		}  		// Treat it as region name.  		// region_name = typed_location; diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp index 2683109829..32d7bc94ff 100644 --- a/indra/newview/llnearbychat.cpp +++ b/indra/newview/llnearbychat.cpp @@ -468,7 +468,7 @@ BOOL LLNearbyChat::handleRightMouseDown(S32 x, S32 y, MASK mask)  void	LLNearbyChat::onOpen(const LLSD& key )  { -	LLNotificationsUI::LLScreenChannel* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->getChannelByID(LLUUID(NEARBY_CHAT_ID)); +	LLNotificationsUI::LLScreenChannel* chat_channel = LLNotificationsUI::LLChannelManager::getInstance()->getChannelByID(LLUUID(gSavedSettings.getString("NearByChatChannelUUID")));  	if(chat_channel)  	{  		chat_channel->removeToastsFromChannel(); diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 837f924c44..a56688d862 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -52,7 +52,7 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i  	LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD());  	/////////////////////////////////////////////////////  	LLChannelManager::Params p;														  //TODO: check and correct -	p.id = LLUUID(NEARBY_CHAT_ID); +	p.id = LLUUID(gSavedSettings.getString("NearByChatChannelUUID"));  	p.channel_right_bound = nearby_chat->getRect().mRight;  	p.channel_width = nearby_chat->getRect().mRight - 16;   //HACK: 16 - ?  	///////////////////////////////////////////////////// @@ -62,7 +62,6 @@ LLNearbyChatHandler::LLNearbyChatHandler(e_notification_type type, const LLSD& i  	mChannel = LLChannelManager::getInstance()->createChannel(p);  	mChannel->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM | FOLLOWS_TOP);   	mChannel->setOverflowFormatString("You have %d unread nearby chat messages"); -	mChannel->setCanStoreToasts(false);  }  LLNearbyChatHandler::~LLNearbyChatHandler()  { diff --git a/indra/newview/llnearbychathandler.h b/indra/newview/llnearbychathandler.h index 89ac08b9f0..53436a92b0 100644 --- a/indra/newview/llnearbychathandler.h +++ b/indra/newview/llnearbychathandler.h @@ -35,8 +35,6 @@  #include "llnotificationhandler.h" -#define NEARBY_CHAT_ID "E1158BD6-661C-4981-9DAD-4DCBFF062502" -  //add LLNearbyChatHandler to LLNotificationsUI namespace  namespace LLNotificationsUI{ diff --git a/indra/newview/llnotificationalerthandler.cpp b/indra/newview/llnotificationalerthandler.cpp index 7003879dbf..f485152d3a 100644 --- a/indra/newview/llnotificationalerthandler.cpp +++ b/indra/newview/llnotificationalerthandler.cpp @@ -52,6 +52,7 @@ LLAlertHandler::LLAlertHandler(e_notification_type type, const LLSD& id) : mIsMo  	p.id = LLUUID(ALERT_CHANNEL_ID);  	p.channel_right_bound = tray->getRect().getWidth() / 2;  	p.channel_width = 0; +	p.display_toasts_always = true;  	p.align = NA_CENTRE;  	// Getting a Channel for our notifications diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp index f9de409596..1d50bb26f6 100644 --- a/indra/newview/llpanelimcontrolpanel.cpp +++ b/indra/newview/llpanelimcontrolpanel.cpp @@ -37,6 +37,7 @@  #include "llavataractions.h"  #include "llavatariconctrl.h"  #include "llbutton.h" +#include "llgroupactions.h"  LLPanelIMControlPanel::LLPanelIMControlPanel()  { @@ -95,7 +96,7 @@ BOOL LLPanelGroupControlPanel::postBuild()  void LLPanelGroupControlPanel::onGroupInfoButtonClicked()  { -	//LLFloaterGroupInfo::showFromUUID(mGroupID); +	LLGroupActions::show(mGroupID);  } diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index 051bf08c2f..45a00b7fd2 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -191,25 +191,24 @@ void LLPanelPicks::reshapePicksList()  	if (!mPickItemList.size()) return;  	LLView* pickList = getPicksList(); +	//We don't need to update size of the 'pick list' before reshaping pick items. Don't need to reshape the pick list +	S32 height = mPickItemList.size() * (mPickItemList.front()->getRect().getHeight() + PICK_ITEMS_BETWEEN); +	LLRect rc = pickList->getRect(); +	rc.setLeftTopAndSize(rc.mLeft, rc.mTop, rc.getWidth(), height); +	pickList->setRect(rc); +  	S32 last_bottom = pickList->getRect().getHeight(); -	child_list_const_iter_t child_it, child_first_it = pickList->getChildList()->begin(); -	for ( child_it = child_first_it; child_it != pickList->getChildList()->end(); ++child_it) +	std::list<LLPickItem*>::const_iterator pick_it, pick_first_it = mPickItemList.begin(); +	for ( pick_it = pick_first_it; pick_it != mPickItemList.end(); ++pick_it)  	{ -		LLView* const childp = *child_it; -		if(child_it != child_first_it) +		LLView* const pick = *pick_it; +		if(pick_it != pick_first_it)  		{ -			last_bottom -= childp->getRect().getHeight(); +			last_bottom -= pick->getRect().getHeight();  			last_bottom -= PICK_ITEMS_BETWEEN;  		} -		reshapePickItem(childp, last_bottom,pickList->getRect().getWidth()); +		reshapePickItem(pick, last_bottom,pickList->getRect().getWidth());  	} - -	//*TODO move back panel reshaping before reshaping pick items, so it will be more durable to xui xml changes -	S32 height = pickList->getChildCount() * ((*child_first_it)->getRect().getHeight() + PICK_ITEMS_BETWEEN); -	LLRect rc = pickList->getRect(); -	rc.setLeftTopAndSize(rc.mLeft, rc.mTop, rc.getWidth(), height); -	pickList->reshape(rc.getWidth(), rc.getHeight()); -	pickList->setRect(rc);  }  void LLPanelPicks::reshapePickItem(LLView* const pick_item, const S32 last_bottom, const S32 newWidth) diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp index ab8d61f305..50110da70c 100644 --- a/indra/newview/llscreenchannel.cpp +++ b/indra/newview/llscreenchannel.cpp @@ -93,8 +93,8 @@ void LLScreenChannel::addToast(LLToast::Params p)  	// we show toast in the following cases:  	//	- the StartUp Toast is already hidden and the SysWell's window is hidden  	//  - the SysWell's window is shown, but notification is a tip. We can't store it, so we show it -	//	- the channel has a CENTRE allignment, so it is intended for alerts. We always show alerts -	bool show_toast = (mWasStartUpToastShown && !isSysWellWndShown) || (isSysWellWndShown && p.is_tip) || mToastAlignment == NA_CENTRE; +	//	- the channel is intended for displaying of toasts always, e.g. alerts +	bool show_toast = (mWasStartUpToastShown && !isSysWellWndShown) || (isSysWellWndShown && p.is_tip) || mDisplayToastsAlways;  	bool store_toast = !show_toast && !p.is_tip && mCanStoreToasts;  	// if we can't show or store a toast, then do nothing, just send ignore to a notification  diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h index 1ca70c72d0..0845c32ee5 100644 --- a/indra/newview/llscreenchannel.h +++ b/indra/newview/llscreenchannel.h @@ -103,8 +103,12 @@ public:  	void		setCanStoreToasts(bool store) { mCanStoreToasts = store; }  	// tell all channels that the StartUp toast was shown and allow them showing of toasts  	static void	setStartUpToastShown() { mWasStartUpToastShown = true; } -	// +	// get StartUp Toast's state  	static bool	getStartUpToastShown() { return mWasStartUpToastShown; } +	// set mode for dislaying of toasts +	void setDisplayToastsAlways(bool display_toasts) { mDisplayToastsAlways = display_toasts; } +	// get mode for dislaying of toasts +	bool getDisplayToastsAlways() { return mDisplayToastsAlways; }  	// Channel's other interface functions functions  	// get number of hidden notifications from a channel @@ -173,6 +177,7 @@ private:  	bool		mControlHovering;  	bool		mIsHovering;  	bool		mCanStoreToasts; +	bool		mDisplayToastsAlways;  	bool		mOverflowToastHidden;  	//   	e_notification_toast_alignment	mToastAlignment; diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index bf1cd7002e..a26b1c14af 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -52,7 +52,7 @@ BOOL LLSysWellWindow::postBuild()  	mScrollContainer = getChild<LLScrollContainer>("notification_list_container");  	mNotificationList = getChild<LLScrollingPanelList>("notification_list"); -	//gViewerWindow->setOnBottomTrayWidthChanged(boost::bind(&LLSysWellWindow::adjustWindowPosition, this)); // *TODO: won't be necessary after docking is realized +	gViewerWindow->setOnBottomTrayWidthChanged(boost::bind(&LLSysWellWindow::adjustWindowPosition, this)); // *TODO: won't be necessary after docking is realized  	mScrollContainer->setBorderVisible(FALSE);  	mDockTongue = LLUI::getUIImage("windows/Flyout_Pointer.png"); @@ -75,7 +75,7 @@ void LLSysWellWindow::addItem(LLSysWellItem::Params p)  	LLSysWellItem* new_item = new LLSysWellItem(p);  	mNotificationList->addPanel(dynamic_cast<LLScrollingPanel*>(new_item));  	reshapeWindow(); -	//adjustWindowPosition();	// *TODO: won't be necessary after docking is realized +	adjustWindowPosition();	// *TODO: won't be necessary after docking is realized  	new_item->setOnItemCloseCallback(boost::bind(&LLSysWellWindow::onItemClose, this, _1));  	new_item->setOnItemClickCallback(boost::bind(&LLSysWellWindow::onItemClick, this, _1)); @@ -120,7 +120,7 @@ void LLSysWellWindow::removeItemByID(const LLUUID& id)  		return;  	reshapeWindow(); -	//adjustWindowPosition();	// *TODO: won't be necessary after docking is realized +	adjustWindowPosition();	// *TODO: won't be necessary after docking is realized  	// hide chiclet window if there are no items left  	S32 items_left = mNotificationList->getPanelList().size();  	if(items_left == 0) @@ -155,7 +155,7 @@ void LLSysWellWindow::setVisible(BOOL visible)  	if(visible)  	{  		mChannel->removeAndStoreAllVisibleToasts(); -		//adjustWindowPosition();	// *TODO: won't be necessary after docking is realized +		adjustWindowPosition();	// *TODO: won't be necessary after docking is realized  	}  	LLFloater::setVisible(visible); diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 57ca8747e5..b85f1ed617 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -281,13 +281,13 @@               bg_readonly_color="0.784314 0.819608 0.8 1"               follows="all"               font="Monospace" -             height="180" +             height="172"               layout="topleft"               left="8"               max_length="4096"               name="group_money_planning_text"               top="5" -             width="260"> +             width="250">                  Computing...              </text_editor>          </panel> @@ -313,7 +313,7 @@               max_length="4096"               name="group_money_details_text"               top="7" -             width="260"> +             width="250">                  Computing...              </text_editor>             <button @@ -359,7 +359,7 @@               max_length="4096"               name="group_money_sales_text"               top="7" -             width="260"> +             width="250">                  Computing...              </text_editor>              <button diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 23c8223e7b..d00ff7a6a1 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -222,7 +222,7 @@           width="100" />          <panel           follows="left|top|right" -         height="15" +         height="50"           layout="topleft"           left_pad="10"           name="partner_data_panel" @@ -230,7 +230,7 @@           width="125">              <text               follows="left|top|right" -             height="15" +             height="30"               layout="topleft"               left="0"               name="partner_text" diff --git a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml index fa455dffb0..a5c3be3349 100644 --- a/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml +++ b/indra/newview/skins/default/xui/en/panel_side_tray_tab_caption.xml @@ -3,7 +3,7 @@   background_visible="true"   bottom="0"   follows="left|top|right" - height="20" + height="30"   layout="topleft"   left="0"   name="sidetray_tab_panel"> | 
