From d623030d2b88ec0ae7bd3931303daf70631ef158 Mon Sep 17 00:00:00 2001
From: Yuri Chebotarev <ychebotarev@productengine.com>
Date: Wed, 7 Apr 2010 17:35:21 +0300
Subject: fix for EXT-6619 "i" icon appears on top of accordion title in the
 Group Info panel https://codereview.productengine.com/secondlife/r/190/
 reviewed mantipov

--HG--
branch : product-engine
---
 indra/llui/llaccordionctrltab.cpp | 11 +++++++++++
 indra/llui/llaccordionctrltab.h   |  2 ++
 2 files changed, 13 insertions(+)

diff --git a/indra/llui/llaccordionctrltab.cpp b/indra/llui/llaccordionctrltab.cpp
index 0959722aa6..dfb427f293 100644
--- a/indra/llui/llaccordionctrltab.cpp
+++ b/indra/llui/llaccordionctrltab.cpp
@@ -860,5 +860,16 @@ void LLAccordionCtrlTab::ctrlSetLeftTopAndSize(LLView* panel, S32 left, S32 top,
 	panel->reshape( width, height, 1);
 	panel->setRect(panel_rect);
 }
+BOOL LLAccordionCtrlTab::handleToolTip(S32 x, S32 y, MASK mask)
+{
+	//header may be not the first child but we need to process it first
+	if(y >= (getRect().getHeight() - HEADER_HEIGHT - HEADER_HEIGHT/2) )
+	{
+		//inside tab header
+		//fix for EXT-6619
+		return TRUE;
+	}
+	return LLUICtrl::handleToolTip(x, y, mask);
+}
 
 
diff --git a/indra/llui/llaccordionctrltab.h b/indra/llui/llaccordionctrltab.h
index 4b8b22405e..fb19d17e99 100644
--- a/indra/llui/llaccordionctrltab.h
+++ b/indra/llui/llaccordionctrltab.h
@@ -148,6 +148,8 @@ public:
 	virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
 	virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
 
+	virtual BOOL handleToolTip(S32 x, S32 y, MASK mask);
+
 	virtual bool addChild(LLView* child, S32 tab_group);
 
 	bool isExpanded() { return mDisplayChildren; }
-- 
cgit v1.2.3


From 8329dbdc37998c227600ca3693ca4767741798a0 Mon Sep 17 00:00:00 2001
From: Mike Antipov <mantipov@productengine.com>
Date: Wed, 7 Apr 2010 18:33:05 +0300
Subject: Fixed major bug EXT-6661 (chat log paths reset back to default)  *
 Removed unused InstantMessageLogFolder  * Restored initializing logic of
 InstantMessageLogPath value from 1.23 to share setting between viewers.  *
 Restored unused in 2.0 "LogChatTimestamp" and "LogChatIM" settings to avoid
 removing of them in 2.0  * Restored default value of the "Save local chat
 log" setting from 1.23 & replaced with 2.0 own setting (LogNearbyChat was:
 LogChat)

Reviewed by Igor Borovkov & Kent Quirk at https://codereview.productengine.com/secondlife/r/193/

--HG--
branch : product-engine
---
 .../newview/app_settings/settings_per_account.xml  | 56 +++++++++++++++++-----
 indra/newview/llfloaterpreference.cpp              |  6 +--
 indra/newview/llnearbychat.cpp                     |  2 +-
 indra/newview/llstartup.cpp                        |  9 ++--
 .../default/xui/en/panel_preferences_privacy.xml   |  2 +-
 5 files changed, 51 insertions(+), 24 deletions(-)

diff --git a/indra/newview/app_settings/settings_per_account.xml b/indra/newview/app_settings/settings_per_account.xml
index af5fa4f388..3ce32a05b0 100644
--- a/indra/newview/app_settings/settings_per_account.xml
+++ b/indra/newview/app_settings/settings_per_account.xml
@@ -22,17 +22,6 @@
         <key>Value</key>
             <string>|TOKEN COPY BusyModeResponse|</string>
         </map>
