From ab68d36518dc8a320b465217e89e1207ee4b00fd Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 08:22:26 +0200
Subject: working on normal EXT-4261 Cannot use Keyboard to navigate to search
 result in my landmarks tab

--HG--
branch : product-engine
---
 indra/newview/llfolderview.cpp           | 100 +++++++++++++++++++++++++++++++
 indra/newview/llfolderview.h             |   5 ++
 indra/newview/llplacesinventorypanel.cpp |  17 ++++++
 indra/newview/llplacesinventorypanel.h   |   2 +
 4 files changed, 124 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index b833c611bf..c6135d3bc3 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
 				{
 					if (next == last_selected)
 					{
+						//special case for LLAccordionCtrl
+						if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+						{
+							clearSelection();
+							return TRUE;
+						}
 						return FALSE;
 					}
 					setSelection( next, FALSE, TRUE );
 				}
+				else
+				{
+					//special case for LLAccordionCtrl
+					if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed
+					{
+						clearSelection();
+						return TRUE;
+					}
+					return FALSE;
+				}
 			}
 			scrollToShowSelection();
 			mSearchString.clear();
@@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )
 				{
 					if (prev == this)
 					{
+						// If case we are in accordion tab notify parent to go to the previous accordion
+						if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed
+						{
+							clearSelection();
+							return TRUE;
+						}
+
 						return FALSE;
 					}
 					setSelection( prev, FALSE, TRUE );
@@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition()
 	}
 }
 