-    <key>InstantMessageLogFolder</key>
-        <map>
-        <key>Comment</key>
-            <string>Top level folder to your log files.</string>
-        <key>Persist</key>
-            <integer>1</integer>
-        <key>Type</key>
-            <string>String</string>
-        <key>Value</key>
-            <string />
-        </map>				
     <key>InstantMessageLogPath</key>
         <map>
         <key>Comment</key>
@@ -55,10 +44,10 @@
         <key>Value</key>
             <integer>0</integer>
         </map>
-    <key>LogChat</key>
+    <key>LogNearbyChat</key>
         <map>
         <key>Comment</key>
-            <string>Log Chat</string>
+            <string>Log Nearby Chat messages to a file. Is used instead of LogChat but with the "1" default value.</string>
         <key>Persist</key>
             <integer>1</integer>
         <key>Type</key>
@@ -110,5 +99,46 @@
         <key>Value</key>
             <integer>1</integer>
         </map>
+
+    <!-- Settings below are for back compatibility only.
+    They are not used in current viewer anymore. But they can't be removed to avoid
+    influence on previous versions of the viewer in case of settings are not used or default value
+    should be changed. See EXT-6661. -->
+
+    <!-- 1.23 settings -->
+    <key>LogChat</key>
+        <map>
+        <key>Comment</key>
+            <string>Log Chat</string>
+        <key>Persist</key>
+            <integer>1</integer>
+        <key>Type</key>
+            <string>Boolean</string>
+        <key>Value</key>
+            <integer>0</integer>
+        </map>
+    <key>LogChatIM</key>
+        <map>
+        <key>Comment</key>
+            <string>Log Incoming Instant Messages with Chat</string>
+        <key>Persist</key>
+            <integer>1</integer>
+        <key>Type</key>
+            <string>Boolean</string>
+        <key>Value</key>
+            <integer>0</integer>
+        </map>
+    <key>LogChatTimestamp</key>
+        <map>
+        <key>Comment</key>
+            <string>Log Timestamp of Chat</string>
+        <key>Persist</key>
+            <integer>1</integer>
+        <key>Type</key>
+            <string>Boolean</string>
+        <key>Value</key>
+            <integer>0</integer>
+        </map>
+    <!-- End of back compatibility settings -->
     </map>
 </llsd>
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 4c4ccc02d7..49d5670c57 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -1083,10 +1083,8 @@ void LLFloaterPreference::onClickLogPath()
 	{
 		return; //Canceled!
 	}
-	std::string chat_log_dir = picker.getDirName();
-	std::string chat_log_top_folder= gDirUtilp->getBaseFileName(chat_log_dir);
-	gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
-	gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+
+	gSavedPerAccountSettings.setString("InstantMessageLogPath", picker.getDirName());
 }
 
 void LLFloaterPreference::setPersonalInfo(const std::string& visibility, bool im_via_email, const std::string& email)
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index c8d5d782b7..5d72827a7a 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -207,7 +207,7 @@ void	LLNearbyChat::addMessage(const LLChat& chat,bool archive,const LLSD &args)
 		return;
 	}
 
-	if (gSavedPerAccountSettings.getBOOL("LogChat")) 
+	if (gSavedPerAccountSettings.getBOOL("LogNearbyChat"))
 	{
 		LLLogChat::saveHistory("chat", chat.mFromName, chat.mFromID, chat.mText);
 	}
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 4f1bcde302..fcadc30ab7 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -849,13 +849,12 @@ bool idle_startup()
 		}
 
 		//Default the path if one isn't set.
-		if (gSavedPerAccountSettings.getString("InstantMessageLogFolder").empty())
+		// *NOTE: unable to check variable differ from "InstantMessageLogPath" because it was
+		// provided in pre 2.0 viewer. See EXT-6661
+		if (gSavedPerAccountSettings.getString("InstantMessageLogPath").empty())
 		{
 			gDirUtilp->setChatLogsDir(gDirUtilp->getOSUserAppDir());
-			std::string chat_log_dir = gDirUtilp->getChatLogsDir();
-			std::string chat_log_top_folder=gDirUtilp->getBaseFileName(chat_log_dir);
-			gSavedPerAccountSettings.setString("InstantMessageLogPath",chat_log_dir);
-			gSavedPerAccountSettings.setString("InstantMessageLogFolder",chat_log_top_folder);
+			gSavedPerAccountSettings.setString("InstantMessageLogPath", gDirUtilp->getChatLogsDir());
 		}
 		else
 		{
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
index 3d7f392404..fca9b4bca1 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_privacy.xml
@@ -84,7 +84,7 @@
     </text>
     <check_box
 	 enabled="false"
-     control_name="LogChat"
+     control_name="LogNearbyChat"
      height="16"
      label="Save nearby chat logs on my computer"
      layout="topleft"
-- 
cgit v1.2.3


From 7e32ccd8d42fe74103bbc7b308fbb510bd5f7d87 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Wed, 7 Apr 2010 18:59:18 +0300
Subject: Fixed normal bug EXT-6715 (Favorites bar: bottom scroll button of
 overflow list is corrupted ) - restored 'arrow_down.tga' image, which is used
 by LLMenuScrollItem. Reviewed by Vadim Savchuk,
 https://codereview.productengine.com/secondlife/r/197/.

diff -r f3fc1679ec4e -r f4652f182c84 indra/newview/skins/default/textures/arrow_down.tga
Binary file indra/newview/skins/default/textures/arrow_down.tga has changed

--HG--
branch : product-engine
---
 indra/newview/skins/default/textures/arrow_down.tga | Bin 0 -> 1068 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 indra/newview/skins/default/textures/arrow_down.tga

diff --git a/indra/newview/skins/default/textures/arrow_down.tga b/indra/newview/skins/default/textures/arrow_down.tga
new file mode 100644
index 0000000000..81dc9d3b6c
Binary files /dev/null and b/indra/newview/skins/default/textures/arrow_down.tga differ
-- 
cgit v1.2.3


From b2c9f172d34a3c87f59efcbc6223892ee0bfa41f Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Wed, 7 Apr 2010 19:04:01 +0300
Subject: Fixed normal bug EXT-6712(SLapp: nothing happens after click on
 'secondlife:///app/group/list/show' link from Nearby chat) - added showing my
 groups tab in people panel. Reviewed by Vadim Savchuk,
 https://codereview.productengine.com/secondlife/r/196/

--HG--
branch : product-engine
---
 indra/newview/llgroupactions.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index d4eecc8c48..438159b2e6 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -75,12 +75,13 @@ public:
 			return false;
 		}
 