+bool LLFolderView::selectFirstItem()
+{
+	for (folders_t::iterator iter = mFolders.begin();
+		 iter != mFolders.end();)
+	{
+		LLFolderViewFolder* folder = (*iter );
+		if (folder->getVisible())
+		{
+			LLFolderViewItem* itemp = folder->getNextFromChild(0,true);
+			if(itemp)
+				setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+		
+	}
+	for(items_t::iterator iit = mItems.begin();
+		iit != mItems.end(); ++iit)
+	{
+		LLFolderViewItem* itemp = (*iit);
+		if (itemp->getVisible())
+		{
+			setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	return false;
+}
+bool LLFolderView::selectLastItem()
+{
+	for(items_t::reverse_iterator iit = mItems.rbegin();
+		iit != mItems.rend(); ++iit)
+	{
+		LLFolderViewItem* itemp = (*iit);
+		if (itemp->getVisible())
+		{
+			setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	for (folders_t::reverse_iterator iter = mFolders.rbegin();
+		 iter != mFolders.rend();)
+	{
+		LLFolderViewFolder* folder = (*iter);
+		if (folder->getVisible())
+		{
+			LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true);
+			if(itemp)
+				setSelection(itemp,FALSE,TRUE);
+			return true;	
+		}
+	}
+	return false;
+}
+
+
+S32	LLFolderView::notify(const LLSD& info) 
+{
+	if(info.has("action"))
+	{
+		std::string str_action = info["action"];
+		if(str_action == "select_first")
+		{
+			setFocus(true);
+			selectFirstItem();
+			return 1;
+
+		}
+		else if(str_action == "select_last")
+		{
+			setFocus(true);
+			selectLastItem();
+			return 1;
+		}
+	}
+	return 0;
+}
+
 
 ///----------------------------------------------------------------------------
 /// Local function definitions
diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h
index 89e1865e35..56ebdfcf79 100644
--- a/indra/newview/llfolderview.h
+++ b/indra/newview/llfolderview.h
@@ -266,6 +266,8 @@ public:
 	LLPanel* getParentPanel() { return mParentPanel; }
 	// DEBUG only
 	void dumpSelectionInformation();
+
+	virtual S32	notify(const LLSD& info) ;
 	
 private:
 	void updateRenamerPosition();
@@ -278,6 +280,9 @@ protected:
 
 	void finishRenamingItem( void );
 	void closeRenamer( void );
+
+	bool selectFirstItem();
+	bool selectLastItem();
 	
 protected:
 	LLHandle<LLView>					mPopupMenuHandle;
diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp
index 4de953a59d..8edeebaeeb 100644
--- a/indra/newview/llplacesinventorypanel.cpp
+++ b/indra/newview/llplacesinventorypanel.cpp
@@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState()
 	getRootFolder()->scrollToShowSelection();
 }
 
+S32	LLPlacesInventoryPanel::notify(const LLSD& info) 
+{
+	if(info.has("action"))
+	{
+		std::string str_action = info["action"];
+		if(str_action == "select_first")
+		{
+			return getRootFolder()->notify(info);
+		}
+		else if(str_action == "select_last")
+		{
+			return getRootFolder()->notify(info);
+		}
+	}
+	return 0;
+}
+
 /************************************************************************/
 /* PROTECTED METHODS                                                    */
 /************************************************************************/
diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h
index 7b34045d32..86937e7c7f 100644
--- a/indra/newview/llplacesinventorypanel.h
+++ b/indra/newview/llplacesinventorypanel.h
@@ -57,6 +57,8 @@ public:
 	void saveFolderState();
 	void restoreFolderState();
 
+	virtual S32	notify(const LLSD& info) ;
+
 private:
 	LLSaveFolderState*			mSavedFolderState;
 };
-- 
cgit v1.2.3


From 3c616d627bcaa28e0e7d31eb8f6c04e3847adb3d Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 09:16:13 +0200
Subject: fix for EXT-4742 Group Info panel state resets on save

--HG--
branch : product-engine
---
 indra/newview/llpanelgroup.cpp | 15 ++++++++++++---
 indra/newview/llpanelgroup.h   |  7 +------
 2 files changed, 13 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 1d447a22d7..23db7ad226 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild()
 LLPanelGroup::LLPanelGroup()
 :	LLPanel(),
 	LLGroupMgrObserver( LLUUID() ),
-	mAllowEdit( TRUE )
-	,mShowingNotifyDialog(false)
+	mSkipRefresh(FALSE),
+	mShowingNotifyDialog(false)
 {
 	// Set up the factory callbacks.
 	// Roles sub tabs
@@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild()
 
 	button = getChild<LLButton>("btn_refresh");
 	button->setClickedCallback(onBtnRefresh, this);
-	button->setVisible(mAllowEdit);
 
 	getChild<LLButton>("btn_create")->setVisible(false);
 
@@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab)
 	
 	std::string apply_mesg;
 	if(tab->apply( apply_mesg ) )
+	{
+		//we skip refreshing group after ew manually apply changes since its very annoying
+		//for those who are editing group
+		mSkipRefresh = TRUE;
 		return true;
+	}
 		
 	if ( !apply_mesg.empty() )
 	{
@@ -539,6 +543,11 @@ void LLPanelGroup::draw()
 
 void LLPanelGroup::refreshData()
 {
+	if(mSkipRefresh)
+	{
+		mSkipRefresh = FALSE;
+		return;
+	}
 	LLGroupMgr::getInstance()->clearGroupData(getID());
 
 	setGroupID(getID());
diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h
index 8c84695677..6e23eedffb 100644
--- a/indra/newview/llpanelgroup.h
+++ b/indra/newview/llpanelgroup.h
@@ -85,9 +85,6 @@ public:
 
 	virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
 
-	void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
-	
 	static void refreshCreatedGroup(const LLUUID& group_id);
 
 	static void showNotice(const std::string& subject,
@@ -126,7 +123,7 @@ protected:
 
 	LLTimer mRefreshTimer;
 
-	BOOL mAllowEdit;
+	BOOL mSkipRefresh;
 
 	std::string mDefaultNeedsApplyMesg;
 	std::string mWantApplyMesg;
@@ -169,8 +166,6 @@ public:
 
 	virtual BOOL isVisibleByAgent(LLAgent* agentp);
 
-	void setAllowEdit(BOOL v) { mAllowEdit = v; }
-
 	virtual void setGroupID(const LLUUID& id) {mGroupID = id;};
 
 	void notifyObservers() {};
-- 
cgit v1.2.3


From 1631ca7173d77576ed18fb35b1843c5a28cbb5e4 Mon Sep 17 00:00:00 2001
From: Ychebotarev ProductEngine <ychebotarev@productengine.com>
Date: Thu, 28 Jan 2010 10:34:12 +0200
Subject: fix for normal EXT-4512 [BSI] Can't minimize Mini-Map also this fix
 EXT-2119 even if its marked as fixed...

--HG--
branch : product-engine
---
 indra/newview/llfloatermap.cpp                     | 1 +
 indra/newview/skins/default/xui/en/floater_map.xml | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp
index d18f127f85..568f4b254e 100644
--- a/indra/newview/llfloatermap.cpp
+++ b/indra/newview/llfloatermap.cpp
@@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild()
 	sendChildToBack(getDragHandle());
 
 	setIsChrome(TRUE);
+	getDragHandle()->setTitleVisible(TRUE);
 	
 	// keep onscreen
 	gFloaterView->adjustToFitScreen(this, FALSE);
diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml
index 3a5ceed5fb..3ddb7bc349 100644
--- a/indra/newview/skins/default/xui/en/floater_map.xml
+++ b/indra/newview/skins/default/xui/en/floater_map.xml
@@ -1,14 +1,17 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- can_minimize="false" 
+ can_minimize="true" 
  can_resize="true"
+ center_horiz="true"
+ center_vert="true"
  follows="top|right"
  height="225"
  layout="topleft"
  min_height="60"
  min_width="174"
  name="Map"
+ title="Mini Map"
  help_topic="map"
  save_rect="true"
  save_visibility="true"
-- 
cgit v1.2.3


From b1fa6bb3421f5a281b36156a04fcbe0ab6b4bcfb Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Thu, 28 Jan 2010 11:42:20 +0200
Subject: fix for  EXT-4186 List items are displayed as links in the FlatList
 if match URL regexp allow_html attribute was updated for  titles of group
 list items, group info panel, landmark info panel and for a title of
 floaters.

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml | 1 +
 indra/newview/skins/default/xui/en/panel_group_list_item.xml     | 1 +
 indra/newview/skins/default/xui/en/panel_landmark_info.xml       | 1 +
 indra/newview/skins/default/xui/en/panel_place_profile.xml       | 2 ++
 4 files changed, 5 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
index 0893c204e7..1968d96205 100644
--- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml
@@ -37,6 +37,7 @@ background_visible="true"
      top="2"
      width="23" />
     <text
+     allow_html="false"
      follows="top|left|right"
      font="SansSerifHugeBold"
      height="26"
diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
index c243d08b97..b674b39d9b 100644
--- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml
@@ -36,6 +36,7 @@
      top="2"
      width="20" />
    <text
+     allow_html="false"
      follows="left|right"
      font="SansSerifSmall"
      height="15"
diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 67a4edbf32..396699ad6c 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -229,6 +229,7 @@
                  value="Title:"
                  width="290" />
                 <text
+                 allow_html="false"
                  follows="left|top"
                  height="22"
                  layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 8fc2ae39f0..7ac771de27 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -246,6 +246,7 @@
                 </layout_panel>
             </layout_stack>
             <text
+             allow_html="false"
              follows="left|top|right"
              font="SansSerifLarge"
              height="14"
@@ -258,6 +259,7 @@
              value="SampleRegion"
              width="290" />
             <text
+             allow_html="false"
              follows="left|top|right"
              height="14"
              layout="topleft"
-- 
cgit v1.2.3


From f6fceac081a1f2d165679ce3eb233e97806cebe7 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 15:51:49 +0200
Subject: fixed EXT-3841 [BSI] "Send IM..." choosable in IM floater context
 menu

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 8 ++++++++
 indra/newview/llimfloater.cpp   | 1 +
 2 files changed, 9 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index d6a7edee5b..2cdbd18996 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -34,6 +34,7 @@
 
 #include "llinstantmessage.h"
 
+#include "llimview.h"
 #include "llchathistory.h"
 #include "llpanel.h"
 #include "lluictrlfactory.h"
@@ -183,6 +184,7 @@ public:
 	void setup(const LLChat& chat,const LLStyle::Params& style_params) 
 	{
 		mAvatarID = chat.mFromID;
+		mSessionID = chat.mSessionID;
 		mSourceType = chat.mSourceType;
 		gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4));
 		if(chat.mFromID.isNull())
@@ -305,6 +307,11 @@ protected:
 				menu->setItemEnabled("Remove Friend", false);
 			}
 
+			if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID))
+			{
+				menu->setItemVisible("Send IM", false);
+			}
+
 			menu->buildDrawLabels();
 			menu->updateParent(LLMenuGL::sMenuContainer);
 			LLMenuGL::showPopup(this, menu, x, y);
@@ -344,6 +351,7 @@ protected:
 	std::string			mFirstName;
 	std::string			mLastName;
 	std::string			mFrom;
+	LLUUID				mSessionID;
 
 	S32					mMinUserNameWidth;
 };
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 73597e7de3..c0f22fcea2 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -599,6 +599,7 @@ void LLIMFloater::updateMessages()
 
 			LLChat chat;
 			chat.mFromID = from_id;
+			chat.mSessionID = mSessionID;
 			chat.mFromName = from;
 			chat.mText = message;
 			chat.mTimeStr = time;
-- 
cgit v1.2.3


From da08cc05af85ac334cabd943a5d9fcbcaa1500b6 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Thu, 28 Jan 2010 18:28:08 +0200
Subject: fixed win build

--HG--
branch : product-engine
---
 indra/newview/lllocationhistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp
index f494f7d7c1..47139758e5 100644
--- a/indra/newview/lllocationhistory.cpp
+++ b/indra/newview/lllocationhistory.cpp
@@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) {
 	{
 		mItems.erase(mItems.begin(), mItems.end()-max_items);
 	}
-	llassert(mItems.size() <= max_items);
+	llassert((S32) mItems.size() <= max_items);
 }
 
 /*
-- 
cgit v1.2.3