-		//*TODO by what to replace showing groups floater?
 		if (tokens[0].asString() == "list")
 		{
 			if (tokens[1].asString() == "show")
 			{
-				//LLFloaterReg::showInstance("contacts", "groups");
+				LLSD params;
+				params["people_panel_tab_name"] = "groups_panel";
+				LLSideTray::getInstance()->showPanel("panel_people", params);
 				return true;
 			}
             return false;
-- 
cgit v1.2.3


From bc71f93ce3702407608d89371c5afb6c17330aae Mon Sep 17 00:00:00 2001
From: Andrew Dyukov <adyukov@productengine.com>
Date: Wed, 7 Apr 2010 19:23:40 +0300
Subject: Fixed major bug  EXT-6602 (Sidebar panel focus goes to filter field,
 obscuring watermark text).

-Set focus on sidetray tabs open to tab containers which hold panels with lists, so now filter fields are not emptied. Used "default_tab_group" + "tab_group" attributes in xml to implement this.

Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/198/

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/panel_main_inventory.xml | 2 ++
 indra/newview/skins/default/xui/en/panel_people.xml         | 2 ++
 indra/newview/skins/default/xui/en/panel_places.xml         | 2 ++
 indra/newview/skins/default/xui/en/sidepanel_appearance.xml | 2 ++
 4 files changed, 8 insertions(+)

diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
index 1b04d01abf..27d66945d9 100644
--- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml
+++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
  background_visible="true"
+ default_tab_group="1"
  follows="all"
  height="408"
  label="Things"
@@ -61,6 +62,7 @@
      left="7"
      name="inventory filter tabs"
      tab_height="30"
+     tab_group="1"
      tab_position="top"
      tab_min_width="100"
      top_pad="10"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 6152dd1587..8131b75b70 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <!-- Side tray panel -->
 <panel
+ default_tab_group="1"
  follows="all"
  height="449"
  label="People"
@@ -56,6 +57,7 @@
      layout="topleft"
      left="5"
      name="tabs"
+     tab_group="1"
      tab_min_width="70"
      tab_height="30"
      tab_position="top"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index c61007a9e1..5d1d1ab951 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
 background_visible="true"
+ default_tab_group="1"
  follows="all"
  height="570"
  label="Places"
@@ -37,6 +38,7 @@ background_visible="true"
      name="Places Tabs"
      tab_min_width="80"
      tab_height="30"
+     tab_group="1"
      tab_position="top"
      top_pad="10"
      width="315" />
diff --git a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
index c5efa2e221..73650a19dc 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_appearance.xml
@@ -1,6 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
 background_visible="true"
+default_tab_group="1"
 follows="all"
 height="570"
 label="Outfits"
@@ -90,6 +91,7 @@ width="333">
    min_height="410"
    width="320"
    left="0"
+   tab_group="1"
    top_pad="6"
    follows="all" />
   <!--   <button
-- 
cgit v1.2.3


From 66b3fbf17624d0127b40f6b083b00aa2837738e9 Mon Sep 17 00:00:00 2001
From: Paul Guslisty <pguslisty@productengine.com>
Date: Thu, 8 Apr 2010 08:06:40 +0300
Subject: Fixed major bug EXT-6605 (No profile verb button on Places panel)

- Added functionality of showing place profile to the LLPanelPlacesTab hierarchy. Use this functionality from LLPanelPlaces as callback for profile button click.

Reviewed my Mike Antipov at https://codereview.productengine.com/secondlife/r/191/

--HG--
branch : product-engine
---
 indra/newview/llpanellandmarks.cpp                  | 17 +++++++++++++----
 indra/newview/llpanellandmarks.h                    |  1 +
 indra/newview/llpanelplaces.cpp                     | 14 ++++++++++++++
 indra/newview/llpanelplaces.h                       |  2 ++
 indra/newview/llpanelplacestab.cpp                  |  1 +
 indra/newview/llpanelplacestab.h                    |  2 ++
 indra/newview/llpanelteleporthistory.cpp            | 16 ++++++++++++++++
 indra/newview/llpanelteleporthistory.h              |  1 +
 indra/newview/skins/default/xui/en/panel_places.xml |  9 +++++++++
 9 files changed, 59 insertions(+), 4 deletions(-)

diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 8d8c996374..a1cdbdad59 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -280,6 +280,17 @@ void LLLandmarksPanel::onShowOnMap()
 	doActionOnCurSelectedLandmark(boost::bind(&LLLandmarksPanel::doShowOnMap, this, _1));
 }
 
+//virtual
+void LLLandmarksPanel::onShowProfile()
+{
+	LLFolderViewItem* cur_item = getCurSelectedItem();
+
+	if(!cur_item)
+		return;
+
+	cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
+}
+
 // virtual
 void LLLandmarksPanel::onTeleport()
 {
@@ -306,6 +317,7 @@ void LLLandmarksPanel::updateVerbs()
 	bool landmark_selected = isLandmarkSelected();
 	mTeleportBtn->setEnabled(landmark_selected && isActionEnabled("teleport"));
 	mShowOnMapBtn->setEnabled(landmark_selected && isActionEnabled("show_on_map"));
+	mShowProfile->setEnabled(landmark_selected && isActionEnabled("more_info"));
 
 	// TODO: mantipov: Uncomment when mShareBtn is supported
 	// Share button should be enabled when neither a folder nor a landmark is selected
@@ -977,13 +989,10 @@ bool LLLandmarksPanel::isActionEnabled(const LLSD& userdata) const
 
 void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
 {
-	LLFolderViewItem* cur_item = getCurSelectedItem();
-	if(!cur_item)
-		return;
 	std::string command_name = userdata.asString();
 	if("more_info" == command_name)
 	{
-		cur_item->getListener()->performAction(mCurrentSelectedList->getModel(),"about");
+		onShowProfile();
 	}
 	else if ("teleport" == command_name)
 	{
diff --git a/indra/newview/llpanellandmarks.h b/indra/newview/llpanellandmarks.h
index c9217a4b2f..da5d683cfc 100644
--- a/indra/newview/llpanellandmarks.h
+++ b/indra/newview/llpanellandmarks.h
@@ -57,6 +57,7 @@ public:
 	/*virtual*/ BOOL postBuild();
 	/*virtual*/ void onSearchEdit(const std::string& string);
 	/*virtual*/ void onShowOnMap();
+	/*virtual*/ void onShowProfile();
 	/*virtual*/ void onTeleport();
 	/*virtual*/ void updateVerbs();
 
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 54455afa4f..17784c31e3 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -252,6 +252,9 @@ BOOL LLPanelPlaces::postBuild()
 	mOverflowBtn = getChild<LLButton>("overflow_btn");
 	mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this));
 
+	mPlaceInfoBtn = getChild<LLButton>("profile_btn");
+	mPlaceInfoBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onProfileButtonClicked, this));
+
 	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
 	registrar.add("Places.OverflowMenu.Action",  boost::bind(&LLPanelPlaces::onOverflowMenuItemClicked, this, _2));
 	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
@@ -745,6 +748,14 @@ void LLPanelPlaces::onOverflowButtonClicked()
 	LLMenuGL::showPopup(this, menu, rect.mRight, rect.mTop);
 }
 
+void LLPanelPlaces::onProfileButtonClicked()
+{
+	if (!mActivePanel)
+		return;
+
+	mActivePanel->onShowProfile();
+}
+
 bool LLPanelPlaces::onOverflowMenuItemEnable(const LLSD& param)
 {
 	std::string value = param.asString();
@@ -1060,8 +1071,11 @@ void LLPanelPlaces::updateVerbs()
 	mSaveBtn->setVisible(isLandmarkEditModeOn);
 	mCancelBtn->setVisible(isLandmarkEditModeOn);
 	mCloseBtn->setVisible(is_create_landmark_visible && !isLandmarkEditModeOn);
+	mPlaceInfoBtn->setVisible(mPlaceInfoType != LANDMARK_INFO_TYPE && mPlaceInfoType != TELEPORT_HISTORY_INFO_TYPE
+			&& !is_create_landmark_visible && !isLandmarkEditModeOn);
 
 	mShowOnMapBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
+	mPlaceInfoBtn->setEnabled(!is_create_landmark_visible && !isLandmarkEditModeOn && have_3d_pos);
 
 	if (is_place_info_visible)
 	{
diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h
index 97cf43d222..7a77fc9300 100644
--- a/indra/newview/llpanelplaces.h
+++ b/indra/newview/llpanelplaces.h
@@ -98,6 +98,7 @@ private:
 	bool onOverflowMenuItemEnable(const LLSD& param);
 	void onCreateLandmarkButtonClicked(const LLUUID& folder_id);
 	void onBackButtonClicked();
+	void onProfileButtonClicked();
 
 	void toggleMediaPanel();
 	void togglePickPanel(BOOL visible);
@@ -128,6 +129,7 @@ private:
 	LLButton*					mCancelBtn;
 	LLButton*					mCloseBtn;
 	LLButton*					mOverflowBtn;
+	LLButton*					mPlaceInfoBtn;
 
 	LLPlacesInventoryObserver*	mInventoryObserver;
 	LLPlacesParcelObserver*		mParcelObserver;
diff --git a/indra/newview/llpanelplacestab.cpp b/indra/newview/llpanelplacestab.cpp
index 9806b8c64d..42cf3b03a3 100644
--- a/indra/newview/llpanelplacestab.cpp
+++ b/indra/newview/llpanelplacestab.cpp
@@ -56,6 +56,7 @@ void LLPanelPlacesTab::setPanelPlacesButtons(LLPanelPlaces* panel)
 {
 	mTeleportBtn = panel->getChild<LLButton>("teleport_btn");
 	mShowOnMapBtn = panel->getChild<LLButton>("map_btn");
+	mShowProfile = panel->getChild<LLButton>("profile_btn");
 }
 
 void LLPanelPlacesTab::onRegionResponse(const LLVector3d& landmark_global_pos,
diff --git a/indra/newview/llpanelplacestab.h b/indra/newview/llpanelplacestab.h
index ce77a42259..f4e93a7658 100644
--- a/indra/newview/llpanelplacestab.h
+++ b/indra/newview/llpanelplacestab.h
@@ -45,6 +45,7 @@ public:
 	virtual void onSearchEdit(const std::string& string) = 0;
 	virtual void updateVerbs() = 0;		// Updates buttons at the bottom of Places panel
 	virtual void onShowOnMap() = 0;
+	virtual void onShowProfile() = 0;
 	virtual void onTeleport() = 0;
 
 	bool isTabVisible(); // Check if parent TabContainer is visible.
@@ -62,6 +63,7 @@ public:
 protected:
 	LLButton*				mTeleportBtn;
 	LLButton*				mShowOnMapBtn;
+	LLButton*				mShowProfile;
 
 	// Search string for filtering landmarks and teleport history locations
 	static std::string		sFilterSubString;
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 0a34531eee..c0b2244038 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -496,6 +496,20 @@ void LLTeleportHistoryPanel::onShowOnMap()
 	}
 }
 
+//virtual
+void LLTeleportHistoryPanel::onShowProfile()
+{
+	if (!mLastSelectedFlatlList)
+		return;
+
+	LLTeleportHistoryFlatItem* itemp = dynamic_cast<LLTeleportHistoryFlatItem *> (mLastSelectedFlatlList->getSelectedItem());
+
+	if(!itemp)
+		return;
+
+	LLTeleportHistoryFlatItem::showPlaceInfoPanel(itemp->getIndex());
+}
+
 // virtual
 void LLTeleportHistoryPanel::onTeleport()
 {
@@ -544,6 +558,7 @@ void LLTeleportHistoryPanel::updateVerbs()
 	{
 		mTeleportBtn->setEnabled(false);
 		mShowOnMapBtn->setEnabled(false);
+		mShowProfile->setEnabled(false);
 		return;
 	}
 
@@ -551,6 +566,7 @@ void LLTeleportHistoryPanel::updateVerbs()
 
 	mTeleportBtn->setEnabled(NULL != itemp);
 	mShowOnMapBtn->setEnabled(NULL != itemp);
+	mShowProfile->setEnabled(NULL != itemp);
 }
 
 void LLTeleportHistoryPanel::getNextTab(const LLDate& item_date, S32& tab_idx, LLDate& tab_date)
diff --git a/indra/newview/llpanelteleporthistory.h b/indra/newview/llpanelteleporthistory.h
index 5e2ccc0c93..a456ca506f 100644
--- a/indra/newview/llpanelteleporthistory.h
+++ b/indra/newview/llpanelteleporthistory.h
@@ -73,6 +73,7 @@ public:
 
 	/*virtual*/ void onSearchEdit(const std::string& string);
 	/*virtual*/ void onShowOnMap();
+	/*virtual*/ void onShowProfile();
 	/*virtual*/ void onTeleport();
 	///*virtual*/ void onCopySLURL();
 	/*virtual*/ void updateVerbs();
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index 5d1d1ab951..a7a0efcdb3 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -134,5 +134,14 @@ background_visible="true"
          right="-10"
          top="1"
          width="60" />
+        <button
+         follows="bottom|left"
+         height="23"
+         label="Profile"
+         layout="topleft"
+         name="profile_btn"
+         right="-1"
+         top="1"
+         width="111" />
     </panel>
 </panel>
-- 
cgit v1.2.3


From d218276bdcc1db433b2914553e3b3019d2bd45c7 Mon Sep 17 00:00:00 2001
From: Alexei Arabadji <aarabadji@productengine.com>
Date: Thu, 8 Apr 2010 10:49:48 +0300
Subject: fixed EXT-3703 Startup toast message doesn't fit toast width *
 reverted changes made previously by rev. f0663aa57134; * added calculation of
 toast height difference based on LLTextBox::reshapeToFitText; * added
 vertical centering of message textbox; reviewed by Mike Antipov at
 https://codereview.productengine.com/secondlife/r/195/

--HG--
branch : product-engine
---
 indra/newview/llscreenchannel.cpp                  | 32 ++++++++--------------
 indra/newview/skins/default/xui/en/panel_toast.xml |  1 -
 2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e9a80907b7..af440a3689 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -47,7 +47,6 @@
 #include "llsyswellwindow.h"
 #include "llimfloater.h"
 #include "llscriptfloater.h"
-#include "llfontgl.h"
 
 #include <algorithm>
 
@@ -582,7 +581,6 @@ void LLScreenChannel::showToastsTop()
 void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
 {
 	LLRect toast_rect;
-	LLRect tbox_rect;
 	LLToast::Params p;
 	p.lifetime_secs = timer;
 	p.enable_hide_btn = false;
@@ -593,34 +591,26 @@ void LLScreenChannel::createStartUpToast(S32 notif_num, F32 timer)
 
 	mStartUpToastPanel->setOnFadeCallback(boost::bind(&LLScreenChannel::onStartUpToastHide, this));
 
+	LLPanel* wrapper_panel = mStartUpToastPanel->getChild<LLPanel>("wrapper_panel");
 	LLTextBox* text_box = mStartUpToastPanel->getChild<LLTextBox>("toast_text");
 
 	std::string	text = LLTrans::getString("StartUpNotifications");
 
-	tbox_rect   = text_box->getRect();
-	S32 tbox_width  = tbox_rect.getWidth();
-	S32 tbox_vpad   = text_box->getVPad();
-	S32 text_width  = text_box->getDefaultFont()->getWidth(text);
-	S32 text_height = text_box->getTextPixelHeight();
-
-	// EXT - 3703 (Startup toast message doesn't fit toast width)
-	// Calculating TextBox HEIGHT needed to include the whole string according to the given WIDTH of the TextBox.
-	S32 new_tbox_height = (text_width/tbox_width + 1) * text_height;
-	// Calculating TOP position of TextBox
-	S32 new_tbox_top = new_tbox_height + tbox_vpad + gSavedSettings.getS32("ToastGap");
-	// Calculating toast HEIGHT according to the new TextBox size
-	S32 toast_height = new_tbox_height + tbox_vpad * 2;
-
-	tbox_rect.setLeftTopAndSize(tbox_rect.mLeft, new_tbox_top, tbox_rect.getWidth(), new_tbox_height);
-	text_box->setRect(tbox_rect);
-
 	toast_rect = mStartUpToastPanel->getRect();
 	mStartUpToastPanel->reshape(getRect().getWidth(), toast_rect.getHeight(), true);
-	toast_rect.setLeftTopAndSize(0, toast_height + gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_height);
-	mStartUpToastPanel->setRect(toast_rect);
 
 	text_box->setValue(text);
 	text_box->setVisible(TRUE);
+
+	S32 old_height = text_box->getRect().getHeight();
+	text_box->reshapeToFitText();
+	text_box->setOrigin(text_box->getRect().mLeft, (wrapper_panel->getRect().getHeight() - text_box->getRect().getHeight())/2);
+	S32 new_height = text_box->getRect().getHeight();
+	S32 height_delta = new_height - old_height;
+
+	toast_rect.setLeftTopAndSize(0, toast_rect.getHeight() + height_delta +gSavedSettings.getS32("ToastGap"), getRect().getWidth(), toast_rect.getHeight());
+	mStartUpToastPanel->setRect(toast_rect);
+
 	addChild(mStartUpToastPanel);
 	
 	mStartUpToastPanel->setVisible(TRUE);
diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml
index 11069b3ac3..e7384fa77f 100644
--- a/indra/newview/skins/default/xui/en/panel_toast.xml
+++ b/indra/newview/skins/default/xui/en/panel_toast.xml
@@ -64,7 +64,6 @@
    text_color="white"
    top="5"
    translate="false"
-   v_pad="5" 
    use_ellipses="true"
    width="260">
     Toast text;
-- 
cgit v1.2.3