From 48ba1af15e149e111592b1e9bfbc8cce4c15d5c4 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Thu, 10 Dec 2009 11:30:20 -0800
Subject: EXT-3047 	 "Block" item in "more verbs" menu of mini inspector
 isn't disabled when resident is blocked EXT-3358 	 Cannot toggle Grid
 pulldown on login screen reviewed by Richard

---
 indra/newview/llinspectavatar.cpp                  | 52 ++++++++++++++++++++--
 indra/newview/llpanellogin.cpp                     |  4 --
 .../default/xui/en/menu_inspect_avatar_gear.xml    | 12 ++++-
 3 files changed, 59 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llinspectavatar.cpp b/indra/newview/llinspectavatar.cpp
index 39114d64b4..dae980feb1 100644
--- a/indra/newview/llinspectavatar.cpp
+++ b/indra/newview/llinspectavatar.cpp
@@ -115,7 +115,7 @@ private:
 	void onClickTeleport();
 	void onClickInviteToGroup();
 	void onClickPay();
-	void onClickBlock();
+	void onToggleMute();
 	void onClickReport();
 	void onClickFreeze();
 	void onClickEject();
@@ -126,6 +126,8 @@ private:
 	bool onVisibleZoomIn();
 	void onClickMuteVolume();
 	void onVolumeChange(const LLSD& data);
+	bool enableMute();
+	bool enableUnmute();
 
 	// Is used to determine if "Add friend" option should be enabled in gear menu
 	bool isNotFriend();
@@ -205,7 +207,7 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
 	mCommitCallbackRegistrar.add("InspectAvatar.Teleport",	boost::bind(&LLInspectAvatar::onClickTeleport, this));	
 	mCommitCallbackRegistrar.add("InspectAvatar.InviteToGroup",	boost::bind(&LLInspectAvatar::onClickInviteToGroup, this));	
 	mCommitCallbackRegistrar.add("InspectAvatar.Pay",	boost::bind(&LLInspectAvatar::onClickPay, this));	
-	mCommitCallbackRegistrar.add("InspectAvatar.Block",	boost::bind(&LLInspectAvatar::onClickBlock, this));	
+	mCommitCallbackRegistrar.add("InspectAvatar.ToggleMute",	boost::bind(&LLInspectAvatar::onToggleMute, this));	
 	mCommitCallbackRegistrar.add("InspectAvatar.Freeze",
 		boost::bind(&LLInspectAvatar::onClickFreeze, this));	
 	mCommitCallbackRegistrar.add("InspectAvatar.Eject",
@@ -221,6 +223,8 @@ LLInspectAvatar::LLInspectAvatar(const LLSD& sd)
 	mEnableCallbackRegistrar.add("InspectAvatar.VisibleZoomIn", 
 		boost::bind(&LLInspectAvatar::onVisibleZoomIn, this));
 	mEnableCallbackRegistrar.add("InspectAvatar.Gear.Enable", boost::bind(&LLInspectAvatar::isNotFriend, this));
+	mEnableCallbackRegistrar.add("InspectAvatar.EnableMute", boost::bind(&LLInspectAvatar::enableMute, this));
+	mEnableCallbackRegistrar.add("InspectAvatar.EnableUnmute", boost::bind(&LLInspectAvatar::enableUnmute, this));
 
 	// can't make the properties request until the widgets are constructed
 	// as it might return immediately, so do it in postBuild.
@@ -625,10 +629,19 @@ void LLInspectAvatar::onClickPay()
 	closeFloater();
 }
 
-void LLInspectAvatar::onClickBlock()
+void LLInspectAvatar::onToggleMute()
 {
 	LLMute mute(mAvatarID, mAvatarName, LLMute::AGENT);
-	LLMuteList::getInstance()->add(mute);
+
+	if (LLMuteList::getInstance()->isMuted(mute.mID, mute.mName))
+	{
+		LLMuteList::getInstance()->remove(mute);
+	}
+	else
+	{
+		LLMuteList::getInstance()->add(mute);
+	}
+
 	LLPanelBlockedList::showPanelAndSelect(mute.mID);
 	closeFloater();
 }
@@ -663,6 +676,37 @@ void LLInspectAvatar::onClickFindOnMap()
 	LLFloaterReg::showInstance("world_map");
 }
 
+
+bool LLInspectAvatar::enableMute()
+{
+		bool is_linden = LLStringUtil::endsWith(mAvatarName, " Linden");
+		bool is_self = mAvatarID == gAgent.getID();
+
+		if (!is_linden && !is_self && !LLMuteList::getInstance()->isMuted(mAvatarID, mAvatarName))
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+}
+
+bool LLInspectAvatar::enableUnmute()
+{
+		bool is_linden = LLStringUtil::endsWith(mAvatarName, " Linden");
+		bool is_self = mAvatarID == gAgent.getID();
+
+		if (!is_linden && !is_self && LLMuteList::getInstance()->isMuted(mAvatarID, mAvatarName))
+		{
+			return true;
+		}
+		else
+		{
+			return false;
+		}
+}
+
 //////////////////////////////////////////////////////////////////////////////
 // LLInspectAvatarUtil
 //////////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index a729b8c06f..5e983f41c7 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -671,12 +671,8 @@ void LLPanelLogin::refreshLocation( bool force_visible )
 	sInstance->childSetVisible("start_location_combo", show_start);
 	sInstance->childSetVisible("start_location_text", show_start);
 
-#if LL_RELEASE_FOR_DOWNLOAD
 	BOOL show_server = gSavedSettings.getBOOL("ForceShowGrid");
 	sInstance->childSetVisible("server_combo", show_server);
-#else
-	sInstance->childSetVisible("server_combo", TRUE);
-#endif
 
 #endif
 }
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
index ef0bf72058..01df208850 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_avatar_gear.xml
@@ -48,7 +48,17 @@
    label="Block"
    name="block">
     <menu_item_call.on_click
-     function="InspectAvatar.Block"/>
+     function="InspectAvatar.ToggleMute"/>
+    <menu_item_call.on_visible
+     function="InspectAvatar.EnableMute" />
+  </menu_item_call>
+  <menu_item_call
+   label="Unblock"
+   name="unblock">
+    <menu_item_call.on_click
+     function="InspectAvatar.ToggleMute"/>
+    <menu_item_call.on_visible
+     function="InspectAvatar.EnableUnmute" />
   </menu_item_call>
   <menu_item_call
    label="Report"
-- 
cgit v1.2.3


From 1c482362d070919fad787d7c90504a7c9681ccfd Mon Sep 17 00:00:00 2001
From: Lis Pardi <lis@lindenlab.com>
Date: Mon, 14 Dec 2009 18:01:51 -0500
Subject: EXT-3297 Input/Output Devices are cut off in Preferences

---
 .../default/xui/en/panel_preferences_sound.xml     | 75 +---------------------
 1 file changed, 1 insertion(+), 74 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index d8e3f4ccfb..032721192d 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -400,86 +400,13 @@
      name="voice_input_device"
      top_pad="-2"
      width="200" />
-   <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="16"
-     layout="topleft"
-     left="165"
-     name="My volume label"
-     top_pad="5"
-     width="200">
-        My volume:
-    </text>
-      <slider_bar
-        control_name="AudioLevelMic"
-     follows="left|top"
-     height="17"
-     increment="0.05"
-     initial_value="1.0"
-     layout="topleft"
-     left="160"
-     max_val="2"
-     name="mic_volume_slider"
-     tool_tip="Change the volume using this slider"
-     top_pad="-2"
-     width="220" />
-    <text
-     type="string"
-     text_color="EmphasisColor"
-     length="1"
-     follows="left|top"
-     height="18"
-     layout="topleft"
-     left_pad="5"
-     name="wait_text"
-     top_delta="0"
-     width="110">
-        Please wait
-    </text>
-    <locate
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="bar0"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="2"
-     name="bar1"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="2"
-     name="bar2"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="2"
-     name="bar3"
-     top_delta="0"
-     width="20" />
-    <locate
-     height="20"
-     layout="topleft"
-     left_pad="2"
-     name="bar4"
-     top_delta="0"
-     width="20" />
           <icon
              height="18"
              image_name="Parcel_Voice_Light"
              left="80"
              name="speaker_icon"
              mouse_opaque="false"
-             top_pad="-8"
+             top_pad="10"
              visible="true"
              width="22" />
     <text
-- 
cgit v1.2.3


From ac086c56afd34c2bf208ab0777780c5e03baca7b Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Mon, 14 Dec 2009 15:47:15 -0800
Subject: ext-3362 - about land -> objects -> most recented sorted by day

reviewed by Mani
---
 indra/newview/llfloaterland.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 5b03292b22..0694143190 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -1527,7 +1527,7 @@ void LLPanelLandObjects::processParcelObjectOwnersReply(LLMessageSystem *msg, vo
 
 		object_count_str = llformat("%d", object_count);
 		item_params.columns.add().value(object_count_str).font(FONT).column("count");
-		item_params.columns.add().value(formatted_time((time_t)most_recent_time)).font(FONT).column("mostrecent");
+		item_params.columns.add().value(LLDate((time_t)most_recent_time)).font(FONT).column("mostrecent").type("date");
 
 		self->mOwnerList->addRow(item_params);
 
-- 
cgit v1.2.3


From f890a9399b0b7063594617fce6ce68b0c6ea3576 Mon Sep 17 00:00:00 2001
From: Lynx Linden <lynx@lindenlab.com>
Date: Tue, 15 Dec 2009 10:14:58 +0000
Subject: EXT-3394 EXT-3297: Putting back the prefs volume slider.

Further discussions between Q and Joe resulted in the decision to keep
the master gain control in the sound prefs panel. Reverting to Lis'
original change, which should match exactly the state in viewer-2-0.
---
 .../default/xui/en/panel_preferences_sound.xml     | 75 +++++++++++++++++++++-
 1 file changed, 74 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 032721192d..d8e3f4ccfb 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -400,13 +400,86 @@
      name="voice_input_device"
      top_pad="-2"
      width="200" />
+   <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     left="165"
+     name="My volume label"
+     top_pad="5"
+     width="200">
+        My volume:
+    </text>
+      <slider_bar
+        control_name="AudioLevelMic"
+     follows="left|top"
+     height="17"
+     increment="0.05"
+     initial_value="1.0"
+     layout="topleft"
+     left="160"
+     max_val="2"
+     name="mic_volume_slider"
+     tool_tip="Change the volume using this slider"
+     top_pad="-2"
+     width="220" />
+    <text
+     type="string"
+     text_color="EmphasisColor"
+     length="1"
+     follows="left|top"
+     height="18"
+     layout="topleft"
+     left_pad="5"
+     name="wait_text"
+     top_delta="0"
+     width="110">
+        Please wait
+    </text>
+    <locate
+     height="20"
+     layout="topleft"
+     left_delta="0"
+     name="bar0"
+     top_delta="0"
+     width="20" />
+    <locate
+     height="20"
+     layout="topleft"
+     left_pad="2"
+     name="bar1"
+     top_delta="0"
+     width="20" />
+    <locate
+     height="20"
+     layout="topleft"
+     left_pad="2"
+     name="bar2"
+     top_delta="0"
+     width="20" />
+    <locate
+     height="20"
+     layout="topleft"
+     left_pad="2"
+     name="bar3"
+     top_delta="0"
+     width="20" />
+    <locate
+     height="20"
+     layout="topleft"
+     left_pad="2"
+     name="bar4"
+     top_delta="0"
+     width="20" />
           <icon
              height="18"
              image_name="Parcel_Voice_Light"
              left="80"
              name="speaker_icon"
              mouse_opaque="false"
-             top_pad="10"
+             top_pad="-8"
              visible="true"
              width="22" />
     <text
-- 
cgit v1.2.3


From b7de450e3d9f691ea99731de73a25dc9b116e733 Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Tue, 15 Dec 2009 10:12:33 -0500
Subject: Adjusted button label vertical placement and input field text
 vertical placement to match.

---
 indra/newview/app_settings/settings.xml               | 2 +-
 indra/newview/skins/default/xui/en/widgets/button.xml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 7ac7a09d56..59252af362 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9303,7 +9303,7 @@
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <integer>4</integer>
+      <integer>5</integer>
     </map>
     <key>UIMaxComboWidth</key>
     <map>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index d7aa71a441..51f85e65e2 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -18,6 +18,6 @@
 	font="SansSerifSmall"
         hover_glow_amount="0.15"
         halign="center"
-        pad_bottom="2" 
+        pad_bottom="3" 
         scale_image="true">
 </button>
-- 
cgit v1.2.3


From 9feaf35e06a25a321f6490b666281077952003e4 Mon Sep 17 00:00:00 2001
From: Lis Pardi <lis@lindenlab.com>
Date: Tue, 15 Dec 2009 12:02:23 -0500
Subject: ext-3360 [BSI] Dates do not fit in most recent list on about land -->
 objects

---
 indra/newview/skins/default/xui/en/floater_about_land.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 10b72144e7..62edfb57e9 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1093,11 +1093,11 @@
                 <name_list.columns
                  label="Count"
                  name="count"
-                 width="70" />
+                 width="60" />
                 <name_list.columns
                  label="Most Recent"
                  name="mostrecent"
-                 width="160" />
+                 width="170" />
             </name_list>
         </panel>
         <panel
-- 
cgit v1.2.3


From 87ef5c2472c5be44cc47ab3bbae1951a5c3a3a6a Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 09:54:50 -0800
Subject: EXT-3471 Tabs need a pad_bottom override attribute Added
 label_pad_bottom and label_pad_left for tab containers.

---
 indra/newview/skins/default/xui/en/widgets/tab_container.xml | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 477c6fb8b8..0174782c5b 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -1,9 +1,15 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!--
+label_pad_bottom - vertical padding under tab button labels
+label_pad_left - padding to the left of tab button labels
+-->
 <tab_container tab_min_width="60"
                tab_max_width="150"
                font_halign="center"
                font="SansSerifSmall" 
-               tab_height="21">
+               tab_height="21"
+               label_pad_bottom="2"
+               label_pad_left="4">
   <first_tab tab_top_image_unselected="TabTop_Left_Off"
                tab_top_image_selected="TabTop_Left_Selected"
                tab_bottom_image_unselected="Toolbar_Left_Off"
@@ -22,4 +28,4 @@
                tab_bottom_image_selected="Toolbar_Right_Selected"
                tab_left_image_unselected="TabTop_Middle_Off"
                tab_left_image_selected="TabTop_Middle_Selected"/>
-</tab_container>
\ No newline at end of file
+</tab_container>
-- 
cgit v1.2.3


From 6d411f006dc1bf56bc5a2f11ae746a8b0b59cc0c Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 09:55:19 -0800
Subject: Removed "Show Side Tray" option from login debug menu It doesn't work
 and makes my viewer hang.

---
 indra/newview/skins/default/xui/en/menu_login.xml | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index 53be40d7fd..ba3bcc93b3 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -179,12 +179,14 @@
              parameter="ui_preview" />
         </menu_item_call>
       <menu_item_separator />
+      <!-- Broken
       <menu_item_call
          label="Show Side Tray"
          name="Show Side Tray">
         <menu_item_call.on_click
          function="Advanced.ShowSideTray" />
       </menu_item_call>
+      -->
       <menu
        label="UI Tests"
        name="UI Tests"
-- 
cgit v1.2.3


From 6d36fad38a15dcf1e39dab930a1c5ce5c1b7b5c3 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Tue, 15 Dec 2009 11:28:28 -0800
Subject: EXT-3478 - crazy scrollbars in profile when user has a long name

---
 .../skins/default/xui/en/panel_profile_view.xml    | 26 ++++++++++++----------
 1 file changed, 14 insertions(+), 12 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_profile_view.xml b/indra/newview/skins/default/xui/en/panel_profile_view.xml
index 8e683bffc1..6324ec2bd8 100644
--- a/indra/newview/skins/default/xui/en/panel_profile_view.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml
@@ -26,18 +26,20 @@
      top="2"
      width="23" />
     <text_editor
-	 read_only = "true"
-     follows="top|left|right"
-     font="SansSerifHugeBold"
-     height="29"
-     layout="topleft"
-     left_pad="10"
-     name="user_name"
-     text_color="white"
-     top="0"
-     value="(Loading...)"
-     use_ellipses="true"
-     width="275" />
+      allow_scroll="false" 
+      bg_visible="false" 
+      read_only = "true"
+      follows="top|left|right"
+      font="SansSerifHugeBold"
+      height="29"
+      layout="topleft"
+      left_pad="10"
+      name="user_name"
+      text_color="white"
+      top="0"
+      value="(Loading...)"
+      use_ellipses="true"
+      width="275" />
     <text
      follows="top|left"
      height="13"
-- 
cgit v1.2.3


From 1dcea4cb14feaab6feaaa74dea20c15ee390325a Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 13:04:38 -0800
Subject: EXT-3406 choosing About Land from parcel context menu toggles window
 Fixed to just show the window.

---
 indra/newview/skins/default/xui/en/menu_land.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml
index d88a2f8d25..bf797555c5 100644
--- a/indra/newview/skins/default/xui/en/menu_land.xml
+++ b/indra/newview/skins/default/xui/en/menu_land.xml
@@ -6,7 +6,7 @@
      label="About Land"
      name="Place Information...">
         <menu_item_call.on_click
-         function="ShowFloater"
+         function="Floater.Show"
          parameter="about_land" />
     </menu_item_call>
  <!--   <menu_item_call
-- 
cgit v1.2.3


From cb5935fd1bd78d64aea7d33629ee7b95b61c1f90 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 13:42:53 -0800
Subject: EXT-3438 Current location in the Teleport History isn't bolded Simple
 XML change

---
 .../newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
index 6c559aa185..4f574d75d5 100644
--- a/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
+++ b/indra/newview/skins/default/xui/en/widgets/teleport_history_menu_item.xml
@@ -3,6 +3,6 @@
   Based on menu_item_call.xml -->
 <teleport_history_menu_item
   back_item_font="SansSerif"
-  current_item_font="SansSerif"
+  current_item_font="SansSerifBold"
   forward_item_font="SansSerif"
   />
-- 
cgit v1.2.3


From 699e2e027bf241af6c0dec5a03a51422911b4e0f Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Tue, 15 Dec 2009 14:21:04 -0800
Subject: added "value" attribute to radio_items to better support arbitrary
 data selection moved LLRadioCtrl to internal implementation of LLRadioGroup
 reviewed by Leyla

---
 indra/newview/llfloatertools.h                     |  1 -
 .../skins/default/xui/en/floater_customize.xml     |  2 +
 .../default/xui/en/floater_settings_debug.xml      | 43 ++++++++++++----------
 .../default/xui/en/panel_preferences_chat.xml      |  7 +++-
 .../default/xui/en/panel_preferences_general.xml   |  3 ++
 .../default/xui/en/panel_preferences_graphics1.xml |  4 +-
 .../default/xui/en/panel_preferences_setup.xml     | 38 ++++++++++---------
 7 files changed, 57 insertions(+), 41 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h
index 05a88a31d3..2ec7ec46af 100644
--- a/indra/newview/llfloatertools.h
+++ b/indra/newview/llfloatertools.h
@@ -46,7 +46,6 @@ class LLPanelVolume;
 class LLPanelContents;
 class LLPanelFace;
 class LLPanelLandInfo;
-class LLRadioCtrl;
 class LLRadioGroup;
 class LLSlider;
 class LLTabContainer;
diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index 275ab5bb8b..9d3694873e 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -167,6 +167,7 @@
                  left="1"
                  name="radio"
                  top="1"
+                 value="0"
                  width="82" />
                 <radio_item
                  height="16"
@@ -174,6 +175,7 @@
                  layout="topleft"
                  left_delta="0"
                  name="radio2"
+                 value="1"
                  top_delta="16"
                  width="82" />
             </radio_group>
diff --git a/indra/newview/skins/default/xui/en/floater_settings_debug.xml b/indra/newview/skins/default/xui/en/floater_settings_debug.xml
index ffb11f3f18..3ed2bd7206 100644
--- a/indra/newview/skins/default/xui/en/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml
@@ -30,26 +30,29 @@
      top_pad="10"
      width="320"
      word_wrap="true" />
-    <combo_box
-     follows="top|left"
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="boolean_combo"
-     top_pad="10"
-     visible="false"
-     width="100">
-        <combo_box.item
-         label="TRUE"
-         name="TRUE"
-         value="true" />
-        <combo_box.item
-         label="FALSE"
-         name="FALSE"
-         value="" />
-         <combo_box.commit_callback
-           function="CommitSettings" />
-    </combo_box>
+  <radio_group
+   follows="top|left"
+   height="30"
+   layout="topleft"
+   left_delta="0"
+   name="boolean_combo"
+   top_pad="10"
+   visible="false"
+   tab_stop="true" 
+   width="100">
+    <radio_item
+      top_pad="5" 
+     label="TRUE"
+     name="TRUE"
+     value="true" />
+    <radio_item
+      top_pad="5" 
+     label="FALSE"
+     name="FALSE"
+     value="" />
+    <commit_callback
+      function="CommitSettings" />
+  </radio_group>
     <line_editor
      height="20"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index fff53c1de2..d0e325b04e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -16,13 +16,14 @@
 	 control_name="ChatFontSize"
      name="chat_font_size"
      top="10"
-     width="331">
+     width="440">
         <radio_item
          height="16"
          label="Small"
          layout="topleft"
          left="0"
          name="radio"
+         value="0" 
          top="10"
          width="125" />
         <radio_item
@@ -31,6 +32,7 @@
          layout="topleft"
          left_delta="145"
          name="radio2"
+         value="1"         
          top_delta="0"
          width="125" />
         <radio_item
@@ -39,6 +41,7 @@
          layout="topleft"
          left_delta="170"
          name="radio3"
+         value="2" 
          top_delta="0"
          width="125" />
     </radio_group>
@@ -340,6 +343,7 @@
       layout="topleft"
       left="0"
       name="radio"
+      value="0"
       top="0"
       width="150" />
      <radio_item
@@ -348,6 +352,7 @@
       layout="topleft"
       left_delta="145"
       name="radio2"
+      value="1"
       top_delta="0"
       width="150" />
     </radio_group>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index b5c6b637e5..3718a65b8c 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -217,6 +217,7 @@
          layout="topleft"
          left="0"
          name="radio"
+         value="0"
          top_pad="0"
          width="98" />
         <radio_item
@@ -225,6 +226,7 @@
          layout="topleft"
          left_pad="12"
          name="radio2"
+         value="1"
          top_delta="0"
          width="98" />
         <radio_item
@@ -233,6 +235,7 @@
          layout="topleft"
          left_pad="12"
          name="radio3"
+         value="2" 
          top_delta="0"
          width="98" />
     </radio_group>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
index 04985d0fa9..f97ccafecc 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_graphics1.xml
@@ -28,7 +28,7 @@
      follows="left|top"
      height="15"
      increment="0.025"
-     initial_valu="1"
+     initial_value="1"
      layout="topleft"
      left_delta="52"
      max_val="1.4"
@@ -656,6 +656,7 @@
             layout="topleft"
             left="3"
             name="SunMoon"
+            value="0"
             top="3"
             width="156" />
            <radio_item
@@ -664,6 +665,7 @@
             layout="topleft"
             left_delta="0"
             name="LocalLights"
+            value="1"
             top_delta="16"
             width="156" />
         </radio_group>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index a7def5306e..e06c15502c 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -268,24 +268,26 @@
      name="use_external_browser"
      top_pad="4"
      width="480">
-        <radio_item
-         height="20"
-         label="Use built-in browser"
-         layout="topleft"
-		 left="0"
-		 name="internal"
-         tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]."
-		 top="0"
-         width="480" />
-		<radio_item
-         height="20"
-         label="Use my browser (IE, Firefox)"
-         layout="topleft"
-         left_delta="0"
-         name="external"
-         tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen."
-         top_delta="20"
-         width="480" />
+      <radio_item
+        height="20"
+        label="Use built-in browser"
+        layout="topleft"
+        left="0"
+        name="internal"
+        value="0" 
+        tool_tip="Use the built-in web browser for help, web links, etc. This browser opens as a new window inside [APP_NAME]."
+        top="0"
+        width="480" />
+      <radio_item
+        height="20"
+        label="Use my browser (IE, Firefox)"
+        layout="topleft"
+        left_delta="0"
+        name="external"
+        value="1"
+        tool_tip="Use the default system web browser for help, web links, etc. Not recommended if running full screen."
+        top_delta="20"
+        width="480" />
     </radio_group>
     
    <check_box
-- 
cgit v1.2.3


From dcf3e8884d1378f1f95921d24eab7a41248b3570 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 15:59:16 -0800
Subject: EXT-3494 Sanitize floater show versus toggle Eliminated legacy
 "ShowFloater" method in favor of Floater.Show and Floater.Toggle.  Wrote new
 custom show methods where needed. Reviewed with Leyla.

---
 indra/newview/llviewermenu.cpp                     | 66 ++++++++--------------
 .../skins/default/xui/en/menu_attachment_self.xml  | 23 +-------
 .../skins/default/xui/en/menu_avatar_self.xml      | 11 +---
 .../default/xui/en/menu_inspect_self_gear.xml      |  3 +-
 indra/newview/skins/default/xui/en/menu_land.xml   |  3 +-
 indra/newview/skins/default/xui/en/menu_login.xml  | 18 +++---
 .../newview/skins/default/xui/en/menu_mini_map.xml |  2 +-
 indra/newview/skins/default/xui/en/menu_viewer.xml | 35 ++----------
 .../skins/default/xui/en/panel_place_profile.xml   |  4 +-
 9 files changed, 44 insertions(+), 121 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 0be0b56bc3..075c4a30fa 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5520,47 +5520,27 @@ void handle_viewer_disable_message_log(void*)
 	gMessageSystem->stopLogging();
 }
 
-class LLShowFloater : public view_listener_t
+void handle_customize_avatar()
 {
-	bool handleEvent(const LLSD& userdata)
+	if (gAgentWearables.areWearablesLoaded())
 	{
-		std::string floater_name = userdata.asString();
-		if (floater_name == "appearance")
-		{
-			if (gAgentWearables.areWearablesLoaded())
-			{
-				gAgent.changeCameraToCustomizeAvatar();
-			}
-		}
-		else if (floater_name == "toolbar")
-		{
-			LLToolBar::toggle(NULL);
-		}
-		else if (floater_name == "buy land")
-		{
-			handle_buy_land();
-		}
-		else if (floater_name == "script errors")
-		{
-			LLFloaterScriptDebug::show(LLUUID::null);
-		}
-		else if (floater_name == "complaint reporter")
-		{
-			// Prevent menu from appearing in screen shot.
-			gMenuHolder->hideMenus();
-			LLFloaterReporter::showFromMenu(COMPLAINT_REPORT);
-		}
-		else if (floater_name == "buy currency")
-		{
-			LLFloaterBuyCurrency::buyCurrency();
-		}
-		else
-		{
-			LLFloaterReg::toggleInstance(floater_name);
-		}
-		return true;
+		gAgent.changeCameraToCustomizeAvatar();
 	}
-};
+}
+
+void handle_report_abuse()
+{
+	// Prevent menu from appearing in screen shot.
+	gMenuHolder->hideMenus();
+	LLFloaterReporter::showFromMenu(COMPLAINT_REPORT);
+}
+
+void handle_buy_currency()
+{
+	LLFloaterBuyCurrency::buyCurrency();
+}
+
+
 
 class LLFloaterVisible : public view_listener_t
 {
@@ -5568,11 +5548,6 @@ class LLFloaterVisible : public view_listener_t
 	{
 		std::string floater_name = userdata.asString();
 		bool new_value = false;
-		if (floater_name == "toolbar")
-		{
-			new_value = LLToolBar::visible(NULL);
-		}
-		else
 		{
 			new_value = LLFloaterReg::instanceVisible(floater_name);
 		}
@@ -7607,6 +7582,7 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLEditEnableDuplicate(), "Edit.EnableDuplicate");
 	view_listener_t::addMenu(new LLEditEnableTakeOff(), "Edit.EnableTakeOff");
 	view_listener_t::addMenu(new LLEditEnableCustomizeAvatar(), "Edit.EnableCustomizeAvatar");
+	commit.add("CustomizeAvatar", boost::bind(&handle_customize_avatar));
 
 	// View menu
 	view_listener_t::addMenu(new LLViewMouselook(), "View.Mouselook");
@@ -7931,9 +7907,11 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLLandEdit(), "Land.Edit");
 
 	view_listener_t::addMenu(new LLLandEnableBuyPass(), "Land.EnableBuyPass");
+	commit.add("Land.Buy", boost::bind(&handle_buy_land));
 
 	// Generic actions
-	view_listener_t::addMenu(new LLShowFloater(), "ShowFloater");
+	commit.add("ReportAbuse", boost::bind(&handle_report_abuse));
+	commit.add("BuyCurrency", boost::bind(&handle_buy_currency));
 	view_listener_t::addMenu(new LLShowHelp(), "ShowHelp");
 	view_listener_t::addMenu(new LLPromptShowURL(), "PromptShowURL");
 	view_listener_t::addMenu(new LLShowAgentProfile(), "ShowAgentProfile");
diff --git a/indra/newview/skins/default/xui/en/menu_attachment_self.xml b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
index c85dbbb1bc..281ec5a7c3 100644
--- a/indra/newview/skins/default/xui/en/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_attachment_self.xml
@@ -54,25 +54,6 @@
         <menu_item_call.on_enable
          function="Attachment.EnableDrop" />
     </menu_item_call>
-    <!--menu_item_call
-     label="My Profile"
-     layout="topleft"
-     name="Profile...">
-        <menu_item_call.on_click
-         function="ShowAgentProfile"
-         parameter="agent" />
-    </menu_item_call>
-    <menu_item_call
-     label="My Appearance"
-     layout="topleft"
-     name="Appearance...">
-        <menu_item_call.on_click
-         function="ShowFloater"
-         parameter="appearance" />
-        <menu_item_call.on_enable
-         function="Edit.EnableCustomizeAvatar" />
-
-    </menu_item_call-->
     <menu_item_separator
       layout="topleft" />
     
@@ -88,11 +69,9 @@
     </menu_item_call>
      <menu_item_call
      label="My Appearance"
-     layout="topleft"
      name="Appearance...">
         <menu_item_call.on_click
-         function="ShowFloater"
-         parameter="appearance" />
+         function="CustomizeAvatar" />
         <menu_item_call.on_enable
          function="Edit.EnableCustomizeAvatar" />
     </menu_item_call>
diff --git a/indra/newview/skins/default/xui/en/menu_avatar_self.xml b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
index c6ce612a76..9212d2d648 100644
--- a/indra/newview/skins/default/xui/en/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/en/menu_avatar_self.xml
@@ -187,8 +187,7 @@
      layout="topleft"
      name="Appearance...">
         <menu_item_call.on_click
-         function="ShowFloater"
-         parameter="appearance" />
+         function="CustomizeAvatar" />
         <menu_item_call.on_enable
          function="Edit.EnableCustomizeAvatar" />
     </menu_item_call>
@@ -200,14 +199,6 @@
          function="SideTray.PanelPeopleTab"
          parameter="friends_panel" />
     </menu_item_call>
-   <!--menu_item_call
-     label="My Gestures"
-     layout="topleft"
-     name="Gestures...">
-        <menu_item_call.on_click
-         function="ShowFloater"
-         parameter="gestures" />
-    </menu_item_call-->
     <menu_item_call
      label="My Groups"
      layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
index 9894a01701..9dc2611663 100644
--- a/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_inspect_self_gear.xml
@@ -19,8 +19,7 @@
    label="My Appearance"
    name="my_appearance">
     <menu_item_call.on_click
-     function="ShowFloater"
-     parameter="appearance" />
+     function="CustomizeAvatar" />
     <menu_item_call.on_enable
      function="Edit.EnableCustomizeAvatar" />
   </menu_item_call>
diff --git a/indra/newview/skins/default/xui/en/menu_land.xml b/indra/newview/skins/default/xui/en/menu_land.xml
index bf797555c5..cc6d8ad9c1 100644
--- a/indra/newview/skins/default/xui/en/menu_land.xml
+++ b/indra/newview/skins/default/xui/en/menu_land.xml
@@ -28,8 +28,7 @@
      label="Buy This Land"
      name="Land Buy">
         <menu_item_call.on_click
-         function="ShowFloater"
-         parameter="buy land" />
+         function="Land.Buy" />
         <menu_item_call.on_enable
          function="World.EnableBuyLand" />
     </menu_item_call>
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index ba3bcc93b3..7a0b11872a 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -16,7 +16,7 @@
          name="Preferences..."
          shortcut="control|P">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Toggle"
              parameter="preferences" />
         </menu_item_call>
         <menu_item_separator />
@@ -53,7 +53,7 @@
          label="About [APP_NAME]"
          name="About Second Life">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Show"
              parameter="sl_about" />
         </menu_item_call>
     </menu>
@@ -175,7 +175,7 @@
          name="UI Preview Tool"
          shortcut="control|T">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Toggle"
              parameter="ui_preview" />
         </menu_item_call>
       <menu_item_separator />
@@ -196,7 +196,7 @@
          name="Textbox"
          shortcut="control|1">
           <menu_item_call.on_click
-           function="ShowFloater"
+           function="Floater.Show"
            parameter="test_textbox" />
         </menu_item_call>
         <menu_item_call
@@ -204,7 +204,7 @@
          name="Text Editor"
          shortcut="control|2">
           <menu_item_call.on_click
-           function="ShowFloater"
+           function="Floater.Show"
            parameter="test_text_editor" />
         </menu_item_call>
         <menu_item_call
@@ -212,14 +212,14 @@
          name="Widgets"
          shortcut="control|shift|T">
           <menu_item_call.on_click
-           function="ShowFloater"
+           function="Floater.Show"
            parameter="test_widgets" />
         </menu_item_call>
         <menu_item_call
          label="Inspectors"
          name="Inspectors">
           <menu_item_call.on_click
-           function="ShowFloater"
+           function="Floater.Show"
            parameter="test_inspectors" />
         </menu_item_call>
       </menu>
@@ -237,14 +237,14 @@
          label="Show TOS"
          name="TOS">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Show"
              parameter="message_tos" />
         </menu_item_call>
         <menu_item_call
          label="Show Critical Message"
          name="Critical">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Show"
              parameter="message_critical" />
         </menu_item_call>
         <menu_item_call
diff --git a/indra/newview/skins/default/xui/en/menu_mini_map.xml b/indra/newview/skins/default/xui/en/menu_mini_map.xml
index 8d0edf018d..f5ea3e735b 100644
--- a/indra/newview/skins/default/xui/en/menu_mini_map.xml
+++ b/indra/newview/skins/default/xui/en/menu_mini_map.xml
@@ -51,7 +51,7 @@
      label="World Map"
      name="World Map">
         <menu_item_call.on_click
-         function="ShowFloater"
+         function="Floater.Show"
          parameter="world_map" />
     </menu_item_call>
 </menu>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 0891afaf76..71b67594e5 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -32,8 +32,7 @@
          layout="topleft"
          name="Buy and Sell L$">
             <menu_item_call.on_click
-             function="ShowFloater"
-             parameter="buy currency" />
+             function="BuyCurrency" />
         </menu_item_call>
         <menu_item_separator
          layout="topleft" />
@@ -50,8 +49,7 @@
          layout="topleft"
          name="Appearance">
             <menu_item_call.on_click
-             function="ShowFloater"
-             parameter="appearance" />
+             function="CustomizeAvatar" />
             <menu_item_call.on_enable
              function="Edit.EnableCustomizeAvatar" />
         </menu_item_call>
@@ -82,7 +80,7 @@
          name="Gestures"
          shortcut="control|G">
             <menu_item_call.on_click
-             function="ShowFloater"
+             function="Floater.Toggle"
              parameter="gestures" />
         </menu_item_call>
         <menu
@@ -285,8 +283,7 @@
              layout="topleft"
              name="Buy Land">
                 <menu_item_call.on_click
-                 function="ShowFloater"
-                 parameter="buy land" />
+                 function="Land.Buy" />
                 <menu_item_call.on_enable
                  function="World.EnableBuyLand" />
             </menu_item_call>
@@ -295,7 +292,7 @@
              layout="topleft"
              name="My Land">
                 <menu_item_call.on_click
-                 function="ShowFloater"
+                 function="Floater.Show"
                  parameter="land_holdings" />
         </menu_item_call>
         <menu
@@ -868,14 +865,6 @@
 				 function="ToggleControl"
 				 parameter="DebugPermissions" />
 			</menu_item_check>
-            <!--menu_item_call
-             label="Show Script Warning/Error Window"
-             layout="topleft"
-             name="Show Script Warning/Error Window">
-                <menu_item_call.on_click
-                 function="ShowFloater"
-                 parameter="script errors" />
-            </menu_item_call-->
             <menu_item_separator
              layout="topleft" />
             <menu
@@ -1082,8 +1071,7 @@
              layout="topleft"
              name="Report Abuse">
                 <menu_item_call.on_click
-                 function="ShowFloater"
-                 parameter="complaint reporter" />
+                 function="ReportAbuse" />
             </menu_item_call>
         <menu_item_call
              label="Report Bug"
@@ -3640,17 +3628,6 @@
                  parameter="all" />
             </menu_item_call>
         </menu>
-        <menu_item_check
-         label="Show Toolbar"
-         layout="topleft"
-         name="Show Toolbar">
-            <menu_item_check.on_check
-             function="FloaterVisible"
-             parameter="toolbar" />
-            <menu_item_check.on_click
-             function="ShowFloater"
-             parameter="toolbar" />
-        </menu_item_check>
         <menu
          create_jump_keys="true"
          label="Help"
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 b25d9a7dfc..a5731123b1 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -526,7 +526,7 @@
                          top="138"
                          width="90">
                             <click_callback
-                             function="ShowFloater"
+                             function="Floater.Show"
                              parameter="about_land" />
                         </button>
                     </panel>
@@ -652,7 +652,7 @@
                          tab_stop="false"
                          width="105">
                             <click_callback
-                             function="ShowFloater"
+                             function="Floater.Show"
                              parameter="region_info" />
                         </button>
                     </panel>
-- 
cgit v1.2.3


From 679983b33bc2ce577e63557b56d3d94668972ea1 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Tue, 15 Dec 2009 16:05:37 -0800
Subject: EXT-3484 Create Notice button is illegible (old label was overriding
 art)

---
 indra/newview/skins/default/xui/en/panel_group_notices.xml | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_group_notices.xml b/indra/newview/skins/default/xui/en/panel_group_notices.xml
index 1b70b95a93..e096715cee 100644
--- a/indra/newview/skins/default/xui/en/panel_group_notices.xml
+++ b/indra/newview/skins/default/xui/en/panel_group_notices.xml
@@ -78,7 +78,6 @@ Maximum 200 per group daily
        image_unselected="AddItem_Off"
        image_disabled="AddItem_Disabled"
        layout="topleft"
-       label="Create a new notice"
        left="5"
        name="create_new_notice"
        tool_tip="Create a new notice"
-- 
cgit v1.2.3


From b76c4399833c202f6cc8a6fb903fee82e8fcd3f3 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Tue, 15 Dec 2009 16:25:11 -0800
Subject: EXT-2649 Replace 'Advanced > Set Away After 30 Minutes' with Away
 time options EXT-2649 [BSI] Confirm on Drop EXT-3416  Can't name a new
 gesture on creation (and renaming is HARD) reviewed by James

---
 indra/newview/app_settings/settings.xml            | 13 +---
 indra/newview/llappviewer.cpp                      |  2 +-
 indra/newview/llpreview.cpp                        |  7 ++
 indra/newview/llpreviewgesture.cpp                 |  4 +
 indra/newview/llviewermenu.cpp                     | 79 ++++++++++++--------
 indra/newview/llviewerwindow.cpp                   |  2 +-
 .../default/xui/en/floater_preview_gesture.xml     | 24 +++++-
 indra/newview/skins/default/xui/en/menu_viewer.xml | 11 ---
 .../newview/skins/default/xui/en/notifications.xml | 13 ++++
 .../default/xui/en/panel_preferences_general.xml   | 85 +++++++++++-----------
 10 files changed, 143 insertions(+), 97 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 59252af362..37b55fdd86 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -8,7 +8,7 @@
       <key>Persist</key>
       <integer>1</integer>
       <key>Type</key>
-      <string>F32</string>
+      <string>S32</string>
       <key>Value</key>
       <real>300.0</real>
     </map>
@@ -45,17 +45,6 @@
       <key>Value</key>
       <integer>0</integer>
     </map>
-    <key>AllowIdleAFK</key>
-    <map>
-      <key>Comment</key>
-      <string>Automatically set AFK (away from keyboard) mode when idle</string>
-      <key>Persist</key>
-      <integer>1</integer>
-      <key>Type</key>
-      <string>Boolean</string>
-      <key>Value</key>
-      <integer>1</integer>
-    </map>
     <key>AllowMultipleViewers</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 90b8cd9572..a4dee14e40 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -332,7 +332,7 @@ LLAppViewer::LLUpdaterInfo *LLAppViewer::sUpdaterInfo = NULL ;
 void idle_afk_check()
 {
 	// check idle timers
-	if (gSavedSettings.getBOOL("AllowIdleAFK") && (gAwayTriggerTimer.getElapsedTimeF32() > gSavedSettings.getF32("AFKTimeout")))
+	if (gSavedSettings.getS32("AFKTimeout") && (gAwayTriggerTimer.getElapsedTimeF32() > gSavedSettings.getS32("AFKTimeout")))
 	{
 		gAgent.setAFK();
 	}
diff --git a/indra/newview/llpreview.cpp b/indra/newview/llpreview.cpp
index c95882931b..0b0c03e9e9 100644
--- a/indra/newview/llpreview.cpp
+++ b/indra/newview/llpreview.cpp
@@ -150,6 +150,13 @@ void LLPreview::onCommit()
 		
 		LLPointer<LLViewerInventoryItem> new_item = new LLViewerInventoryItem(item);
 		new_item->setDescription(childGetText("desc"));
+
+		std::string new_name = childGetText("name");
+		if ( (new_item->getName() != new_name) && !new_name.empty())
+		{
+			new_item->rename(childGetText("name"));
+		}
+
 		if(mObjectUUID.notNull())
 		{
 			// must be in an object
diff --git a/indra/newview/llpreviewgesture.cpp b/indra/newview/llpreviewgesture.cpp
index 30cb21c83c..e2eee6708a 100644
--- a/indra/newview/llpreviewgesture.cpp
+++ b/indra/newview/llpreviewgesture.cpp
@@ -495,6 +495,10 @@ BOOL LLPreviewGesture::postBuild()
 		childSetCommitCallback("desc", LLPreview::onText, this);
 		childSetText("desc", item->getDescription());
 		childSetPrevalidate("desc", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
+		
+		childSetCommitCallback("name", LLPreview::onText, this);
+		childSetText("name", item->getName());
+		childSetPrevalidate("name", &LLLineEditor::prevalidateASCIIPrintableNoPipe);
 	}
 
 	return LLPreview::postBuild();
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 0be0b56bc3..91d305bee7 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -5851,47 +5851,68 @@ void confirm_replace_attachment(S32 option, void* user_data)
 	}
 }
 
-class LLAttachmentDrop : public view_listener_t
+bool callback_attachment_drop(const LLSD& notification, const LLSD& response)
 {
-	bool handleEvent(const LLSD& userdata)
+	// Called when the user clicked on an object attached to them
+	// and selected "Drop".
+	LLUUID object_id = notification["payload"]["object_id"].asUUID();
+	LLViewerObject *object = gObjectList.findObject(object_id);
+	
+	if (!object)
 	{
-		// Called when the user clicked on an object attached to them
-		// and selected "Drop".
-		LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
-		if (!object)
-		{
-			llwarns << "handle_drop_attachment() - no object to drop" << llendl;
-			return true;
-		}
+		llwarns << "handle_drop_attachment() - no object to drop" << llendl;
+		return true;
+	}
 
-		LLViewerObject *parent = (LLViewerObject*)object->getParent();
-		while (parent)
+	LLViewerObject *parent = (LLViewerObject*)object->getParent();
+	while (parent)
+	{
+		if(parent->isAvatar())
 		{
-			if(parent->isAvatar())
-			{
-				break;
-			}
-			object = parent;
-			parent = (LLViewerObject*)parent->getParent();
+			break;
 		}
+		object = parent;
+		parent = (LLViewerObject*)parent->getParent();
+	}
 
-		if (!object)
+	if (!object)
+	{
+		llwarns << "handle_detach() - no object to detach" << llendl;
+		return true;
+	}
+
+	if (object->isAvatar())
+	{
+		llwarns << "Trying to detach avatar from avatar." << llendl;
+		return true;
+	}
+	
+	// reselect the object
+	LLSelectMgr::getInstance()->selectObjectAndFamily(object);
+
+	LLSelectMgr::getInstance()->sendDropAttachment();
+
+	return true;
+}
+
+class LLAttachmentDrop : public view_listener_t
+{
+	bool handleEvent(const LLSD& userdata)
+	{
+		LLSD payload;
+		LLViewerObject *object = LLSelectMgr::getInstance()->getSelection()->getPrimaryObject();
+
+		if (object) 
 		{
-			llwarns << "handle_detach() - no object to detach" << llendl;
-			return true;
+			payload["object_id"] = object->getID();
 		}
-
-		if (object->isAvatar())
+		else
 		{
-			llwarns << "Trying to detach avatar from avatar." << llendl;
+			llwarns << "Drop object not found" << llendl;
 			return true;
 		}
 
-		// The sendDropAttachment() method works on the list of selected
-		// objects.  Thus we need to clear the list, make sure it only
-		// contains the object the user clicked, send the message,
-		// then clear the list.
-		LLSelectMgr::getInstance()->sendDropAttachment();
+		LLNotificationsUtil::add("AttachmentDrop", LLSD(), payload, &callback_attachment_drop);
 		return true;
 	}
 };
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 966aeba25c..0ddc517754 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -1014,7 +1014,7 @@ BOOL LLViewerWindow::handleActivate(LLWindow *window, BOOL activated)
 	{
 		mActive = FALSE;
 				
-		if (gSavedSettings.getBOOL("AllowIdleAFK"))
+		if (gSavedSettings.getS32("AFKTimeout"))
 		{
 			gAgent.setAFK();
 		}
diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
index 8cc2c91ef5..3dc546aee3 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml
@@ -39,6 +39,28 @@
      name="Title">
         Gesture: [NAME]
     </floater.string>
+  <text
+   type="string"
+   length="1"
+   follows="top|left"
+   font="SansSerifSmall"
+   height="10"
+   layout="topleft"
+   left="10"
+   name="name_text"
+   top="20"
+   font.style="BOLD"
+   width="100">
+    Name:
+  </text>
+  <line_editor
+   follows="left|top"
+   height="20"
+   layout="topleft"
+   left_delta="84"
+   name="name"
+   top_delta="-4"
+   width="180" />
     <text
      type="string"
      length="1"
@@ -48,7 +70,7 @@
      layout="topleft"
      left="10"
      name="desc_label"
-     top="25"
+     top_pad="10"
      font.style="BOLD"
      width="100">
         Description:
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 0891afaf76..aff28fd8c8 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -1110,17 +1110,6 @@
      name="Advanced"
      tear_off="true"
      visible="false">
-        <menu_item_check
-         label="Set Away After 30 Minutes"
-         layout="topleft"
-         name="Go Away/AFK When Idle">
-            <menu_item_check.on_check
-             function="CheckControl"
-             parameter="AllowIdleAFK" />
-            <menu_item_check.on_click
-             function="ToggleControl"
-             parameter="AllowIdleAFK" />
-        </menu_item_check>
         <menu_item_call
          label="Stop Animating Me"
          layout="topleft"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 4645bfea74..3d17a4e32f 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -369,6 +369,19 @@ Add this Ability to &apos;[ROLE_NAME]&apos;?
      yestext="Yes"/>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="AttachmentDrop"
+   type="alertmodal">
+    You are about to drop your attachment.
+    Are you sure you want to continue?
+    <usetemplate
+     ignoretext="Confirm before dropping attachments"
+     name="okcancelignore"
+     notext="No"
+     yestext="Yes"/>
+  </notification>
+
   <notification
     icon="alertmodal.tga"
     name="ClickUnimplemented"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index b5c6b637e5..d711a2e6ec 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -290,48 +290,49 @@
      tool_tip="Click to open Color Picker"
      top_pad="5"
      width="32" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="15"
-     layout="topleft"
-     left="30"
-     name="title_afk_text"
-     text_color="white"
-     top_pad="-5"
-     width="190">
-        Away timeout:
-    </text>
-    <spinner
-     control_name="AFKTimeout"
-     decimal_digits="0"
-     follows="left|top"
-     halign="right"
-     height="15"
-     increment="1"
-     initial_value="300"
-     label=""
-     label_width="0"
-     layout="topleft"
-     left_delta="50"
-     max_val="600"
-     min_val="30"
-     name="afk_timeout_spinner"
-     top_pad="5"
-     width="50" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     halign="left"
-     height="15"
-     layout="topleft"
-     left_pad="2"
-     name="seconds_textbox"
-     width="70">
-       seconds
-    </text>
+  <text
+      type="string"
+      length="1"
+      follows="left|top"
+      height="15"
+      layout="topleft"
+      left="30"
+      name="title_afk_text"
+      text_color="white"
+      top_pad="-5"
+      width="190">
+    Away timeout:
+  </text>
+  <combo_box
+            top_pad="-20" 
+            height="20"
+            layout="topleft"
+            control_name="AFKTimeout"
+            left="140"
+            label="Away Timeout:" 
+            name="afk"
+            width="130">
+    <combo_box.item
+     label="2 minutes"
+     name="item0"
+     value="120" />
+    <combo_box.item
+     label="5 minutes"
+     name="item1"
+     value="300" />
+    <combo_box.item
+     label="10 minutes"
+     name="item2"
+     value="600" />
+    <combo_box.item
+     label="30 minutes"
+     name="item3"
+     value="1800" />
+    <combo_box.item
+     label="never"
+     name="item4"
+     value="0" />
+  </combo_box>
     <text
      type="string"
      length="1"
-- 
cgit v1.2.3


From cda1598fd6e17e0c0b641c73c540d8c898f2798f Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Tue, 15 Dec 2009 16:54:32 -0800
Subject: fixed enter not performing login

---
 indra/newview/llpanellogin.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index a5bfa18851..48adfd0011 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -249,7 +249,7 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 
 	childSetAction("connect_btn", onClickConnect, this);
 
-	getChild<LLPanel>("login_widgets")->setDefaultBtn("connect_btn");
+	getChild<LLPanel>("login")->setDefaultBtn("connect_btn");
 
 	std::string channel = gSavedSettings.getString("VersionChannelName");
 	std::string version = llformat("%s (%d)",
-- 
cgit v1.2.3


From 1bb4c9e1c9e9d797d4f49152afe4ff80ba22405d Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Tue, 15 Dec 2009 17:09:35 -0800
Subject: EXT-3446 Manage Telehub floater opens below buildtools Took out
 custom positioning code, set left edge to 300 in XML

---
 indra/newview/llfloatertelehub.cpp                     | 11 -----------
 indra/newview/skins/default/xui/en/floater_telehub.xml |  2 ++
 2 files changed, 2 insertions(+), 11 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloatertelehub.cpp b/indra/newview/llfloatertelehub.cpp
index 9841cd2796..816181643f 100644
--- a/indra/newview/llfloatertelehub.cpp
+++ b/indra/newview/llfloatertelehub.cpp
@@ -84,17 +84,6 @@ void LLFloaterTelehub::onOpen(const LLSD& key)
 	LLToolMgr::getInstance()->setCurrentToolset(gBasicToolset);
 	LLToolMgr::getInstance()->getCurrentToolset()->selectTool( LLToolCompTranslate::getInstance() );
 
-	// Find tools floater, glue to bottom
-	if (gFloaterTools)
-	{
-		LLRect tools_rect = gFloaterTools->getRect();
-		S32 our_width = getRect().getWidth();
-		S32 our_height = getRect().getHeight();
-		LLRect our_rect;
-		our_rect.setLeftTopAndSize(tools_rect.mLeft, tools_rect.mBottom, our_width, our_height);
-		setRect(our_rect);
-	}
-
 	sendTelehubInfoRequest();
 	
 	mObjectSelection = LLSelectMgr::getInstance()->getEditSelection();
diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml
index bb463edd4d..da412ed8a0 100644
--- a/indra/newview/skins/default/xui/en/floater_telehub.xml
+++ b/indra/newview/skins/default/xui/en/floater_telehub.xml
@@ -1,8 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!-- Explicit left edge to avoid overlapping build tools -->
 <floater
  legacy_header_height="18"
  height="250"
  layout="topleft"
+ left="300" 
  name="telehub"
  help_topic="telehub"
  title="TELEHUB"
-- 
cgit v1.2.3


From 17d1d3c129c25dd27ddbf2d15ab8873a61c16658 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Tue, 15 Dec 2009 18:47:46 -0800
Subject: EXT-2947  [BSI] Group Chat and Instant Message floaters missing
 minimze button, confusing functionality on X button

---
 .../skins/default/xui/en/floater_camera.xml        |  6 +++---
 .../skins/default/xui/en/floater_im_session.xml    |  6 +++---
 .../skins/default/xui/en/floater_moveview.xml      | 22 +++++++++++-----------
 .../skins/default/xui/en/floater_nearby_chat.xml   | 18 +++++++++---------
 .../default/xui/en/floater_voice_controls.xml      | 22 ++++++++++++----------
 .../skins/default/xui/en/panel_chat_header.xml     |  4 ++--
 6 files changed, 40 insertions(+), 38 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml
index d378b427f1..a797d54749 100644
--- a/indra/newview/skins/default/xui/en/floater_camera.xml
+++ b/indra/newview/skins/default/xui/en/floater_camera.xml
@@ -2,8 +2,8 @@
 <floater
  legacy_header_height="18"
  can_dock="true"
- can_minimize="false"
- can_close="true"
+ can_minimize="true"
+ can_close="false"
  center_horiz="true"
  follows="bottom"
  height="152"
@@ -108,7 +108,7 @@
          image_unselected="Cam_Rotate_Out"
          layout="topleft"
          left="45"
-         mouse_opaque="false" 
+         mouse_opaque="false"
          name="cam_rotate_stick"
          quadrant="left"
          scale_image="false"
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 645c2973d8..db97dc2054 100644
--- a/indra/newview/skins/default/xui/en/floater_im_session.xml
+++ b/indra/newview/skins/default/xui/en/floater_im_session.xml
@@ -8,9 +8,9 @@
  left="0"
  name="panel_im"
  top="0"
- can_close="true"
  can_dock="false"
- can_minimize="false"
+ can_minimize="true"
+ can_close="true"
  visible="true"
  width="300"
  can_resize="true"
@@ -66,7 +66,7 @@
          width="180">
         </chat_history>
         <line_editor
-         bottom="0" 
+         bottom="0"
          follows="left|right|bottom"
 	 font="SansSerifSmall"
          height="20"
diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml
index cff0c29dfc..0bdcbf30df 100644
--- a/indra/newview/skins/default/xui/en/floater_moveview.xml
+++ b/indra/newview/skins/default/xui/en/floater_moveview.xml
@@ -2,8 +2,8 @@
 <floater
  legacy_header_height="18"
  can_dock="true"
- can_close="true"
- can_minimize="false"
+ can_minimize="true"
+ can_close="false"
  center_horiz="true"
  follows="bottom"
  height="110"
@@ -38,12 +38,12 @@
         Fly Backwards (press Down Arrow or S)
     </string>
     <panel
-     border="false" 
+     border="false"
      height="83"
-     follows="left|top" 
+     follows="left|top"
      layout="topleft"
      left="0"
-     mouse_opaque="false" 
+     mouse_opaque="false"
      name="panel_actions"
      top="0"
      width="115">
@@ -130,7 +130,7 @@
     </panel>
 <!-- Width and height of this panel should be synchronized with panel_stand_stop_flying.xml -->
     <panel
-     border="false" 
+     border="false"
      height="27"
      layout="topleft"
      left="0"
@@ -141,7 +141,7 @@
          follows="left|bottom"
          height="23"
          image_overlay="Move_Walk_Off"
-         image_selected="PushButton_Selected_Press" 
+         image_selected="PushButton_Selected_Press"
 	 label=""
          layout="topleft"
          name="mode_walk_btn"
@@ -151,10 +151,10 @@
          top="2"
          width="31" />
         <button
-         follows="left|bottom" 
+         follows="left|bottom"
          height="23"
          image_overlay="Move_Run_Off"
-         image_selected="PushButton_Selected_Press" 
+         image_selected="PushButton_Selected_Press"
 	 label=""
          layout="topleft"
          left_pad="0"
@@ -168,7 +168,7 @@
          follows="left|bottom"
          height="23"
          image_overlay="Move_Fly_Off"
-         image_selected="PushButton_Selected_Press" 
+         image_selected="PushButton_Selected_Press"
 	 label=""
          layout="topleft"
          left_pad="0"
@@ -179,7 +179,7 @@
          top="2"
          width="31" />
         <button
-         visible="false" 
+         visible="false"
          follows="left|bottom"
          height="20"
          label="Stop Flying"
diff --git a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
index c8aab2c1e0..fb8893678d 100644
--- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
+++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml
@@ -1,18 +1,18 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater
- border_visible = "false"
- border_drop_shadow_visible = "false"
- drop_shadow_visible = "false"
- border = "false"
+ border_visible="false"
+ border_drop_shadow_visible="false"
+ drop_shadow_visible="false"
+ border="false"
  bg_opaque_image="Inspector_Background"
- bg_alpha_image="Toast_Background"	 
+ bg_alpha_image="Toast_Background"
  bg_alpha_color="0 0 0 0"
  legacy_header_height="18"
- can_minimize="false"
+ can_minimize="true"
  can_tear_off="false"
  can_resize="true"
  can_drag_on_left="false"
- can_close="true"
+ can_close="false"
  can_dock="true"
  bevel_style="in"
  height="300"
@@ -29,10 +29,10 @@
              bg_readonly_color="ChatHistoryBgColor"
              bg_writeable_color="ChatHistoryBgColor"
              follows="all"
-	         left="5"
+	     left="5"
              top="20"
              layout="topleft"
-	         height="275"
+	     height="275"
              name="chat_history"
              parse_highlights="true"
              text_color="ChatHistoryTextColor"
diff --git a/indra/newview/skins/default/xui/en/floater_voice_controls.xml b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
index c1a211967c..a193f53417 100644
--- a/indra/newview/skins/default/xui/en/floater_voice_controls.xml
+++ b/indra/newview/skins/default/xui/en/floater_voice_controls.xml
@@ -1,10 +1,12 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  can_resize="true"
+ can_minimize="true"
+ can_close="false"
  height="270"
  layout="topleft"
  min_height="146"
- min_width="190"  
+ min_width="190"
  name="floater_voice_controls"
  title="Voice Controls"
  save_visibility="true"
@@ -64,7 +66,7 @@
              name="user_text"
              text_color="white"
              top="4"
-             use_ellipses="true" 
+             use_ellipses="true"
              value="Mya Avatar:"
              width="210" />
             <output_monitor
@@ -75,7 +77,7 @@
              layout="topleft"
              name="speaking_indicator"
              right="-1"
-             top="2" 
+             top="2"
              visible="true"
              width="20" />
         </panel>
@@ -89,11 +91,11 @@
          orientation="horizontal"
          width="262">
             <layout_panel
-             auto_resize="false" 
+             auto_resize="false"
              follows="left"
              layout="topleft"
              min_width="24"
-             name="microphone_icon_panel" 
+             name="microphone_icon_panel"
              top="0"
              user_resize="false"
              width="24">
@@ -108,19 +110,19 @@
             <layout_panel
              auto_resize="false"
              layout="topleft"
-             min_width="100" 
-             name="leave_btn_panel" 
+             min_width="100"
+             name="leave_btn_panel"
              top="0"
              user_resize="false"
-             visible="false" 
+             visible="false"
              width="100">
                 <button
                  follows="left|right|top"
                  height="24"
                  label="Leave Call"
-                 left="0" 
+                 left="0"
                  name="leave_call_btn"
-                 top="0" 
+                 top="0"
                  width="100" />
             </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 3e6ea84bf2..859822dd81 100644
--- a/indra/newview/skins/default/xui/en/panel_chat_header.xml
+++ b/indra/newview/skins/default/xui/en/panel_chat_header.xml
@@ -9,7 +9,7 @@
 	 layout="topleft"
      name="im_header"
      width="310">
-		<avatar_icon
+	<avatar_icon
          follows="left"
          height="18"
          image_name="Generic_Person"
@@ -20,7 +20,7 @@
          top="3"
          width="18" />
     <text_editor
-      allow_scroll="false" 
+      allow_scroll="false"
       v_pad = "0"
       read_only = "true"
       follows="left|right"
-- 
cgit v1.2.3


From cd8241703b8aeb1ab654efd0f80867642526dd69 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Wed, 16 Dec 2009 14:28:48 -0800
Subject: minor snapshot floater tweaks to improve clarity

---
 .../skins/default/xui/en/floater_snapshot.xml      | 167 ++++++++++-----------
 1 file changed, 80 insertions(+), 87 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml
index 8860ac1e50..ec54522d3e 100644
--- a/indra/newview/skins/default/xui/en/floater_snapshot.xml
+++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml
@@ -2,8 +2,9 @@
 <floater
  legacy_header_height="18"
  can_minimize="false"
+ can_close="true"
  follows="left|top"
- height="526"
+ height="516"
  layout="topleft"
  name="Snapshot"
  help_topic="snapshot"
@@ -14,94 +15,84 @@
      name="unknown">
         unknown
     </floater.string>
-    <text
-     type="string"
-     length="1"
-     follows="top|left"
-     height="15"
-     layout="topleft"
-     left="10"
-     name="type_label"
-     top="25"
-     width="195">
-        Snapshot destination
-    </text>
     <radio_group
-     height="60"
+     height="58"
      label="Snapshot type"
      layout="topleft"
-     left_delta="0"
+     left="10"
      name="snapshot_type_radio"
-     top_pad="5"
-     width="195">
+     top="25"
+     width="205">
         <radio_item
          bottom="19"
          height="16"
-         label="Send via email"
+         label="Email"
          layout="topleft"
          name="postcard" />
         <radio_item
          bottom="38"
          height="16"
-         label="Save to your inventory (L$[AMOUNT])"
+         label="My inventory (L$[AMOUNT])"
          layout="topleft"
          name="texture" />
         <radio_item
          bottom="57"
          height="16"
-         label="Save to your hard drive"
+         label="Save to my computer"
          layout="topleft"
          name="local" />
     </radio_group>
     <text
      type="string"
+     font="SansSerifSmall"
      length="1"
      follows="left|top"
-     height="25"
+     height="14"
      layout="topleft"
+     right="-5"
      left_delta="0"
+     halign="right"
      name="file_size_label"
      top_pad="106"
      width="195">
-        File size: [SIZE] KB
+        [SIZE] KB
     </text>
     <button
      follows="left|top"
-     height="20"
-     label="Refresh Snapshot"
+     height="22"
+     image_overlay="Refresh_Off"
      layout="topleft"
-     left_delta="0"
+     left="10"
      name="new_snapshot_btn"
-     top_delta="15"
-     width="195" />
+     width="23" />
     <button
      follows="left|top"
-     height="20"
+     height="23"
      label="Send"
      layout="topleft"
-     left_delta="0"
+     left_pad="5"
+     right="-5"
      name="send_btn"
-     top_pad="2"
-     width="105" />
+     width="100" />
     <button
      follows="left|top"
-     height="20"
+     height="23"
      label="Save (L$[AMOUNT])"
      layout="topleft"
-     left_delta="0"
+     right="-5"
      name="upload_btn"
      top_delta="0"
-     width="105" />
+     width="100" />
     <flyout_button
      follows="left|top"
-     height="20"
+     height="23"
      label="Save"
      layout="topleft"
-     left_delta="0"
+     right="-5"
      name="save_btn"
      tool_tip="Save image to a file"
      top_delta="0"
-     width="105">
+     width="100">
         <flyout_button.item
          label="Save"
          value="save" />
@@ -109,52 +100,51 @@
          label="Save As..."
          value="save as" />
     </flyout_button>
-    <button
+        <button
      follows="left|top"
-     height="20"
-     label="Cancel"
-     layout="topleft"
-     left_pad="5"
-     name="discard_btn"
-     top_delta="0"
-     width="85" />
-    <button
-     follows="left|top"
-     height="20"
-     label="More &gt;&gt;"
+     height="23"
+     label="More"
      layout="topleft"
      left="10"
      name="more_btn"
      tool_tip="Advanced options"
-     top="270"
      width="80" />
     <button
      follows="left|top"
-     height="20"
-     label="&lt;&lt; Less"
+     height="23"
+     label="Less"
      layout="topleft"
      left_delta="0"
      name="less_btn"
      tool_tip="Advanced options"
      top_delta="0"
      width="80" />
+    <button
+     follows="left|top"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     right="-5"
+     left_pad="5"
+     name="discard_btn"
+     width="100" />
     <text
      type="string"
      length="1"
      follows="top|left"
-     height="15"
+     height="12"
      layout="topleft"
-     left_delta="0"
+     left="10"
      name="type_label2"
      top_pad="5"
-     width="115">
+     width="120">
         Size
     </text>
     <text
      type="string"
      length="1"
      follows="top|left"
-     height="15"
+     height="12"
      layout="topleft"
      left_pad="5"
      name="format_label"
@@ -163,13 +153,12 @@
         Format
     </text>
     <combo_box
-     height="20"
+     height="23"
      label="Resolution"
      layout="topleft"
      left="10"
      name="postcard_size_combo"
-     top="312"
-     width="115">
+     width="120">
         <combo_box.item
          label="Current Window"
          name="CurrentWindow"
@@ -192,13 +181,13 @@
          value="[i-1,i-1]" />
     </combo_box>
     <combo_box
-     height="20"
+     height="23"
      label="Resolution"
      layout="topleft"
      left_delta="0"
      name="texture_size_combo"
      top_delta="0"
-     width="115">
+     width="120">
         <combo_box.item
          label="Current Window"
          name="CurrentWindow"
@@ -221,13 +210,13 @@
          value="[i-1,i-1]" />
     </combo_box>
     <combo_box
-     height="20"
+     height="23"
      label="Resolution"
      layout="topleft"
      left_delta="0"
      name="local_size_combo"
      top_delta="0"
-     width="115">
+     width="120">
         <combo_box.item
          label="Current Window"
          name="CurrentWindow"
@@ -262,12 +251,11 @@
          value="[i-1,i-1]" />
     </combo_box>
     <combo_box
-     height="20"
+     height="23"
      label="Format"
      layout="topleft"
      left_pad="5"
      name="local_format_combo"
-     top_delta="0"
      width="70">
         <combo_box.item
          label="PNG"
@@ -286,13 +274,13 @@
      height="20"
      increment="32"
      label="Width"
-     label_width="30"
+     label_width="40"
      layout="topleft"
      left="10"
      max_val="6016"
      min_val="32"
      name="snapshot_width"
-     top="337"
+     top_pad="10"
      width="95" />
     <spinner
      allow_text_entry="false"
@@ -301,7 +289,7 @@
      height="20"
      increment="32"
      label="Height"
-     label_width="35"
+     label_width="40"
      layout="topleft"
      left_pad="5"
      max_val="6016"
@@ -311,7 +299,7 @@
      width="95" />
     <check_box
      bottom_delta="20"
-     label="Constrain Proportions"
+     label="Constrain proportions"
      layout="topleft"
      left="10"
      name="keep_aspect_check" />
@@ -321,32 +309,32 @@
      height="15"
      increment="1"
      initial_value="75"
-     label="Image Quality"
+     label="Image quality"
+     label_width="100"
      layout="topleft"
      left_delta="0"
      max_val="100"
      name="image_quality_slider"
      top_pad="5"
-     width="210" />
+     width="205" />
     <text
      type="string"
      length="1"
      follows="left|top"
-     height="20"
+     height="13"
      layout="topleft"
-     left_delta="0"
+     left="10"
      name="layer_type_label"
-     top_pad="8"
+     top_pad="5"
      width="50">
         Capture:
     </text>
     <combo_box
-     height="20"
+     height="23"
      label="Image Layers"
      layout="topleft"
-     left_delta="50"
+     left="30"
      name="layer_types"
-     top_delta="-3"
      width="145">
         <combo_box.item
          label="Colors"
@@ -362,33 +350,38 @@
          value="objects" />
     </combo_box>
     <check_box
-     bottom_delta="20"
-     label="Show interface in snapshot"
+     label="Interface"
      layout="topleft"
-     left="10"
+     left="30"
+     top_pad="10"
+     width="180"
      name="ui_check" />
     <check_box
-     bottom_delta="20"
-     label="Show HUD objects in snapshot"
+     label="HUDs"
      layout="topleft"
-     left="10"
+     left="30"
+     top_pad="10"
+     width="180"
      name="hud_check" />
     <check_box
-     bottom_delta="20"
      label="Keep open after saving"
      layout="topleft"
      left="10"
+     top_pad="8"
+     width="180"
      name="keep_open_check" />
     <check_box
-     bottom_delta="20"
-     label="Freeze frame (fullscreen preview)"
+     label="Freeze frame (fullscreen)"
      layout="topleft"
      left="10"
+     top_pad="8"
+     width="180"
      name="freeze_frame_check" />
     <check_box
-     bottom_delta="20"
      label="Auto-refresh"
      layout="topleft"
      left="10"
+     top_pad="8"
+     width="180"
      name="auto_snapshot_check" />
 </floater>
-- 
cgit v1.2.3


From 2a69fba70fd9a0ed8f2b0aae08ec61973a951ba7 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Wed, 16 Dec 2009 14:41:07 -0800
Subject: Clean up Sell Land floater XML code, make taller and resizable

---
 .../skins/default/xui/en/floater_sell_land.xml     | 71 +++-------------------
 1 file changed, 8 insertions(+), 63 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_sell_land.xml b/indra/newview/skins/default/xui/en/floater_sell_land.xml
index 409f46b960..afc44c41b8 100644
--- a/indra/newview/skins/default/xui/en/floater_sell_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml
@@ -2,7 +2,8 @@
 <floater
  legacy_header_height="18"
  can_minimize="false"
- height="450"
+ can_resize="true" 
+ height="535"
  layout="topleft"
  name="sell land"
  help_topic="sell_land"
@@ -12,7 +13,7 @@
     <scroll_container
      color="DkGray2"
      follows="left|top|right|bottom"
-     height="435"
+     height="520"
      layout="topleft"
      name="profile_scroll"
      reserve_scroll_corner="true"
@@ -31,63 +32,47 @@
      enabled="false"
      follows="top|left"
      height="135"
-     layout="topleft"
      left="60"
      name="info_image"
      top="20"
      width="180" />
     <text
-     type="string"
-     length="1"
      top="150"
      follows="top|left"
-     layout="topleft"
      left="16"
      name="info_parcel_label"
      width="48">
         Parcel:
     </text>
     <text
-     type="string"
-     length="1"
      top_delta="0"
      follows="top|left"
      height="16"
-     layout="topleft"
      left="56"
      name="info_parcel"
      right="-20">
         PARCEL NAME
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
-     layout="topleft"
      left="16"
      name="info_size_label"
      width="48">
         Size:
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      top_delta="0"
      height="32"
-     layout="topleft"
      left="56"
      name="info_size"
      right="-20">
         [AREA] m²
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      font="SansSerifBig"
      height="24"
-     layout="topleft"
      left="16"
      name="info_action"
      text_color="white"
@@ -96,42 +81,30 @@
         To sell this parcel:
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      font="SansSerif"
      height="16"
-     layout="topleft"
      left="30"
      name="price_label">
         1. Set a price:
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      height="16"
-     layout="topleft"
      left="40"
      name="price_text">
         Choose an appropriate price.
     </text>
     <text
-     type="string"
-     length="1"
      height="16"
-     layout="topleft"
      left="40"
      name="price_ld"
      width="20">
         L$
     </text>
     <line_editor
-     type="string"
-     length="1"
      follows="top|left"
      height="18"
-     layout="topleft"
      left_delta="20"
      name="price"
      top_delta="0"
@@ -139,10 +112,7 @@
         0
     </line_editor>
     <text
-     type="string"
-     length="1"
      height="16"
-     layout="topleft"
      left="40"
      name="price_per_m"
      top_delta="25"
@@ -150,22 +120,16 @@
         (L$[PER_METER] per m²)
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      font="SansSerif"
      height="16"
-     layout="topleft"
      left="30"
      name="sell_to_label">
         2. Sell the land to:
     </text>
     <text
-     type="string"
-     length="1"
      follows="top|left"
      height="25"
-     layout="topleft"
      left="40"
      word_wrap="true"
      name="sell_to_text"
@@ -173,9 +137,8 @@
         Choose whether to sell to anyone or a particular buyer.
     </text>
     <combo_box
-     follows="top|right"
+     follows="top|left"
      height="18"
-     layout="topleft"
      left_delta="0"
      name="sell_to"
      top_delta="32"
@@ -196,9 +159,8 @@
     </combo_box>
     <line_editor
      enabled="false"
-     follows="top|right"
+     follows="top|left"
      height="18"
-     layout="topleft"
      left_delta="0"
      name="sell_to_agent"
      top_pad="4"
@@ -206,29 +168,22 @@
     <button
      height="20"
      label="Select"
-     layout="topleft"
      left_pad="5"
      name="sell_to_select_agent"
      top_delta="0"
      width="60" />
     <text
-     type="string"
-     length="1"
      follows="top|left"
      font="SansSerif"
      height="16"
-     layout="topleft"
      left="30"
      name="sell_objects_label">
         3. Sell the objects with the land?
     </text>
     <text
-     type="string"
-     length="1"
      font="SansSerifSmall"
      follows="top|left"
      height="25"
-     layout="topleft"
      word_wrap="true"
      left="40"
      name="sell_objects_text">
@@ -236,16 +191,14 @@
     </text>
     <radio_group
      top_pad="5"
-     follows="top|right"
+     follows="top|left"
      height="40"
-     layout="topleft"
      left="40"
      name="sell_objects"
-     right="420">
+     right="-20">
         <radio_item
          bottom="40"
          height="0"
-         layout="topleft"
          left="10"
          name="none"
          visible="false" />
@@ -253,33 +206,27 @@
          bottom="20"
          height="16"
          label="No, keep ownership of objects"
-         layout="topleft"
          left="10"
          name="no" />
         <radio_item
          bottom="40"
          height="16"
          label="Yes, sell objects with land"
-         layout="topleft"
          left="10"
          name="yes" />
     </radio_group>
     <button
      height="20"
      label="Show Objects"
-     layout="topleft"
      name="show_objects"
      left="70"
      top_pad="10"
      width="110" />
     <text
-     type="string"
-     length="1"
      bottom_delta="30"
      follows="top|left"
      font="SansSerifBig"
      height="16"
-     layout="topleft"
      left="16"
      name="nag_message_label"
      right="-20">
@@ -289,16 +236,14 @@
      follows="bottom|left"
      height="20"
      label="Set Land For Sale"
-     layout="topleft"
      left_delta="0"
      name="sell_btn"
      top_pad="10"
      width="130" />
     <button
-     follows="bottom|right"
+     follows="bottom|left"
      height="20"
      label="Cancel"
-     layout="topleft"
      left_pad="30"
      name="cancel_btn"
      top_delta="0"
-- 
cgit v1.2.3


From 98589997240d83b43806fa0eab2f809e924ed358 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Wed, 16 Dec 2009 15:27:09 -0800
Subject: prefs general cleanup at james' request

---
 .../default/xui/en/panel_preferences_general.xml   | 157 +++++++++------------
 1 file changed, 69 insertions(+), 88 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index feed6cc10f..9721a42dcf 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -13,7 +13,7 @@
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="15"
      layout="topleft"
      left="30"
      name="language_textbox"
@@ -23,14 +23,13 @@
     </text>
     <combo_box
      control_name="Language"
-     follows="left|bottom"
+     follows="left|top"
      height="23"
      layout="topleft"
-     left_delta="50"
+     left="50"
      max_chars="135"
      name="language_combobox"
-     top_pad="10"
-     width="170">
+     width="200">
         <combo_box.item
          enabled="true"
          label="System default"
@@ -66,7 +65,6 @@
          label="Italiano (Italian) - Beta"
          name="Italian"
          value="it" />
-
         <combo_box.item
          enabled="true"
          label="Nederlands (Dutch) - Beta"
@@ -82,62 +80,54 @@
          label="Portugués (Portuguese) - Beta"
          name="Portugese"
          value="pt" />
-
-
-
-
         <combo_box.item
          enabled="true"
          label="日本語 (Japanese) - Beta"
          name="(Japanese)"
          value="ja" />
-
-
     </combo_box>
     <text
+ font="SanSerifSmall"
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="18"
      layout="topleft"
-     left_delta="175"
+     left_pad="5"
      name="language_textbox2"
-     top_delta="1"
-     width="400">
+     width="200">
         (Requires restart)
     </text>
     <text
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="15"
      layout="topleft"
      left="30"
+     top_pad="15"
      name="maturity_desired_prompt"
-     top_pad="10"
-     width="400">
+     width="200">
         I want to access content rated:
     </text>
-	<text
+    <text
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="15"
      layout="topleft"
-     left="90"
+     left_pad="5"
      name="maturity_desired_textbox"
-     top_pad="10"
-     width="400">
+     width="200">
     </text>
     <combo_box
      control_name="PreferredMaturity"
-     follows="left|bottom"
+     follows="left|top"
      height="23"
      layout="topleft"
-     left_delta="-10"
+     left="50"
      name="maturity_desired_combobox"
-     top_pad="-10"
-     width="170">
+     width="200">
         <combo_box.item
          label="General, Moderate, Adult"
          name="Desired_Adult"
@@ -155,23 +145,22 @@
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="15"
      layout="topleft"
      left="30"
      name="start_location_textbox"
-     top_delta="20"
+     top_pad="10"
      width="394">
         Start location:
     </text>
     <combo_box
      control_name="LoginLocation"
-     follows="left|bottom"
+     follows="left|top"
      height="23"
      layout="topleft"
-     left_delta="50"
      name="start_location_combo"
-     top_pad="10"
-     width="170">
+     left="50"
+     width="200">
         <combo_box.item
          label="My Last Location"
          name="MyLastLocation"
@@ -187,57 +176,48 @@
      initial_value="true"
      label="Show on login"
      layout="topleft"
-     left_delta="175"
+     left_pad="5"
      name="show_location_checkbox"
-     top_delta="1"
-     width="256" />        
-        
+     top_delta="5"
+     width="256" />
    <text
     type="string"
     length="1"
     follows="left|top"
-    height="10"
+    height="15"
     layout="topleft"
     left="30"
     name="name_tags_textbox"
-    top_pad="10"
+    top_pad="15"
     width="400">
        Name tags:
    </text>
    <radio_group
      control_name="AvatarNameTagMode"
-     height="30"
+     height="20"
      layout="topleft"
-     left_delta="50"
-     name="Name_Tag_Preference"
-     top_pad="10">
+     left="50"
+     name="Name_Tag_Preference">
         <radio_item
-         height="16"
          label="Off"
          layout="topleft"
-         left="0"
          name="radio"
          value="0"
-         top_pad="0"
-         width="98" />
+         width="100" />
         <radio_item
-         height="16"
          label="On"
          layout="topleft"
          left_pad="12"
          name="radio2"
          value="1"
-         top_delta="0"
-         width="98" />
+         width="100" />
         <radio_item
-         height="16"
          label="Show briefly"
          layout="topleft"
          left_pad="12"
          name="radio3"
-         value="2" 
-         top_delta="0"
-         width="98" />
+         value="2"
+         width="100" />
     </radio_group>
     <check_box
 	 enabled_control="AvatarNameTagMode"
@@ -245,9 +225,8 @@
      height="16"
      label="Show my name"
      layout="topleft"
-     left_delta="0"
+     left="50"
      name="show_my_name_checkbox1"
-     top_pad="-7"
      width="300" />
     <check_box
 	 enabled_control="AvatarNameTagMode"
@@ -258,7 +237,6 @@
      layout="topleft"
      left_delta="175"
      name="small_avatar_names_checkbox"
-     top_delta="0"
      width="200" />
    <check_box
 	 enabled_control="AvatarNameTagMode"
@@ -274,45 +252,41 @@
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="15"
      layout="topleft"
      left="30"
      name="effects_color_textbox"
-     top_pad="5"
-     width="400">
+     top_pad="15"
+     width="200">
         My effects:
     </text>
-    <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
-     control_name="EffectColor"
-     follows="left|top"
-     height="48"
-     layout="topleft"
-     left_delta="50"
-     name="effect_color_swatch"
-     tool_tip="Click to open Color Picker"
-     top_pad="5"
-     width="32" />
-  <text
+      <text
       type="string"
       length="1"
       follows="left|top"
-      height="15"
+      height="13"
       layout="topleft"
-      left="30"
+      left_pad="5"
       name="title_afk_text"
-      text_color="white"
-      top_pad="-5"
       width="190">
     Away timeout:
   </text>
+    <color_swatch
+     control_name="EffectColor"
+     follows="left|top"
+     height="50"
+     layout="topleft"
+     left="50"
+     name="effect_color_swatch"
+     tool_tip="Click to open Color Picker"
+     width="38" />
   <combo_box
-            top_pad="-20" 
-            height="20"
+            height="23"
             layout="topleft"
             control_name="AFKTimeout"
-            left="140"
-            label="Away Timeout:" 
+            left_pad="160"
+            label="Away timeout:"
+            top_delta="0"
             name="afk"
             width="130">
     <combo_box.item
@@ -340,28 +314,35 @@
      type="string"
      length="1"
      follows="left|top"
-     height="10"
+     height="13"
      layout="topleft"
      text_color="white"
      left="30"
      mouse_opaque="false"
      name="text_box3"
-     top_pad="10"
+     top_pad="15"
      width="240">
        Busy mode response:
     </text>
     <text_editor
      control_name="BusyModeResponse2"
+      text_readonly_color="LabelDisabledColor"
+      bg_writeable_color="LtGray"
+      border_color="DefaultHighlightLight"
+      use_ellipses="false"
+      bg_visible="false"
+      border_visible="false"
+      hover="false"
+      text_color="LabelTextColor"
      commit_on_focus_lost = "true"
      follows="left|top"
-     height="56"
+     height="50"
      layout="topleft"
-     left_delta="50"
+     left="50"
      name="busy_response"
      width="400"
-     word_wrap="true"
-     top_pad="5">
+     word_wrap="true">
        log_in_to_change
     </text_editor>
-    
+
 </panel>
-- 
cgit v1.2.3


From 7b582549bea65159ee4c85bbf360f0b983fde4ed Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Wed, 16 Dec 2009 17:32:48 -0800
Subject: EXT-3492 Top menu Home option - moving and sorting menu

---
 indra/newview/skins/default/xui/en/menu_viewer.xml | 153 ++++++++++-----------
 1 file changed, 76 insertions(+), 77 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a8e74c5fa9..b4ce32ea1d 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -238,30 +238,55 @@
      layout="topleft"
      name="World"
      tear_off="true">
-         <menu_item_check
-         label="Move"
+            <menu_item_check
+         label="Mini-Map"
          layout="topleft"
-         name="Movement Controls">
+         name="Mini-Map"
+         shortcut="control|shift|M">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="moveview" />
+             parameter="mini_map" />
             <menu_item_check.on_click
              function="Floater.Toggle"
-             parameter="moveview" />
+             parameter="mini_map" />
         </menu_item_check>
-        <menu_item_check
-         label="View"
+         <menu_item_check
+         label="World Map"
          layout="topleft"
-         name="Camera Controls">
+         name="World Map"
+         shortcut="control|M"
+         use_mac_ctrl="true">
             <menu_item_check.on_check
              function="Floater.Visible"
-             parameter="camera" />
+             parameter="world_map" />
             <menu_item_check.on_click
              function="Floater.Toggle"
-             parameter="camera" />
+             parameter="world_map" />
         </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
+        <menu_item_call
+         label="Snapshot"
+         layout="topleft"
+         name="Take Snapshot"
+         shortcut="control|shift|S">
+            <menu_item_call.on_click
+             function="Floater.Show"
+             parameter="snapshot" />
+        </menu_item_call>
+      <menu_item_call
+             label="Landmark This Place"
+             layout="topleft"
+             name="Create Landmark Here">
+                <menu_item_call.on_click
+                 function="World.CreateLandmark" />
+                <menu_item_call.on_enable
+                 function="World.EnableCreateLandmark" />
+            </menu_item_call>
+      <menu
+           create_jump_keys="true"
+           label="About This Place"
+           layout="topleft"
+           name="Land"
+           tear_off="true">
         <menu_item_call
          label="About Land"
          layout="topleft"
@@ -278,6 +303,9 @@
              function="Floater.Show"
              parameter="region_info" />
         </menu_item_call>
+        </menu>
+        <menu_item_separator
+         layout="topleft" />
         <menu_item_call
              label="Buy Land"
              layout="topleft"
@@ -301,6 +329,28 @@
            layout="topleft"
            name="Land"
            tear_off="true">
+         <menu_item_check
+         label="Move Controls"
+         layout="topleft"
+         name="Movement Controls">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="moveview" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="moveview" />
+        </menu_item_check>
+        <menu_item_check
+         label="View Controls"
+         layout="topleft"
+         name="Camera Controls">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="camera" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="camera" />
+        </menu_item_check>
           <menu_item_check
              label="Ban Lines"
              layout="topleft"
@@ -347,32 +397,8 @@
         </menu>
         <menu_item_separator
          layout="topleft" />
-        <menu
-         label="Landmarks"
-         layout="topleft"
-         name="Landmarks"
-         tear_off="true">
-            <menu_item_call
-             label="Create Landmark Here"
-             layout="topleft"
-             name="Create Landmark Here">
-                <menu_item_call.on_click
-                 function="World.CreateLandmark" />
-                <menu_item_call.on_enable
-                 function="World.EnableCreateLandmark" />
-            </menu_item_call>
-            <menu_item_call
-             label="Set Home to Here"
-             layout="topleft"
-             name="Set Home to Here">
-                <menu_item_call.on_click
-                 function="World.SetHomeLocation" />
-                <menu_item_call.on_enable
-                 function="World.EnableSetHomeLocation" />
-            </menu_item_call>
-        </menu>
 	    <menu_item_call
-	     label="Home"
+	     label="Teleport Home"
 	     layout="topleft"
 	     name="Teleport Home"
 	     shortcut="control|shift|H">
@@ -381,31 +407,15 @@
 		<menu_item_call.on_enable
 		 function="World.EnableTeleportHome" />
 	    </menu_item_call>
-      <menu_item_check
-         label="Mini-Map"
-         layout="topleft"
-         name="Mini-Map"
-         shortcut="control|shift|M">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="mini_map" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="mini_map" />
-        </menu_item_check>
-         <menu_item_check
-         label="World Map"
-         layout="topleft"
-         name="World Map"
-         shortcut="control|M"
-         use_mac_ctrl="true">
-            <menu_item_check.on_check
-             function="Floater.Visible"
-             parameter="world_map" />
-            <menu_item_check.on_click
-             function="Floater.Toggle"
-             parameter="world_map" />
-        </menu_item_check>
+            <menu_item_call
+             label="Set Home to Here"
+             layout="topleft"
+             name="Set Home to Here">
+                <menu_item_call.on_click
+                 function="World.SetHomeLocation" />
+                <menu_item_call.on_enable
+                 function="World.EnableSetHomeLocation" />
+            </menu_item_call>
     <!--    <menu_item_check
          label="Show Navigation Bar"
          layout="topleft"
@@ -432,17 +442,6 @@
          layout="topleft" />-->
         <menu_item_separator
          layout="topleft" />
-        <menu_item_call
-         label="Snapshot"
-         layout="topleft"
-         name="Take Snapshot"
-         shortcut="control|shift|S">
-            <menu_item_call.on_click
-             function="Floater.Show"
-             parameter="snapshot" />
-        </menu_item_call>
-        <menu_item_separator
-         layout="topleft" />
     <menu
          create_jump_keys="true"
          label="Sun"
@@ -484,7 +483,7 @@
                  parameter="midnight" />
             </menu_item_call>
             <menu_item_call
-             label="Use the Estate Time"
+             label="Estate Time"
              layout="topleft"
              name="Revert to Region Default">
                 <menu_item_call.on_click
@@ -1056,14 +1055,14 @@
              function="ShowHelp"
              parameter="f1_help" />
         </menu_item_call>
-        <menu_item_call
+  <!--      <menu_item_call
          label="Tutorial"
          layout="topleft"
          name="Tutorial">
             <menu_item_call.on_click
              function="Floater.Show"
              parameter="hud" />
-        </menu_item_call>
+        </menu_item_call>-->
         <menu_item_separator
              layout="topleft" />
         <menu_item_call
@@ -2514,7 +2513,7 @@
                  function="CheckControl"
                  parameter="TextureDisable" />
                 <menu_item_check.on_click
-                 function="ToggleControl" 
+                 function="ToggleControl"
                  parameter="TextureDisable" />
             </menu_item_check>
             <menu_item_check
-- 
cgit v1.2.3


From c7098186151b4f7481fdb2ce33e5c326e899a086 Mon Sep 17 00:00:00 2001
From: skolb <none@none>
Date: Thu, 17 Dec 2009 11:54:35 -0800
Subject: Fixed carriage return text to use word wrap instead

---
 indra/newview/skins/default/xui/en/floater_about_land.xml            | 4 +---
 indra/newview/skins/default/xui/en/panel_media_settings_security.xml | 5 ++---
 2 files changed, 3 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 1239152c32..a64716cb35 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1672,9 +1672,7 @@ Only large parcels can be listed in search.
              name="replace_texture_help"
              width="300"
              word_wrap="true">
-             Objects using this texture will show the movie or web page after you click the play arrow.
-
-Select the thumbnail to choose a different texture.
+             Objects using this texture will show the movie or web page after you click the play arrow.  Select the thumbnail to choose a different texture.
             </text>
             <check_box
              height="16"
diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
index 1f41a0d284..a018e04bd1 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
@@ -81,10 +81,9 @@
    height="40"
    left="30"
    text_color="0.6 0.0 0.0 1.0"
+   word_wrap="true" 
    name="home_url_fails_whitelist">
-Warning: the home page specified in the General tab 
-fails to pass this whitelist. It has been disabled 
-until a valid entry has been added.
+Warning: the home page specified in the General tab fails to pass this whitelist. It has been disabled until a valid entry has been added.
   </text>
 
 </panel>
-- 
cgit v1.2.3


From 1f377c6b53346b419df8874cfdf8bb4c33f7b6d5 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 17 Dec 2009 11:10:03 -0800
Subject: Made LLPanelLogin tell the browser plugin to clear its cache before
 opening the login screen.

Added clearCache() functions to LLViewerMediaImpl and LLMediaCtrl to facilitate this.
---
 indra/newview/llmediactrl.cpp   | 25 +++++++++++++++++++++++--
 indra/newview/llmediactrl.h     |  4 ++++
 indra/newview/llpanellogin.cpp  |  3 +++
 indra/newview/llviewermedia.cpp | 20 ++++++++++++++++++++
 indra/newview/llviewermedia.h   |  2 ++
 5 files changed, 52 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llmediactrl.cpp b/indra/newview/llmediactrl.cpp
index f32866b1fe..199bd966ef 100644
--- a/indra/newview/llmediactrl.cpp
+++ b/indra/newview/llmediactrl.cpp
@@ -95,7 +95,8 @@ LLMediaCtrl::LLMediaCtrl( const Params& p) :
 	mHidingInitialLoad (false),
 	mDecoupleTextureSize ( false ),
 	mTextureWidth ( 1024 ),
-	mTextureHeight ( 1024 )
+	mTextureHeight ( 1024 ),
+	mClearCache(false)
 {
 	{
 		LLColor4 color = p.caret_color().get();
@@ -489,6 +490,21 @@ void LLMediaCtrl::clr404RedirectUrl()
 		mMediaSource->getMediaPlugin()->set_status_redirect(404, "");
 }
 
+////////////////////////////////////////////////////////////////////////////////
+//
+void LLMediaCtrl::clearCache()
+{
+	if(mMediaSource)
+	{
+		mMediaSource->clearCache();
+	}
+	else
+	{
+		mClearCache = true;
+	}
+
+}
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 void LLMediaCtrl::navigateTo( std::string url_in, std::string mime_type)
@@ -617,7 +633,12 @@ bool LLMediaCtrl::ensureMediaSourceExists()
 			mMediaSource->setHomeURL(mHomePageUrl);
 			mMediaSource->setVisible( getVisible() );
 			mMediaSource->addObserver( this );
-
+			if(mClearCache)
+			{
+				mMediaSource->clearCache();
+				mClearCache = false;
+			}
+			
 			if(mHideLoading)
 			{
 				mHidingInitialLoad = true;
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index f07513a3fd..8f9e6e7179 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -117,6 +117,9 @@ public:
 		// set/clear URL to visit when a 404 page is reached
 		void set404RedirectUrl( std::string redirect_url );
 		void clr404RedirectUrl();
+		
+		// Clear the browser cache when the instance gets loaded
+		void clearCache();
 
 		// accessor/mutator for flag that indicates if frequent updates to texture happen
 		bool getFrequentUpdates() { return mFrequentUpdates; };
@@ -192,6 +195,7 @@ public:
 		bool mDecoupleTextureSize;
 		S32 mTextureWidth;
 		S32 mTextureHeight;
+		bool mClearCache;
 };
 
 #endif // LL_LLMediaCtrl_H
diff --git a/indra/newview/llpanellogin.cpp b/indra/newview/llpanellogin.cpp
index a9c604b72a..dbe962ed59 100644
--- a/indra/newview/llpanellogin.cpp
+++ b/indra/newview/llpanellogin.cpp
@@ -272,6 +272,9 @@ LLPanelLogin::LLPanelLogin(const LLRect &rect,
 	// get the web browser control
 	LLMediaCtrl* web_browser = getChild<LLMediaCtrl>("login_html");
 	web_browser->addObserver(this);
+	
+	// Clear the browser's cache to avoid any potential for the cache messing up the login screen.
+	web_browser->clearCache();
 
 	// Need to handle login secondlife:///app/ URLs
 	web_browser->setTrusted( true );
diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 103a70e032..7bcc601705 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -929,6 +929,7 @@ LLViewerMediaImpl::LLViewerMediaImpl(	  const LLUUID& texture_id,
 	mMimeTypeProbe(NULL),
 	mMediaAutoPlay(false),
 	mInNearbyMediaList(false),
+	mClearCache(false),
 	mIsUpdated(false)
 { 
 
@@ -1139,6 +1140,12 @@ bool LLViewerMediaImpl::initializePlugin(const std::string& media_type)
 		media_source->setBrowserUserAgent(LLViewerMedia::getCurrentUserAgent());
 		media_source->focus(mHasFocus);
 		
+		if(mClearCache)
+		{
+			mClearCache = false;
+			media_source->clear_cache();
+		}
+		
 		mMediaSource = media_source;
 
 		updateVolume();
@@ -1351,6 +1358,19 @@ std::string LLViewerMediaImpl::getCurrentMediaURL()
 	return mMediaURL;
 }
 
+//////////////////////////////////////////////////////////////////////////////////////////
+void LLViewerMediaImpl::clearCache()
+{
+	if(mMediaSource)
+	{
+		mMediaSource->clear_cache();
+	}
+	else
+	{
+		mClearCache = true;
+	}
+}
+
 //////////////////////////////////////////////////////////////////////////////////////////
 void LLViewerMediaImpl::mouseDown(S32 x, S32 y, MASK mask, S32 button)
 {
diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h
index 7151186089..28fb379960 100644
--- a/indra/newview/llviewermedia.h
+++ b/indra/newview/llviewermedia.h
@@ -188,6 +188,7 @@ public:
 	std::string getCurrentMediaURL();
 	std::string getHomeURL() { return mHomeURL; }
     void setHomeURL(const std::string& home_url) { mHomeURL = home_url; };
+	void clearCache();
 	std::string getMimeType() { return mMimeType; }
 	void scaleMouse(S32 *mouse_x, S32 *mouse_y);
 	void scaleTextureCoords(const LLVector2& texture_coords, S32 *x, S32 *y);
@@ -355,6 +356,7 @@ public:
 	bool mMediaAutoPlay;
 	std::string mMediaEntryURL;
 	bool mInNearbyMediaList;	// used by LLFloaterNearbyMedia::refreshList() for performance reasons
+	bool mClearCache;
 	
 private:
 	BOOL mIsUpdated ;
-- 
cgit v1.2.3


From 0f7e49dea1dceacbf5c1e1fe2e047c2e18a59cf7 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 17 Dec 2009 11:11:45 -0800
Subject: Set an explicit "Accept" header when doing the MIME type probe.  This
 prevents LLHTTPClient from adding an "Accept: application/llsd+xml", which is
 just wrong.

---
 indra/newview/llviewermedia.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 7bcc601705..1258bce151 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -1653,7 +1653,12 @@ void LLViewerMediaImpl::navigateInternal()
 
 		if(scheme.empty() || "http" == scheme || "https" == scheme)
 		{
-			LLHTTPClient::getHeaderOnly( mMediaURL, new LLMimeDiscoveryResponder(this), 10.0f);
+			// If we don't set an Accept header, LLHTTPClient will add one like this:
+			//    Accept: application/llsd+xml
+			// which is really not what we want.
+			LLSD headers = LLSD::emptyMap();
+			headers["Accept"] = "*/*";
+			LLHTTPClient::getHeaderOnly( mMediaURL, new LLMimeDiscoveryResponder(this), headers, 10.0f);
 		}
 		else if("data" == scheme || "file" == scheme || "about" == scheme)
 		{
-- 
cgit v1.2.3


From 298b1ad6d975c6010ed0b57cca627b18785182bb Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:47:13 -0800
Subject: made color_swatch border color consistent

---
 indra/newview/skins/default/colors.xml                           | 4 +++-
 indra/newview/skins/default/xui/en/floater_customize.xml         | 9 ---------
 indra/newview/skins/default/xui/en/floater_env_settings.xml      | 1 -
 indra/newview/skins/default/xui/en/floater_test_widgets.xml      | 2 --
 indra/newview/skins/default/xui/en/floater_tools.xml             | 1 -
 indra/newview/skins/default/xui/en/floater_water.xml             | 1 -
 indra/newview/skins/default/xui/en/panel_edit_gloves.xml         | 1 -
 indra/newview/skins/default/xui/en/panel_edit_jacket.xml         | 1 -
 indra/newview/skins/default/xui/en/panel_edit_pants.xml          | 1 -
 indra/newview/skins/default/xui/en/panel_edit_shirt.xml          | 1 -
 indra/newview/skins/default/xui/en/panel_edit_shoes.xml          | 1 -
 indra/newview/skins/default/xui/en/panel_edit_skirt.xml          | 1 -
 indra/newview/skins/default/xui/en/panel_edit_socks.xml          | 1 -
 indra/newview/skins/default/xui/en/panel_edit_underpants.xml     | 1 -
 indra/newview/skins/default/xui/en/panel_edit_undershirt.xml     | 1 -
 .../newview/skins/default/xui/en/panel_preferences_advanced.xml  | 1 -
 indra/newview/skins/default/xui/en/panel_preferences_chat.xml    | 8 --------
 indra/newview/skins/default/xui/en/widgets/color_swatch.xml      | 2 +-
 indra/newview/skins/default/xui/en/widgets/text.xml              | 1 -
 19 files changed, 4 insertions(+), 35 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index b6995d2122..9c9e86092c 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -687,5 +687,7 @@
 	<color
      name="ChatToastAgentNameColor"
      reference="EmphasisColor" />
-
+  <color
+    name="ColorSwatchBorderColor"
+    value="0.45098 0.517647 0.607843 1"/>
 </colors>
diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index 9d3694873e..fba1ec4440 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -1018,7 +1018,6 @@ scratch and wear it.
              top_pad="41"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -1224,7 +1223,6 @@ scratch and wear it.
              top_pad="41"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -1534,7 +1532,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -1740,7 +1737,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -1958,7 +1954,6 @@ scratch and wear it.
              top_delta="80"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -2164,7 +2159,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -2370,7 +2364,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -2576,7 +2569,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
@@ -2782,7 +2774,6 @@ scratch and wear it.
              top="65"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
diff --git a/indra/newview/skins/default/xui/en/floater_env_settings.xml b/indra/newview/skins/default/xui/en/floater_env_settings.xml
index 5e78037ee1..8c87bd42dd 100644
--- a/indra/newview/skins/default/xui/en/floater_env_settings.xml
+++ b/indra/newview/skins/default/xui/en/floater_env_settings.xml
@@ -98,7 +98,6 @@
         Water Color
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.5 0.5 0.5 1"
      follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_test_widgets.xml b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
index a2055d8c52..84adabe4fa 100644
--- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml
+++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml
@@ -355,7 +355,6 @@ line to actually fit
       <!-- "color_swatch" displays a color and spawns a color picker when
            clicked. -->
       <color_swatch
-       border_color="1 0 0 1"
        can_apply_immediately="true"
        color="0.3 0.6 0.9 1"
        follows="left|top"
@@ -368,7 +367,6 @@ line to actually fit
        top="10"
        width="80" />
       <color_swatch
-       border_color="0.45098 0.517647 0.607843 1"
        can_apply_immediately="true"
        color="1 0 1 1"
        follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 5e68850e30..1903434d33 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -2264,7 +2264,6 @@ even though the user gets a free copy.
              top="8"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml
index 439d68282f..7f31692ad9 100644
--- a/indra/newview/skins/default/xui/en/floater_water.xml
+++ b/indra/newview/skins/default/xui/en/floater_water.xml
@@ -71,7 +71,6 @@
      width="700">
         <panel
          border="true"
-         border_color="EmphasisColor"
          follows="all"
          height="180"
          label="Settings"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
index f9ef038314..7aca40e8d9 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_gloves.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
index f4c03399fe..ed92b1e0f8 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_jacket.xml
@@ -41,7 +41,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pants.xml b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
index ab105afd88..b764188e04 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pants.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
index 9a13dfa3c4..4b7235545f 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shirt.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
index 154b9d959c..e886afa010 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_shoes.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
index d0f4d75444..6cccab1843 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_skirt.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_socks.xml b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
index acc6d482a7..fc7de00714 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_socks.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_socks.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
index 4f5c1c08b7..03e0bb70ef 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_underpants.xml
@@ -29,7 +29,6 @@
              top="10"
              width="64" />
             <color_swatch
-             border_color="0.45098 0.517647 0.607843 1"
              can_apply_immediately="true"
              follows="left|top"
              height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
index 715674e88b..20c56142fb 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_undershirt.xml
@@ -29,7 +29,6 @@
         top="10"
         width="64" />
        <color_swatch
-        border_color="0.45098 0.517647 0.607843 1"
         can_apply_immediately="true"
         follows="left|top"
         height="80"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
index 405ff02836..426a2b1f9e 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_advanced.xml
@@ -29,7 +29,6 @@
      name="bubble_text_chat"
      width="150" />
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0 0 0 1"
      control_name="BackgroundChatColor"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
index d0e325b04e..017c321767 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_chat.xml
@@ -46,7 +46,6 @@
          width="125" />
     </radio_group>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      follows="left|top"
      height="47"
@@ -76,7 +75,6 @@
         Me
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      follows="left|top"
      height="47"
@@ -106,7 +104,6 @@
         Others
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.6 0.6 1 1"
      follows="left|top"
@@ -138,7 +135,6 @@
         IM
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.8 1 1 1"
      follows="left|top"
@@ -170,7 +166,6 @@
         System
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.82 0.82 0.99 1"
      follows="left|top"
@@ -201,7 +196,6 @@
         Errors
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.7 0.9 0.7 1"
      follows="left|top"
@@ -232,7 +226,6 @@
         Objects
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.7 0.9 0.7 1"
      follows="left|top"
@@ -263,7 +256,6 @@
         Owner
     </text>
     <color_swatch
-     border_color="0.45098 0.517647 0.607843 1"
      can_apply_immediately="true"
      color="0.6 0.6 1 1"
      follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
index 178c890c61..bda88857ae 100644
--- a/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
+++ b/indra/newview/skins/default/xui/en/widgets/color_swatch.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <color_swatch alpha_background_image="color_swatch_alpha.tga"
-              border_color="DefaultHighlightLight"
+              border_color="ColorSwatchBorderColor"
               name="color_swatch">
   <color_swatch.caption_text name="caption"
                              font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/widgets/text.xml b/indra/newview/skins/default/xui/en/widgets/text.xml
index 5dd09e663b..855584a0db 100644
--- a/indra/newview/skins/default/xui/en/widgets/text.xml
+++ b/indra/newview/skins/default/xui/en/widgets/text.xml
@@ -11,7 +11,6 @@
       allow_scroll="false"
       text_readonly_color="LabelDisabledColor"
       bg_writeable_color="FloaterDefaultBackgroundColor" 
-      border_color="DefaultHighlightLight"
       use_ellipses="false"
       bg_visible="false" 
       border_visible="false" 
-- 
cgit v1.2.3


From 4ec3186842a5d23e4680a3395b8f5aafe017e839 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:47:51 -0800
Subject: fixed some bad xui params

---
 indra/newview/skins/default/xui/en/panel_preferences_general.xml | 3 +--
 indra/newview/skins/default/xui/en/widgets/tab_container.xml     | 2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_preferences_general.xml b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
index 7c9256e69d..41bd7f3dcc 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_general.xml
@@ -87,7 +87,7 @@
          value="ja" />
     </combo_box>
     <text
- font="SanSerifSmall"
+ font="SansSerifSmall"
      type="string"
      length="1"
      follows="left|top"
@@ -328,7 +328,6 @@
      control_name="BusyModeResponse2"
       text_readonly_color="LabelDisabledColor"
       bg_writeable_color="LtGray"
-      border_color="DefaultHighlightLight"
       use_ellipses="false"
       bg_visible="false"
       border_visible="false"
diff --git a/indra/newview/skins/default/xui/en/widgets/tab_container.xml b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
index 0174782c5b..3368fa88ef 100644
--- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml
+++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml
@@ -5,7 +5,7 @@ label_pad_left - padding to the left of tab button labels
 -->
 <tab_container tab_min_width="60"
                tab_max_width="150"
-               font_halign="center"
+               halign="center"
                font="SansSerifSmall" 
                tab_height="21"
                label_pad_bottom="2"
-- 
cgit v1.2.3


From 20e51aa3aabf5a83f8538cb457b279d12569c267 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 17 Dec 2009 11:52:15 -0800
Subject: Quiet some logging, make sure if 1024 is lowest we still load it

---
 indra/newview/llviewermedia.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 103a70e032..f5b6ae038e 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -582,8 +582,8 @@ bool LLViewerMedia::isInterestingEnough(const LLVOVolume *object, const F64 &obj
 	}
 	else 
 	{
-		llinfos << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << llendl;
-		if(object_interest > sLowestLoadableImplInterest)
+		lldebugs << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << llendl;
+		if(object_interest >= sLowestLoadableImplInterest)
 			result = true;
 	}
 	
-- 
cgit v1.2.3


From 7755f70836be0a0cc6ecb0763a6a42d3164eb19b Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Thu, 17 Dec 2009 12:06:29 -0800
Subject: EXT-3535 Don't show the tutorial on first log-in Discussed with Esbee
 and Howard - we're not doing a web-based tutorial.  If we want it back, we'll
 have to do another viewer release.

---
 indra/newview/llstartup.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 539673ab9e..73e7d99815 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -1634,11 +1634,15 @@ bool idle_startup()
 					gSavedSettings.setString("TutorialURL", tutorial_url.asString());
 				}
 				
-				LLSD use_tutorial = (*it)["use_tutorial"];
-				if(use_tutorial.asString() == "true")
-				{
-					show_hud = true;
-				}
+				// For Viewer 2.0 we are not using the web-based tutorial
+				// If we reverse that decision, put this code back and use
+				// login.cgi to send a different URL with content that matches
+				// the Viewer 2.0 UI.
+				//LLSD use_tutorial = (*it)["use_tutorial"];
+				//if(use_tutorial.asString() == "true")
+				//{
+				//	show_hud = true;
+				//}
 			}
 		}
 		// Either we want to show tutorial because this is the first login
-- 
cgit v1.2.3


From 2475335994649dbd8bc20a75d9ca2a78630464c9 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 17 Dec 2009 12:08:44 -0800
Subject: Rearranged the handling of error status codes in
 LLMimeDiscoveryResponder.  We should now deal with many more classes of
 subtly misbehaving web servers, and will use the returned MIME type for 4xx
 errors instead of guessing text/html.

---
 indra/newview/llviewermedia.cpp | 46 ++++++++++++++++-------------------------
 1 file changed, 18 insertions(+), 28 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 1258bce151..5aebbc1bdd 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -160,36 +160,25 @@ public:
 		std::string media_type = content["content-type"].asString();
 		std::string::size_type idx1 = media_type.find_first_of(";");
 		std::string mime_type = media_type.substr(0, idx1);
-		completeAny(status, mime_type);
-	}
 
-	virtual void error( U32 status, const std::string& reason )
-	{
-		if(status == 401)
-		{
-			// This is the "you need to authenticate" status.  
-			// Treat this like an html page.
-			completeAny(status, "text/html");
-		}
-		else
-		if(status == 403)
-		{
-			completeAny(status, "text/html");
-		}
-		else
-		if(status == 404)
-		{
-			// 404 is content not found - sites often have bespoke 404 pages so
-			// treat them like an html page.
-			completeAny(status, "text/html");
-		}
-		else
-		if(status == 406)
+		lldebugs << "status is " << status << ", media type \"" << media_type << "\"" << llendl;
+		
+		// 2xx status codes indicate success.
+		// Most 4xx status codes are successful enough for our purposes.
+		// 499 is the error code for host not found, timeout, etc.
+		if(	((status >= 200) && (status < 300))	||
+			((status >= 400) && (status < 499))	)
 		{
-			// 406 means the server sent something that we didn't indicate was acceptable
-			// Eventually we should send what we accept in the headers but for now,
-			// treat 406s like an html page.
-			completeAny(status, "text/html");
+			// The probe was successful.
+			
+			if(mime_type.empty())
+			{
+				// Some sites don't return any content-type header at all.
+				// Treat an empty mime type as text/html.
+				mime_type = "text/html";
+			}
+			
+			completeAny(status, mime_type);
 		}
 		else
 		{
@@ -200,6 +189,7 @@ public:
 				mMediaImpl->mMediaSourceFailed = true;
 			}
 		}
+
 	}
 
 	void completeAny(U32 status, const std::string& mime_type)
-- 
cgit v1.2.3


From 3f165e17663a89f789a0f8b704e15d8b2dacf662 Mon Sep 17 00:00:00 2001
From: Monroe Linden <monroe@lindenlab.com>
Date: Thu, 17 Dec 2009 12:11:23 -0800
Subject: Turned debug spam in LLViewerMedia::isInterestingEnough() down to
 lldebugs.

---
 indra/newview/llviewermedia.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp
index 5aebbc1bdd..cd16b29f99 100644
--- a/indra/newview/llviewermedia.cpp
+++ b/indra/newview/llviewermedia.cpp
@@ -572,7 +572,7 @@ bool LLViewerMedia::isInterestingEnough(const LLVOVolume *object, const F64 &obj
 	}
 	else 
 	{
-		llinfos << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << llendl;
+		lldebugs << "object interest = " << object_interest << ", lowest loadable = " << sLowestLoadableImplInterest << llendl;
 		if(object_interest > sLowestLoadableImplInterest)
 			result = true;
 	}
-- 
cgit v1.2.3


From cf4c5117336349ff25f2c49131e9e26dc7b50e38 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Thu, 17 Dec 2009 13:50:48 -0800
Subject: Change "url prefix" to "url pattern"

---
 indra/newview/skins/default/xui/en/panel_media_settings_security.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
index 1f41a0d284..e393df79e9 100644
--- a/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
+++ b/indra/newview/skins/default/xui/en/panel_media_settings_security.xml
@@ -17,7 +17,7 @@
    font="SansSerifSmall"
    height="16" 
    initial_value="false"
-   label="Only Allow Access to Specified URLs (by prefix)" 
+   label="Only Allow Access to Specified URL patterns" 
    left="10" 
    mouse_opaque="true"
    name="whitelist_enable" 
-- 
cgit v1.2.3


From 907741ad1bb7322a2530f26c1b8f1fdfbe6554fe Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Thu, 17 Dec 2009 14:27:31 -0800
Subject: EXT-3508 Animation : preview play / stop button does not refresh
 preview Moved all play/pause button visibility code into the refresh()
 method. Reviewed with Leyla.

---
 indra/newview/llfloateranimpreview.cpp | 47 +++++++++-------------------------
 1 file changed, 12 insertions(+), 35 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloateranimpreview.cpp b/indra/newview/llfloateranimpreview.cpp
index 9e6ef2fc4d..60f150bd96 100644
--- a/indra/newview/llfloateranimpreview.cpp
+++ b/indra/newview/llfloateranimpreview.cpp
@@ -570,25 +570,12 @@ void LLFloaterAnimPreview::onBtnPlay(void* user_data)
 		{
 			previewp->resetMotion();
 			previewp->mPauseRequest = NULL;
-			previewp->mPauseButton->setVisible(TRUE);
-			previewp->mPauseButton->setEnabled(TRUE);
-			previewp->mPlayButton->setVisible(FALSE);
-			previewp->mPlayButton->setEnabled(FALSE);
 		}
 		else if (avatarp->areAnimationsPaused())
-		{
-			
+		{			
 			previewp->mPauseRequest = NULL;
-			previewp->mPauseButton->setVisible(TRUE);
-			previewp->mPauseButton->setEnabled(TRUE);
-			previewp->mPlayButton->setVisible(FALSE);
-			previewp->mPlayButton->setEnabled(FALSE);
 		}
-
 	}
-
-	
-
 }
 
 //-----------------------------------------------------------------------------
@@ -609,16 +596,9 @@ void LLFloaterAnimPreview::onBtnPause(void* user_data)
 			if (!avatarp->areAnimationsPaused())
 			{
 				previewp->mPauseRequest = avatarp->requestPause();
-				
-				previewp->mPlayButton->setVisible(TRUE);
-				previewp->mPlayButton->setEnabled(TRUE);
-				previewp->mPauseButton->setVisible(FALSE);
-				previewp->mPauseButton->setEnabled(FALSE);
 			}
 		}
 	}
-
-
 }
 
 //-----------------------------------------------------------------------------
@@ -636,10 +616,6 @@ void LLFloaterAnimPreview::onBtnStop(void* user_data)
 		previewp->resetMotion();
 		previewp->mPauseRequest = avatarp->requestPause();
 	}
-	previewp->mPlayButton->setVisible(TRUE);
-	previewp->mPlayButton->setEnabled(TRUE);
-	previewp->mPauseButton->setVisible(FALSE);
-	previewp->mPauseButton->setEnabled(FALSE);
 }
 
 //-----------------------------------------------------------------------------
@@ -953,18 +929,22 @@ bool LLFloaterAnimPreview::validateLoopOut(const LLSD& data)
 //-----------------------------------------------------------------------------
 void LLFloaterAnimPreview::refresh()
 {
+	// Are we showing the play button (default) or the pause button?
+	bool show_play = true;
 	if (!mAnimPreview)
 	{
 		childShow("bad_animation_text");
+		// play button visible but disabled
 		mPlayButton->setEnabled(FALSE);
-		mPlayButton->setVisible(TRUE);
-		mPauseButton->setVisible(FALSE);
 		mStopButton->setEnabled(FALSE);
 		childDisable("ok_btn");
 	}
 	else
 	{
 		childHide("bad_animation_text");
+		// re-enabled in case previous animation was bad
+		mPlayButton->setEnabled(TRUE);
+		mStopButton->setEnabled(TRUE);
 		LLVOAvatar* avatarp = mAnimPreview->getDummyAvatar();
 		if (avatarp->isMotionActive(mMotionID))
 		{
@@ -972,28 +952,25 @@ void LLFloaterAnimPreview::refresh()
 			LLKeyframeMotion* motionp = (LLKeyframeMotion*)avatarp->findMotion(mMotionID);
 			if (!avatarp->areAnimationsPaused())
 			{
+				// animation is playing
 				if (motionp)
 				{
 					F32 fraction_complete = motionp->getLastUpdateTime() / motionp->getDuration();
 					childSetValue("playback_slider", fraction_complete);
 				}
-			
-				mPlayButton->setVisible(FALSE);
-				mPauseButton->setVisible(TRUE);
-				
+				show_play = false;
 			}
-		
 		}
 		else
 		{
+			// Motion just finished playing
 			mPauseRequest = avatarp->requestPause();
-			//mPlayButton->setVisible(TRUE);
-			//mPlayButton->setEnabled(TRUE);			
-			mStopButton->setEnabled(TRUE); // stop also resets, leave enabled.
 		}
 		childEnable("ok_btn");
 		mAnimPreview->requestUpdate();
 	}
+	mPlayButton->setVisible(show_play);
+	mPauseButton->setVisible(!show_play);
 }
 
 //-----------------------------------------------------------------------------
-- 
cgit v1.2.3


From d1211da0b52fb1b4446232d14b9b5da84e5e5f4f Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Thu, 17 Dec 2009 15:00:31 -0800
Subject: EXT-3555 Top menu no longer changes color when in God mode, Button
 height unsquooshing from Lis

---
 indra/newview/skins/default/colors.xml                 |  9 +++------
 indra/newview/skins/default/xui/en/panel_notes.xml     | 10 +++++-----
 indra/newview/skins/default/xui/en/panel_people.xml    | 14 +++++++-------
 indra/newview/skins/default/xui/en/panel_pick_info.xml |  6 +++---
 indra/newview/skins/default/xui/en/panel_picks.xml     |  6 +++---
 .../skins/default/xui/en/panel_place_profile.xml       |  4 ++--
 indra/newview/skins/default/xui/en/panel_places.xml    | 15 +++++++--------
 indra/newview/skins/default/xui/en/panel_profile.xml   | 18 +++++++++---------
 8 files changed, 39 insertions(+), 43 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml
index b6995d2122..c183333c3e 100644
--- a/indra/newview/skins/default/colors.xml
+++ b/indra/newview/skins/default/colors.xml
@@ -59,9 +59,6 @@
 	<color
 	 name="Red"
 	 value="1 0 0 1" />
-	<color
-	 name="Green"
-	 value="0 1 0 1" />
 	<color
 	 name="Blue"
 	 value="0 0 1 1" />
@@ -69,8 +66,8 @@
 	 name="Yellow"
 	 value="0.114 0.65 0.1" />
 	<color
-	 name="Unused?"
-	 value="1 0.5 0 1" />
+	 name="Green"
+	 value="0 .39 .10 1" />
 	<color
 	 name="Transparent"
 	 value="0 0 0 0" />
@@ -435,7 +432,7 @@
      reference="DkGray" />
     <color
      name="MenuBarGodBgColor"
-     reference="DkGray2" />
+     reference="Green" />
     <color
      name="MenuDefaultBgColor"
      reference="DkGray2" />
diff --git a/indra/newview/skins/default/xui/en/panel_notes.xml b/indra/newview/skins/default/xui/en/panel_notes.xml
index 9e7c9477d4..f15e75dee9 100644
--- a/indra/newview/skins/default/xui/en/panel_notes.xml
+++ b/indra/newview/skins/default/xui/en/panel_notes.xml
@@ -114,7 +114,7 @@
          width="313">
        <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Add"
          layout="topleft"
          left="0"
@@ -125,7 +125,7 @@
          width="55" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="IM"
          layout="topleft"
          name="im"
@@ -135,7 +135,7 @@
          width="40" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Call"
          layout="topleft"
          name="call"
@@ -146,7 +146,7 @@
         <button
          enabled="false"
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Map"
          layout="topleft"
          name="show_on_map_btn"
@@ -156,7 +156,7 @@
          width="50" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          name="teleport"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 87861e7901..8883c27c47 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -346,7 +346,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left="0"
-         height="19"
+         height="23"
          label="Profile"
          layout="topleft"
          name="view_profile_btn"
@@ -356,7 +356,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left_pad="2"
-         height="19"
+         height="23"
          label="IM"
          layout="topleft"
          name="im_btn"
@@ -366,7 +366,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left_pad="2"
-         height="19"
+         height="23"
          label="Call"
          layout="topleft"
          name="call_btn"
@@ -376,7 +376,7 @@ background_visible="true"
          follows="left|top"
          top="4"
          left_pad="2"
-         height="19"
+         height="23"
          label="Share"
          layout="topleft"
          name="share_btn"
@@ -385,7 +385,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left_pad="2"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          name="teleport_btn"
@@ -395,7 +395,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left="0"
-         height="19"
+         height="23"
          label="Group Profile"
          layout="topleft"
          name="group_info_btn"
@@ -405,7 +405,7 @@ background_visible="true"
          follows="bottom|left"
          top="4"
          left_pad="2"
-         height="19"
+         height="23"
          label="Group Chat"
          layout="topleft"
          name="chat_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_pick_info.xml b/indra/newview/skins/default/xui/en/panel_pick_info.xml
index 0cf2a7afc3..f68202d287 100644
--- a/indra/newview/skins/default/xui/en/panel_pick_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_pick_info.xml
@@ -103,7 +103,7 @@
      name="buttons">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          left="0"
@@ -112,7 +112,7 @@
          width="90" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Map"
          layout="topleft"
          left_pad="10"
@@ -121,7 +121,7 @@
          width="90" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Edit"
          layout="topleft"
          right="-1"
diff --git a/indra/newview/skins/default/xui/en/panel_picks.xml b/indra/newview/skins/default/xui/en/panel_picks.xml
index 2230229b14..1fc553ff36 100644
--- a/indra/newview/skins/default/xui/en/panel_picks.xml
+++ b/indra/newview/skins/default/xui/en/panel_picks.xml
@@ -129,7 +129,7 @@
        <button
          enabled="false"
          follows="bottom|left"
-         height="25"
+         height="23"
          label="Info"
          layout="topleft"
          left="5"
@@ -141,7 +141,7 @@
         <button
          enabled="false"
          follows="bottom|left"
-         height="25"
+         height="23"
          label="Teleport"
          layout="topleft"
          left_pad="5"
@@ -153,7 +153,7 @@
         <button
          enabled="false"
          follows="bottom|left"
-         height="25"
+         height="23"
          label="Map"
          layout="topleft"
          left_pad="5"
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 a5731123b1..c3138bb443 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -517,7 +517,7 @@
                          width="60" />
                         <button
                          follows="bottom|right"
-                         height="19"
+                         height="23"
                          label="About Land"
                          layout="topleft"
                          name="about_land_btn"
@@ -644,7 +644,7 @@
                         </text>
                         <button
                          follows="bottom|right"
-                         height="19"
+                         height="23"
                          label="Region/Estate"
                          layout="topleft"
                          name="region_info_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index d4a6c7f3b3..db03f334e5 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -72,7 +72,7 @@ background_visible="true"
      width="313">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          left="5"
@@ -82,17 +82,16 @@ background_visible="true"
          width="100" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Map"
          layout="topleft"
          left_pad="5"
          name="map_btn"
-         tool_tip="Show selected area on the map"
          top="0"
          width="70" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Edit"
          layout="topleft"
          left_pad="5"
@@ -101,7 +100,7 @@ background_visible="true"
          width="70" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          image_disabled="ForwardArrow_Off"
          image_selected="ForwardArrow_Press"
          image_unselected="ForwardArrow_Off"
@@ -112,7 +111,7 @@ background_visible="true"
          width="18" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          label="Close"
          layout="topleft"
          name="close_btn"
@@ -121,7 +120,7 @@ background_visible="true"
          width="60" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          label="Cancel"
          layout="topleft"
          name="cancel_btn"
@@ -130,7 +129,7 @@ background_visible="true"
          width="60" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          label="Save"
          layout="topleft"
          name="save_btn"
diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml
index 638bc3cabd..342cf4144f 100644
--- a/indra/newview/skins/default/xui/en/panel_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_profile.xml
@@ -275,12 +275,12 @@
      left="0"
      name="profile_buttons_panel"
      top_pad="2"
-     bottom="10"
+     bottom="0"
      height="19"
      width="303">
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Add Friend"
          layout="topleft"
          left="0"
@@ -291,7 +291,7 @@
          width="77" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="IM"
          layout="topleft"
          name="im"
@@ -301,7 +301,7 @@
          width="33" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Call"
          layout="topleft"
          name="call"
@@ -312,7 +312,7 @@
         <button
          enabled="false"
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Map"
          layout="topleft"
          name="show_on_map_btn"
@@ -322,7 +322,7 @@
          width="44" />
         <button
          follows="bottom|left"
-         height="19"
+         height="23"
          label="Teleport"
          layout="topleft"
          name="teleport"
@@ -332,7 +332,7 @@
          width="67" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          label="â–¼"
          layout="topleft"
          name="overflow_btn"
@@ -352,14 +352,14 @@
      width="303">
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          left="10"
          label="Edit Profile"
          name="edit_profile_btn"
          width="130" />
         <button
          follows="bottom|right"
-         height="19"
+         height="23"
          label="Edit Appearance"
          left_pad="10"
          name="edit_appearance_btn"
-- 
cgit v1.2.3


From 68a71ddb4844ce23528e2e700c755a2fd8081342 Mon Sep 17 00:00:00 2001
From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com>
Date: Thu, 17 Dec 2009 18:25:43 -0500
Subject: Started clean-up of appearance floater layout.

---
 .../skins/default/xui/en/floater_customize.xml     | 508 +++++++++++----------
 1 file changed, 266 insertions(+), 242 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index 9d3694873e..3e188f3a83 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -3,7 +3,7 @@
  legacy_header_height="18"
  can_minimize="false"
  follows="left|top"
- height="540"
+ height="607"
  layout="topleft"
  left_delta="-3"
  name="floater customize"
@@ -11,30 +11,51 @@
  save_rect="true"
  title="APPEARANCE"
  top_delta="-185"
- width="494">
+ width="524">
+ <check_box
+             enabled="true"
+             height="23"
+             label="Show Attachments in Previews"
+             layout="topleft"
+             left="110"
+             name="show attachments"
+             tool_tip="Display attachments on your avatar in the preview panels below."
+             top="20"
+             width="146" />
     <tab_container
-     height="483"
+     height="517"
      layout="topleft"
-     left="0"
+     left="10"
      name="customize tab container"
      tab_min_width="96"
      tab_position="left"
-     top="24"
-     width="492">
-        <placeholder
-         label="Body Parts"
-         layout="topleft"
-         name="body_parts_placeholder" />
+     tab_height="50"
+     top="50"
+     width="506">
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="5"
+             name="body_parts_placeholder"
+	     font="SansSerifSmallBold"
+             top="10"
+             width="100">
+                Body Parts
+            </text>
+	    <placeholder />
         <panel
-         border="true"
+         border="false"
+ background_visible="true"
+ bg_alpha_color="DkGray2"
          follows="left|top|right|bottom"
-         height="481"
+         height="508"
          label="Shape"
          layout="topleft"
-         left_delta="0"
          name="Shape"
-         top_delta="0"
-         width="389">
+         width="400">
             <icon
              follows="top|right"
              height="18"
@@ -47,136 +68,132 @@
              width="18" />
             <icon
              height="16"
+	     top="10"
+	     left="10"
              layout="topleft"
-             left_delta="-325"
              mouse_opaque="true"
-             top_delta="3"
              width="16" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
-             left="299"
+             right="390"
              name="Revert"
-             top="458"
+             top="477"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Body"
              label_selected="Body"
              layout="topleft"
-             left="8"
+             left="10"
              name="Body"
-             top="65"
+             top="63"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Head"
              label_selected="Head"
              layout="topleft"
              left_delta="0"
              name="Head"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Eyes"
              label_selected="Eyes"
              layout="topleft"
              left_delta="0"
              name="Eyes"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Ears"
              label_selected="Ears"
              layout="topleft"
              left_delta="0"
              name="Ears"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Nose"
              label_selected="Nose"
              layout="topleft"
              left_delta="0"
              name="Nose"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Mouth"
              label_selected="Mouth"
              layout="topleft"
              left_delta="0"
              name="Mouth"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Chin"
              label_selected="Chin"
              layout="topleft"
              left_delta="0"
              name="Chin"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Torso"
              label_selected="Torso"
              layout="topleft"
              left_delta="0"
              name="Torso"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Legs"
              label_selected="Legs"
              layout="topleft"
              left_delta="0"
              name="Legs"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <radio_group
              control_name="AvatarSex"
              height="34"
              layout="topleft"
-             left_delta="0"
              name="sex radio"
-             top_pad="16"
+	     top_pad="10"
              width="82">
                 <radio_item
                  height="16"
                  label="Female"
                  layout="topleft"
-                 left="1"
                  name="radio"
-                 top="1"
                  value="0"
                  width="82" />
                 <radio_item
                  height="16"
                  label="Male"
                  layout="topleft"
-                 left_delta="0"
                  name="radio2"
                  value="1"
-                 top_delta="16"
+		 top="32"
                  width="82" />
             </radio_group>
             <text
@@ -186,9 +203,9 @@
              font="SansSerif"
              height="16"
              layout="topleft"
-             left="8"
+             left="31"
              name="title"
-             top="8"
+             top="10"
              width="355">
                 [DESC]
             </text>
@@ -199,9 +216,9 @@
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_no_modify"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: cannot modify
             </text>
@@ -212,9 +229,9 @@
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_loading"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: loading...
             </text>
@@ -225,9 +242,9 @@
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_not_worn"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: not worn
             </text>
@@ -235,11 +252,11 @@
              type="string"
              length="1"
              follows="left|top"
-             height="14"
+             height="16"
              layout="topleft"
-             left="8"
+             left="10"
              name="path"
-             top="24"
+             top="36"
              width="373">
                 Located in [PATH]
             </text>
@@ -249,9 +266,9 @@
              follows="left|top|right"
              height="28"
              layout="topleft"
-             left_delta="0"
+             left="10"
              name="not worn instructions"
-             top_pad="8"
+             top="31"
              width="373">
                 Put on a new shape by dragging one from your inventory
 to your avatar. Alternately, you create a new one from
@@ -272,58 +289,58 @@ scratch and wear it.
             <text
              type="string"
              length="1"
-             bottom="486"
+             top="488"
              follows="left|top|right"
              font="SansSerif"
              halign="right"
-             height="28"
+             height="23"
              layout="topleft"
              name="Item Action Label"
-             right="117"
+             right="132"
              width="100">
                 Shape:
             </text>
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Shape"
              label_selected="Create New Shape"
              layout="topleft"
-             left="8"
+             left="10"
              name="Create New"
              top="104"
              width="140" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
-             left="123"
              name="Save"
-             top="458"
+             right="218"
+             top="477"
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
-             left_pad="6"
              name="Save As"
-             top_delta="0"
+             top="477"
+             right="304"
              width="82" />
         </panel>
         <panel
-         border="true"
+         border="false"
+ background_visible="true"
+ bg_alpha_color="DkGray2"
          follows="left|top|right|bottom"
-         height="481"
+         height="508"
          label="Skin"
          layout="topleft"
-         left_delta="0"
          name="Skin"
-         top_delta="0"
-         width="389">
+         width="400">
             <icon
              follows="top|right"
              height="18"
@@ -335,52 +352,51 @@ scratch and wear it.
              top="4"
              width="18" />
             <icon
-             follows="left|top"
              height="16"
+	     top="10"
+	     left="10"
              layout="topleft"
-             left="8"
              mouse_opaque="true"
-             top_delta="3"
              width="16" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Skin Color"
              label_selected="Skin Color"
              layout="topleft"
-             left_delta="0"
+             left="10"
              name="Skin Color"
-             top_pad="41"
+             top="63"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Face Detail"
              label_selected="Face Detail"
              layout="topleft"
              left_delta="0"
              name="Face Detail"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Makeup"
              label_selected="Makeup"
              layout="topleft"
              left_delta="0"
              name="Makeup"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Body Detail"
              label_selected="Body Detail"
              layout="topleft"
              left_delta="0"
              name="Body Detail"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <text
              type="string"
@@ -389,9 +405,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left="8"
+             left="31"
              name="title"
-             top="8"
+             top="10"
              width="355">
                 [DESC]
             </text>
@@ -402,9 +418,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_no_modify"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: cannot modify
             </text>
@@ -415,9 +431,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_loading"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: loading...
             </text>
@@ -428,9 +444,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_not_worn"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: not worn
             </text>
@@ -440,9 +456,9 @@ scratch and wear it.
              follows="left|top|right"
              height="14"
              layout="topleft"
-             left="8"
+             left="10"
              name="path"
-             top="24"
+             top="36"
              width="373">
                 Located in [PATH]
             </text>
@@ -452,9 +468,9 @@ scratch and wear it.
              follows="left|top|right"
              height="28"
              layout="topleft"
-             left_delta="0"
+             left="10"
              name="not worn instructions"
-             top_pad="8"
+             top="31"
              width="373">
                 Put on a new skin by dragging one from your inventory
 to your avatar. Alternately, you create a new one from
@@ -475,14 +491,14 @@ scratch and wear it.
             <text
              type="string"
              length="1"
-             bottom="486"
+             top="488"
              follows="left|top|right"
              font="SansSerif"
              halign="right"
-             height="28"
+             height="23"
              layout="topleft"
              name="Item Action Label"
-             right="117"
+             right="132"
              width="100">
                 Skin:
             </text>
@@ -491,43 +507,43 @@ scratch and wear it.
              can_apply_immediately="true"
              default_image_name="Default"
              follows="left|top"
-             height="80"
+             height="108"
              label="Head Tattoos"
              layout="topleft"
-             left="8"
+             left="10"
              name="Head Tattoos"
              tool_tip="Click to choose a picture"
-             top="193"
-             width="74" />
+             top="176"
+             width="82" />
             <texture_picker
              allow_no_texture="true"
              can_apply_immediately="true"
              default_image_name="Default"
              follows="left|top"
-             height="80"
+             height="108"
              label="Upper Tattoos"
              layout="topleft"
              left_delta="0"
              name="Upper Tattoos"
              tool_tip="Click to choose a picture"
-             top_delta="80"
-             width="74" />
+             top_delta="102"
+             width="82" />
             <texture_picker
              allow_no_texture="true"
              can_apply_immediately="true"
              default_image_name="Default"
              follows="left|top"
-             height="80"
+             height="108"
              label="Lower Tattoos"
              layout="topleft"
              left_delta="0"
              name="Lower Tattoos"
              tool_tip="Click to choose a picture"
-             top_delta="80"
-             width="74" />
+             top_delta="102"
+             width="82" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Skin"
              label_selected="Create New Skin"
              layout="topleft"
@@ -537,45 +553,45 @@ scratch and wear it.
              width="120" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
-             left="123"
+             right="218"
              name="Save"
-             top="458"
+             top="477"
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
-             left_pad="6"
+             right="304"
              name="Save As"
-             top_delta="0"
+             top="477"
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
-             left_pad="6"
+             right="390"
              name="Revert"
-             top_delta="0"
+             top="477"
              width="82" />
         </panel>
         <panel
-         border="true"
+         border="false"
+ background_visible="true"
+ bg_alpha_color="DkGray2"
          follows="left|top|right|bottom"
-         height="481"
+         height="508"
          label="Hair"
          layout="topleft"
-         left_delta="0"
          name="Hair"
-         top_delta="0"
-         width="389">
+         width="400">
             <icon
              follows="top|right"
              height="18"
@@ -588,50 +604,48 @@ scratch and wear it.
              width="18" />
             <icon
              height="16"
+	     top="10"
+	     left="10"
              layout="topleft"
-             left="8"
              mouse_opaque="true"
-             top_delta="3"
              width="16" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Color"
              label_selected="Color"
              layout="topleft"
-             left_delta="0"
+             left="10"
              name="Color"
-             top_pad="41"
+             top="63"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Style"
              label_selected="Style"
              layout="topleft"
              left_delta="0"
              name="Style"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Eyebrows"
              label_selected="Eyebrows"
              layout="topleft"
-             left_delta="0"
              name="Eyebrows"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <button
              follows="left|top"
-             height="16"
+             height="23"
              label="Facial"
              label_selected="Facial"
              layout="topleft"
-             left_delta="0"
              name="Facial"
-             top_pad="16"
+             top_pad="4"
              width="82" />
             <text
              type="string"
@@ -640,9 +654,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left="8"
+             left="31"
              name="title"
-             top="8"
+             top="10"
              width="355">
                 [DESC]
             </text>
@@ -653,9 +667,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_no_modify"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: cannot modify
             </text>
@@ -666,9 +680,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_loading"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: loading...
             </text>
@@ -679,9 +693,9 @@ scratch and wear it.
              font="SansSerif"
              height="16"
              layout="topleft"
-             left_delta="0"
+             left="31"
              name="title_not_worn"
-             top_delta="0"
+             top="10"
              width="355">
                 [DESC]: not worn
             </text>
@@ -691,9 +705,9 @@ scratch and wear it.
              follows="left|top|right"
              height="14"
              layout="topleft"
-             left="8"
+             left="10"
              name="path"
-             top="24"
+             top="36"
              width="373">
                 Located in [PATH]
             </text>
@@ -703,9 +717,9 @@ scratch and wear it.
              follows="left|top|right"
              height="28"
              layout="topleft"
-             left_delta="0"
+             left="10"
              name="not worn instructions"
-             top_pad="8"
+             top="31"
              width="373">
                 Put on a new hair by dragging one from your inventory
 to your avatar. Alternately, you create a new one from
@@ -726,14 +740,14 @@ scratch and wear it.
             <text
              type="string"
              length="1"
-             bottom="486"
+             top="488"
              follows="left|top|right"
              font="SansSerif"
              halign="right"
-             height="28"
+             height="23"
              layout="topleft"
              name="Item Action Label"
-             right="117"
+             right="132"
              width="100">
                 Hair:
             </text>
@@ -741,17 +755,17 @@ scratch and wear it.
              can_apply_immediately="true"
              default_image_name="Default"
              follows="left|top"
-             height="80"
+             height="108"
              label="Texture"
              layout="topleft"
-             left="8"
+             left="10"
              name="Texture"
              tool_tip="Click to choose a picture"
-             top="193"
-             width="64" />
+             top="176"
+             width="82" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Hair"
              label_selected="Create New Hair"
              layout="topleft"
@@ -761,33 +775,33 @@ scratch and wear it.
              width="120" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
-             left="123"
+             right="218"
              name="Save"
-             top="458"
+             top="477"
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
-             left_pad="6"
+             right="304"
              name="Save As"
-             top_delta="0"
+             top="477"
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
-             left_pad="6"
+             right="390"
              name="Revert"
-             top_delta="0"
+             top="477"
              width="82" />
         </panel>
         <panel
@@ -935,7 +949,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Eyes"
              label_selected="Create New Eyes"
              layout="topleft"
@@ -945,7 +959,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -955,7 +969,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -965,7 +979,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -974,10 +988,20 @@ scratch and wear it.
              top_delta="0"
              width="82" />
         </panel>
-        <placeholder
-         label="Clothes"
-         layout="topleft"
-         name="clothes_placeholder" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="5"
+             name="clothes_placeholder"
+	     font="SansSerifSmallBold"
+             top="125"
+             width="100">
+                Clothes
+            </text>
+	    <placeholder />
         <panel
          border="true"
          follows="left|top|right|bottom"
@@ -1031,7 +1055,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Shirt"
              label_selected="Create New Shirt"
              layout="topleft"
@@ -1041,7 +1065,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -1051,7 +1075,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -1061,7 +1085,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -1071,7 +1095,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -1237,7 +1261,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Pants"
              label_selected="Create New Pants"
              layout="topleft"
@@ -1247,7 +1271,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -1257,7 +1281,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -1267,7 +1291,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -1277,7 +1301,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -1547,7 +1571,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Shoes"
              label_selected="Create New Shoes"
              layout="topleft"
@@ -1557,7 +1581,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -1567,7 +1591,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -1577,7 +1601,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -1587,7 +1611,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -1753,7 +1777,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Socks"
              label_selected="Create New Socks"
              layout="topleft"
@@ -1763,7 +1787,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -1773,7 +1797,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -1783,7 +1807,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -1793,7 +1817,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -1971,7 +1995,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Jacket"
              label_selected="Create New Jacket"
              layout="topleft"
@@ -1981,7 +2005,7 @@ scratch and wear it.
              width="140" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -1991,7 +2015,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -2001,7 +2025,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -2011,7 +2035,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -2177,7 +2201,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Gloves"
              label_selected="Create New Gloves"
              layout="topleft"
@@ -2187,7 +2211,7 @@ scratch and wear it.
              width="130" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -2197,7 +2221,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -2207,7 +2231,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -2217,7 +2241,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -2383,7 +2407,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Undershirt"
              label_selected="Create New Undershirt"
              layout="topleft"
@@ -2393,7 +2417,7 @@ scratch and wear it.
              width="160" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -2403,7 +2427,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -2413,7 +2437,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -2423,7 +2447,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -2589,7 +2613,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Underpants"
              label_selected="Create New Underpants"
              layout="topleft"
@@ -2599,7 +2623,7 @@ scratch and wear it.
              width="160" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -2609,7 +2633,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -2619,7 +2643,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -2629,7 +2653,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -2795,7 +2819,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Skirt"
              label_selected="Create New Skirt"
              layout="topleft"
@@ -2805,7 +2829,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -2815,7 +2839,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -2825,7 +2849,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -2835,7 +2859,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -3082,7 +3106,7 @@ scratch and wear it.
              width="16" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Alpha"
              label_selected="Create New Alpha"
              layout="topleft"
@@ -3092,7 +3116,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -3102,7 +3126,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -3112,7 +3136,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -3122,7 +3146,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -3300,7 +3324,7 @@ scratch and wear it.
              width="64" />
             <button
              follows="left|top"
-             height="24"
+             height="23"
              label="Create New Tattoo"
              label_selected="Create New Tattoo"
              layout="topleft"
@@ -3310,7 +3334,7 @@ scratch and wear it.
              width="120" />
             <button
              follows="left|top"
-             height="20"
+             height="23"
              label="Take Off"
              label_selected="Take Off"
              layout="topleft"
@@ -3320,7 +3344,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save"
              label_selected="Save"
              layout="topleft"
@@ -3330,7 +3354,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Save As..."
              label_selected="Save As..."
              layout="topleft"
@@ -3340,7 +3364,7 @@ scratch and wear it.
              width="82" />
             <button
              follows="right|bottom"
-             height="20"
+             height="23"
              label="Revert"
              label_selected="Revert"
              layout="topleft"
@@ -3352,12 +3376,12 @@ scratch and wear it.
     </tab_container>
     <scroll_container
      follows="left|top|right|bottom"
-     height="382"
+     height="409"
      layout="topleft"
-     left="197"
+     left="211"
      mouse_opaque="false"
      name="panel_container"
-     top="94"
+     top="116"
      width="292">
         <scrolling_panel_list
          follows="left|bottom"
@@ -3365,19 +3389,19 @@ scratch and wear it.
          name="panel_list" />
     </scroll_container>
     <button
-     bottom="536"
+     bottom="598"
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Make Outfit"
      label_selected="Make Outfit"
      layout="topleft"
      name="make_outfit_btn"
-     right="-216"
+     right="-218"
      width="100" />
     <button
-     bottom="536"
+     bottom="598"
      follows="right|bottom"
-     height="20"
+     height="23"
      label="Cancel"
      label_selected="Cancel"
      layout="topleft"
@@ -3385,13 +3409,13 @@ scratch and wear it.
      right="-10"
      width="100" />
     <button
-     bottom="536"
+     bottom="598"
      follows="right|bottom"
-     height="20"
+     height="23"
      label="OK"
      label_selected="OK"
      layout="topleft"
      name="Ok"
-     right="-116"
+     right="-114"
      width="100" />
 </floater>
-- 
cgit v1.2.3


From 6e17110201515bddf8f674f26d02b9b3334c483e Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Thu, 17 Dec 2009 16:09:41 -0800
Subject: EXT-3516 X Button should end IM session, _ button should hide I don't
 like it, but I don't have a better suggestion. Reviewed with Steve.

---
 indra/newview/llimfloater.cpp | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 7dc21e6e23..ff1eb10366 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -122,9 +122,13 @@ void LLIMFloater::onFocusReceived()
 void LLIMFloater::onClose(bool app_quitting)
 {
 	setTyping(false);
-	// SJB: We want the close button to hide the session window, not end it
-	// *NOTE: Yhis is functional, but not ideal - it's still closing the floater; we really want to change the behavior of the X button instead.
-	//gIMMgr->leaveSession(mSessionID);
+
+	// The source of much argument and design thrashing
+	// Should the window hide or the session close when the X is clicked?
+	//
+	// Last change:
+	// EXT-3516 X Button should end IM session, _ button should hide
+	gIMMgr->leaveSession(mSessionID);
 }
 
 /* static */
-- 
cgit v1.2.3


From ab93c0ffb5f7601a7baee770f904537981be431a Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Thu, 17 Dec 2009 16:15:46 -0800
Subject: EXT-3534 	 Default Location Obscures the Top of an Open Notecard
 When Nav and/or Favorites Bar are Hidden EXT-3334 	 [BSI] Chat/IM log
 preferences not retained EXT-3402 	 Replace "X" for checked menu items
 with a check mark glyph [Patch Included] reviewed by richard

---
 indra/newview/llfloaterpreference.cpp |  5 +----
 indra/newview/llviewercontrol.cpp     | 19 -------------------
 2 files changed, 1 insertion(+), 23 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index ab27375b87..4cd0727ce2 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -628,12 +628,9 @@ void LLFloaterPreference::onBtnOK()
 
 	if (canClose())
 	{
+		saveSettings();
 		apply();
-		// Here we do not want to cancel on close, so we do this funny thing
-		// that prevents cancel from undoing our changes when we hit OK
-		mCancelOnClose = false;
 		closeFloater(false);
-		mCancelOnClose = true;
 		gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
 		LLUIColorTable::instance().saveUserSettings();
 		std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 6339d23fa7..004e3c6380 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -516,33 +516,14 @@ bool toggle_show_snapshot_button(const LLSD& newvalue)
 
 bool toggle_show_navigation_panel(const LLSD& newvalue)
 {
-	LLRect floater_view_rect = gFloaterView->getRect();
-	LLRect notify_view_rect = gNotifyBoxView->getRect();
 	LLNavigationBar* navbar = LLNavigationBar::getInstance();
-	
-	//if newvalue contains 0 => navbar should turn invisible, so floater_view_rect should get higher, 
-	//and to do this pm=1, else if navbar becomes visible pm=-1 so floater_view_rect gets lower.
-	int pm=newvalue.asBoolean()?-1:1;
-	floater_view_rect.mTop += pm*(navbar->getDefNavBarHeight()-navbar->getDefFavBarHeight());
-	notify_view_rect.mTop += pm*(navbar->getDefNavBarHeight()-navbar->getDefFavBarHeight());
-	gFloaterView->setRect(floater_view_rect);
-	floater_view_rect = gFloaterView->getRect();
 	navbar->showNavigationPanel(newvalue.asBoolean());
 	return true;
 }
 
 bool toggle_show_favorites_panel(const LLSD& newvalue)
 {
-	LLRect floater_view_rect = gFloaterView->getRect();
-	LLRect notify_view_rect = gNotifyBoxView->getRect();
 	LLNavigationBar* navbar = LLNavigationBar::getInstance();
-	
-	//if newvalue contains 0 => favbar should turn invisible, so floater_view_rect should get higher, 
-	//and to do this pm=1, else if favbar becomes visible pm=-1 so floater_view_rect gets lower.
-	int pm=newvalue.asBoolean()?-1:1;
-	floater_view_rect.mTop += pm*navbar->getDefFavBarHeight();
-	notify_view_rect.mTop += pm*navbar->getDefFavBarHeight();
-	gFloaterView->setRect(floater_view_rect);
 	navbar->showFavoritesPanel(newvalue.asBoolean());
 	return true;
 }
-- 
cgit v1.2.3


From 4ac31ec10b4a8c7848ef34a007232ad2ab321634 Mon Sep 17 00:00:00 2001
From: Erica <erica@lindenlab.com>
Date: Thu, 17 Dec 2009 16:18:40 -0800
Subject: Chuck's edits to the appearance editor

---
 indra/newview/skins/default/textures/textures.xml | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 0317d55768..4dbfd5bc81 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -454,6 +454,7 @@ with the same filename but different name
   <texture name="SegmentedBtn_Left_Press" file_name="widgets/SegmentedBtn_Left_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Disabled" file_name="widgets/SegmentedBtn_Left_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Selected" file_name="widgets/SegmentedBtn_Left_Selected.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
+  <texture name="SegmentedBtn_Left_Selected_Over" file_name="widgets/SegmentedBtn_Left_Selected_Over.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Selected_Press" file_name="widgets/SegmentedBtn_Left_Selected_Press.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
   <texture name="SegmentedBtn_Left_Selected_Disabled" file_name="widgets/SegmentedBtn_Left_Selected_Disabled.png" preload="true" scale.left="4" scale.top="19" scale.right="22" scale.bottom="4" />
 
-- 
cgit v1.2.3


From b2b8df658064249b0b0fee1af6efbb674e1b9092 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 16:22:03 -0800
Subject: reverted to viewer-2 copy of sidepanel_item_info.xml

---
 .../skins/default/xui/en/sidepanel_item_info.xml   | 262 ++++++++++++---------
 1 file changed, 149 insertions(+), 113 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
index e04af2bad6..7b0b4b0bde 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_item_info.xml
@@ -6,7 +6,7 @@
 	 name="item properties"
 	 help_topic="item_properties"
 	 save_rect="true"
-	 title="Inventory Item Properties"
+	 title="Object Profile"
 	 width="333">
 	<panel.string
 		 name="unknown">
@@ -50,15 +50,15 @@
      width="23" />
     <text
      follows="top|left|right"
-     font="SansSerifHugeBold"
+     font="SansSerifHuge"
      height="26"
      layout="topleft"
      left_pad="10"
      name="title"
-     text_color="white"
+     text_color="LtGray"
      top="0"
      use_ellipses="true"
-     value="Item Properties"
+     value="Object Profile"
      width="275" />
 	<panel
          follows="all"
@@ -71,7 +71,7 @@
          width="313"
    background_visible="true"
    bg_alpha_color="DkGray2">
-	    <text	 	 	 
+	    <text
 		     type="string"
 		     length="1"
 		     follows="left|top"
@@ -79,7 +79,7 @@
 		     layout="topleft"
 		     left="5"
 		     name="LabelItemNameTitle"
-		     top="5"
+		     top="10"
 		     width="78">
 	        Name:
 	    </text>
@@ -87,7 +87,7 @@
 		     border_style="line"
 		     border_thickness="1"
 	    	 follows="left|top|right"
-		     height="16"
+		     height="20"
 		     layout="topleft"
 	    	 left_delta="78"
 		     max_length="63"
@@ -102,7 +102,7 @@
 		     layout="topleft"
     		 left="5"
 		     name="LabelItemDescTitle"
-    		 top_delta="20"
+    		 top_pad="10"
 	    	 width="78">
 	        Description:
 	    </text>
@@ -115,7 +115,7 @@
     		 left_delta="78"
 		     max_length="127"
     		 name="LabelItemDesc"
-	    	 top_delta="0"
+	    	 top_delta="-5"
 	    	 width="225" />
 	    <text
 		     type="string"
@@ -123,32 +123,41 @@
 		     follows="left|top"
 		     height="23"
 		     layout="topleft"
-		     left="10"
+    		 left="5"
 		     name="LabelCreatorTitle"
-		     top="65"
+top_pad="10"
 		     width="78">
 	        Creator:
     	</text>
+	        <avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+		     top_delta="-6"
+     mouse_opaque="true"
+     width="20" />
 	    <text
 		     type="string"
-		     length="1"
-		     follows="left|top"
-		     height="23"
-		     layout="topleft"
-		     left_delta="78"
+     follows="left|right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
 		     name="LabelCreatorName"
-		     top_delta="0"
+		     top_delta="6"
 		     width="140">
 	        Nicole Linden
 	     </text>
 	     <button
 			 follows="top|right"
 			 height="23"
-			 label="Profile..."
+			 label="Profile"
 			 layout="topleft"
-			 left_delta="144"
+			 right="-1"
 			 name="BtnCreator"
-			 top_delta="0"
+			 top_delta="-6"
 			 width="78" />
 	     <text
 			 type="string"
@@ -156,32 +165,41 @@
 			 follows="left|top"
 			 height="23"
 			 layout="topleft"
-			 left="10"
+    		 left="5"
 			 name="LabelOwnerTitle"
-			 top="85"
+top_pad="5"
 			 width="78">
 			    Owner:
 	     </text>
+	     <avatar_icon
+     follows="top|left"
+     height="20"
+     default_icon_name="Generic_Person"
+     layout="topleft"
+     left_pad="0"
+		     top_delta="-6"
+     mouse_opaque="true"
+     width="20" />
 	     <text
 			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="23"
-			 layout="topleft"
-			 left_delta="78"
+     follows="left|right"
+     font="SansSerifSmall"
+     height="15"
+     layout="topleft"
+     left_pad="5"
 			 name="LabelOwnerName"
-			 top_delta="0"
+			 top_delta="6"
 			 width="140">
 			    Thrax Linden
 	     </text>
 	     <button
 			 follows="top|right"
 			 height="23"
-			 label="Profile..."
+			 label="Profile"
 			 layout="topleft"
-			 left_delta="144"
+			 right="-1"
 			 name="BtnOwner"
-			 top_delta="0"
+			 top_delta="-3"
 			 width="78" />
 	     <text
 			 type="string"
@@ -189,9 +207,9 @@
 			 follows="left|top"
 			 height="23"
 			 layout="topleft"
-			 left="10"
+    		 left="5"
 			 name="LabelAcquiredTitle"
-			 top="105"
+top_pad="10"
 			 width="78">
 			Acquired:
 	     </text>
@@ -207,134 +225,146 @@
 			 width="222">
 			Wed May 24 12:50:46 2006
 	    </text>
-	    <text
-			 type="string"
-			 length="1"
-			 follows="left|top"
-			 height="23"
-			 layout="topleft"
-			 left="10"
-			 name="OwnerLabel"
-			 top="125"
-			 width="78">
-			You:
-	    </text>
+	 <panel
+         border="false"
+         follows="left|top"
+         layout="topleft"
+         mouse_opaque="false"
+         background_visible="true"
+         bg_alpha_color="DkGray"
+         name="perms_inv"
+         left="0"
+         top_pad="25"
+         height="155"
+         width="313">
+	  <text
+             type="string"
+             length="1"
+             left="10"
+             top_pad="13"
+             text_color="EmphasisColor"
+	     height="15"
+             follows="left|top|right"
+             layout="topleft"
+             name="perm_modify"
+             width="200">
+                You can:
+            </text>
 	    <check_box
-			 height="23"
-			 label="Edit"
+			 height="18"
+			 label="Modify"
 			 layout="topleft"
-			 left_pad="5"
+			 left="20"
 			 name="CheckOwnerModify"
-			 top_delta="0"
-			 width="78" />
+			 top_pad="0"
+			 width="90" />
 	    <check_box
-			 height="23"
+			 height="18"
 			 label="Copy"
 			 layout="topleft"
-			 left_delta="0"
+			 left_pad="0"
 			 name="CheckOwnerCopy"
-			 top_pad="5"
-			 width="88" />
+			 width="90" />
 	    <check_box
-			 height="23"
-			 label="Resell"
+			 height="18"
+			 label="Transfer"
 			 layout="topleft"
-			 left_delta="0"
+			 left_pad="0"
 			 name="CheckOwnerTransfer"
-			 top_pad="5"
 			 width="106" />
 	    <text
 			 type="string"
 			 length="1"
 			 follows="left|top"
-			 height="10"
+			 height="16"
 			 layout="topleft"
 			 left="10"
 			 name="AnyoneLabel"
-			 top_pad="5"
-			 width="78">
+			 top_pad="8"
+			 width="100">
 			Anyone:
 	    </text>
 	    <check_box
-			 height="16"
+			 height="18"
 			 label="Copy"
 			 layout="topleft"
-			 left_pad="5"
+			 left_pad="0"
 			 name="CheckEveryoneCopy"
-			 top_delta="0"
-			 width="130" />
+			 top_delta="-2"
+			 width="150" />
     	<text
 			 type="string"
 			 length="1"
 			 follows="left|top"
-			 height="10"
+			 height="16"
 			 layout="topleft"
 			 left="10"
 			 name="GroupLabel"
-			 top_pad="5"
-			 width="78">
+			 top_pad="8"
+			 width="100">
 			Group:
     	</text>
 	    <check_box
-			 height="16"
+			 height="18"
 			 label="Share"
 			 layout="topleft"
-			 left_pad="5"
+			 left_pad="0"
+			 top_delta="-2"
 			 name="CheckShareWithGroup"
-			 top_delta="5"
-			 width="106" />
+			 tool_tip="Allow all members of the set group to share your modify permissions for this object. You must Deed to enable role restrictions."
+			 width="150" />
 	    <text
 			 type="string"
 			 length="1"
 			 follows="left|top"
-			 height="25"
+			 height="16"
 			 layout="topleft"
 			 left="10"
 			 name="NextOwnerLabel"
-			 top_pad="5"
-			 width="78"
+			 top_pad="8"
+			 width="200"
 			 word_wrap="true">
 			Next owner:
 	    </text>
 	    <check_box
-			 height="16"
-			 label="Edit"
+			 height="18"
+			 label="Modify"
 			 layout="topleft"
-			 left_pad="5"
+			 left="20"
+			 top_pad="0"
 			 name="CheckNextOwnerModify"
-			 top_delta="0"
-			 width="78" />
+			 width="90" />
 	    <check_box
-			 height="16"
+			 height="18"
 			 label="Copy"
 			 layout="topleft"
-			 left_delta="0"
+			 left_pad="0"
 			 name="CheckNextOwnerCopy"
-			 top_pad="5"
-			 width="88" />
+			 width="90" />
 	    <check_box
-			 height="16"
-			 label="Resell"
+			 height="18"
+			 label="Transfer"
 			 layout="topleft"
-			 left_delta="0"
+			 left_pad="0"
 			 name="CheckNextOwnerTransfer"
-			 top_pad="5"
+			 tool_tip="Next owner can give away or resell this object"
 			 width="106" />
+	    </panel>
 	    <check_box
-			 height="16"
+			 height="18"
 			 label="For Sale"
 			 layout="topleft"
-			 left="10"
+			 left="20"
 			 name="CheckPurchase"
-			 top_pad="5"
-			 width="78" />
+			 top_pad="20"
+			 width="100" />
 		<combo_box
-			 height="19"
-			 left_pad="5"
+			 height="23"
+			 left_pad="0"
 			 layout="topleft"
 			 follows="left|top"
 			 name="combobox sale copy"
-			 width="110">
+			 width="170">
 			<combo_box.item
 			     label="Copy"
 			     name="Copy"
@@ -350,26 +380,14 @@
 			    increment="1"
 			    control_name="Edit Cost"
 			    name="Edit Cost"
-			    label="Price:"
-			    label_width="100"
-			    left="10"
-			    width="192"
+			    label="Price: L$"
+			    label_width="75"
+			    left="120"
+			    width="170"
 			    min_val="1"
-			    height="19"
+			    height="23"
 			    max_val="999999999"
-			    top_pad="5"/>
-	    <text
-			    type="string"
-			    length="1"
-			    height="15"
-			    follows="left|top"
-			    layout="topleft"
-			    left_delta="82"
-			    name="CurrencySymbol"
-			    top_delta="1"
-			    width="18">
-			L$
-	    </text>
+			    top_pad="10"/>
 	    <!--line_editor
 			 border_style="line"
 			 border_thickness="1"
@@ -492,4 +510,22 @@
 			Price: L$
 	    </text-->
 	</panel>
+    <panel
+		 height="25"
+		 layout="bottomright"
+		 help_topic="button_tab"
+		 name="button_panel"
+		 left="5"
+		 bottom="5"
+		 width="313">
+	    <button
+		     follows="bottom|right"
+		     height="25"
+		     label="Cancel"
+		     layout="topleft"
+		     name="cancel_btn"
+		     right="-1"
+		     left_pad="10"
+		     width="100" />
+	</panel>
 </panel>
-- 
cgit v1.2.3


From 94a86f13b6430de839598faca4f91e1d6bba8049 Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Thu, 17 Dec 2009 16:25:33 -0800
Subject: removing mCancelOnClose

---
 indra/newview/llfloaterpreference.cpp | 11 ++---------
 indra/newview/llfloaterpreference.h   |  1 -
 2 files changed, 2 insertions(+), 10 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index ee6d5fad6c..ff568a11a9 100644
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -313,8 +313,7 @@ F32 LLFloaterPreference::sAspectRatio = 0.0;
 LLFloaterPreference::LLFloaterPreference(const LLSD& key)
 	: LLFloater(key),
 	mGotPersonalInfo(false),
-	mOriginalIMViaEmail(false),
-	mCancelOnClose(true)
+	mOriginalIMViaEmail(false)
 {
 	//Build Floater is now Called from 	LLFloaterReg::add("preferences", "floater_preferences.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterPreference>);
 	
@@ -588,9 +587,6 @@ void LLFloaterPreference::onOpen(const LLSD& key)
 	// when the floater is opened.  That will make cancel do its
 	// job
 	saveSettings();
-
-	// This is a "fresh" floater, closing floater shoud cancel any changes
-	mCancelOnClose = true;
 }
 
 void LLFloaterPreference::onVertexShaderEnable()
@@ -609,7 +605,7 @@ void LLFloaterPreference::onClose(bool app_quitting)
 {
 	gSavedSettings.setS32("LastPrefTab", getChild<LLTabContainer>("pref core")->getCurrentPanelIndex());
 	LLPanelLogin::setAlwaysRefresh(false);
-	if (mCancelOnClose) cancel();
+	cancel();
 }
 
 void LLFloaterPreference::onOpenHardwareSettings()
@@ -634,9 +630,6 @@ void LLFloaterPreference::onBtnOK()
 		saveSettings();
 		apply();
 		closeFloater(false);
-		// closeFloater() will be called when viewer is quitting, leaving mCancelOnClose = true;
-		// will cancel all changes we saved here, don't let this happen.
-		// Fix for EXT-3465
 
 		gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
 		LLUIColorTable::instance().saveUserSettings();
diff --git a/indra/newview/llfloaterpreference.h b/indra/newview/llfloaterpreference.h
index d292f3bb7b..94108cb79a 100644
--- a/indra/newview/llfloaterpreference.h
+++ b/indra/newview/llfloaterpreference.h
@@ -148,7 +148,6 @@ private:
 	static std::string sSkin;
 	bool mGotPersonalInfo;
 	bool mOriginalIMViaEmail;
-	bool mCancelOnClose;
 	
 	bool mOriginalHideOnlineStatus;
 	std::string mDirectoryVisibility;
-- 
cgit v1.2.3


From 541f7f88c257838d79c09e73cfbec4a638c1679c Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Thu, 17 Dec 2009 21:01:10 -0500
Subject: EXT-3557 : CTRL+I should bring up either InventorySP or
 InventoryFloater

Hitting CTRL+I when InventorySP is open will now bring up InventoryFloaters.
---
 indra/newview/llviewermenu.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index f1ae573c32..791e3a1948 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -56,6 +56,7 @@
 #include "llfloatercustomize.h"
 #include "llfloaterchatterbox.h"
 #include "llfloatergodtools.h"
+#include "llfloaterinventory.h"
 #include "llfloaterland.h"
 #include "llfloaterpay.h"
 #include "llfloaterreporter.h"
@@ -5610,7 +5611,15 @@ class LLShowSidetrayPanel : public view_listener_t
 	bool handleEvent(const LLSD& userdata)
 	{
 		std::string panel_name = userdata.asString();
-		LLSideTray::getInstance()->showPanel(panel_name, LLSD());
+		// Open up either the sidepanel or new floater.
+		if (LLSideTray::getInstance()->isPanelActive(panel_name))
+		{
+			LLFloaterInventory::showAgentInventory();
+		}
+		else
+		{
+			LLSideTray::getInstance()->showPanel(panel_name, LLSD());
+		}
 		return true;
 	}
 };
-- 
cgit v1.2.3


From cd276a208b51f840178b6ff49711ba6e78940185 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Thu, 17 Dec 2009 21:16:54 -0500
Subject: EXT-1607 : Trash and Gear buttons are enabled when nothing is
 selected

UI wasn't being updated when nothing is selected.
---
 indra/newview/llpanellandmarks.cpp | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 35cd3edc81..e16bac2098 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -233,11 +233,6 @@ void LLLandmarksPanel::onSelectionChange(LLInventorySubTreePanel* inventory_list
 		deselectOtherThan(inventory_list);
 		mCurrentSelectedList = inventory_list;
 	}
-
-	LLFolderViewItem* current_item = inventory_list->getRootFolder()->getCurSelectedItem();
-	if (!current_item)
-		return;
-
 	updateVerbs();
 }
 
@@ -246,6 +241,7 @@ void LLLandmarksPanel::onSelectorButtonClicked()
 	// TODO: mantipov: update getting of selected item
 	// TODO: bind to "i" button
 	LLFolderViewItem* cur_item = mFavoritesInventoryPanel->getRootFolder()->getCurSelectedItem();
+	if (!cur_item) return;
 
 	LLFolderViewEventListener* listenerp = cur_item->getListener();
 	if (listenerp->getInventoryType() == LLInventoryType::IT_LANDMARK)
@@ -334,6 +330,7 @@ void LLLandmarksPanel::processParcelInfo(const LLParcelData& parcel_data)
 	if(isLandmarkSelected())
 	{
 		LLFolderViewItem* cur_item = getCurSelectedItem();
+		if (!cur_item) return;
 		LLUUID id = cur_item->getListener()->getUUID();
 		LLInventoryItem* inv_item = mCurrentSelectedList->getModel()->getItem(id);
 		doActionOnCurSelectedLandmark(boost::bind(
@@ -761,7 +758,7 @@ void LLLandmarksPanel::onCustomAction(const LLSD& userdata)
 {
 	LLFolderViewItem* cur_item = getCurSelectedItem();
 	if(!cur_item)
-		return ;
+		return;
 	std::string command_name = userdata.asString();
 	if("more_info" == command_name)
 	{
@@ -865,18 +862,18 @@ bool LLLandmarksPanel::canSelectedBeModified(const std::string& command_name) co
 	// then ask LLFolderView permissions
 	if (can_be_modified)
 	{
-		LLFolderViewItem* selected =  getCurSelectedItem();
+		LLFolderViewItem* selected = getCurSelectedItem();
 		if ("cut" == command_name)
 		{
 			can_be_modified = mCurrentSelectedList->getRootFolder()->canCut();
 		}
 		else if ("rename" == command_name)
 		{
-			can_be_modified = selected? selected->getListener()->isItemRenameable() : false;
+			can_be_modified = selected ? selected->getListener()->isItemRenameable() : false;
 		}
 		else if ("delete" == command_name)
 		{
-			can_be_modified = selected? selected->getListener()->isItemRemovable(): false;
+			can_be_modified = selected ? selected->getListener()->isItemRemovable(): false;
 		}
 		else if("paste" == command_name)
 		{
-- 
cgit v1.2.3


From 8ced6cae88331eefaa170b23c3a97d0d691bae15 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Thu, 17 Dec 2009 21:51:10 -0500
Subject: EXT-3559 : Crash when deleting last Favorites entry

Map accessor was not checking for NULL.
---
 indra/newview/llfavoritesbar.cpp | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index da0a9727a9..826cb0bb3b 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -662,12 +662,16 @@ void LLFavoritesBarCtrl::updateButtons()
 		LLFavoriteLandmarkButton* button = dynamic_cast<LLFavoriteLandmarkButton*> (*child_it);
 		if (button)
 		{
-			// an child's order  and mItems  should be same   
-			if (button->getLandmarkId() != mItems[first_changed_item_index]->getUUID() // sort order has been changed
-					|| button->getLabelSelected() != mItems[first_changed_item_index]->getDisplayName() // favorite's name has been changed
-					|| button->getRect().mRight < rightest_point) // favbar's width has been changed
+			const LLViewerInventoryItem *item = mItems[first_changed_item_index].get();
+			if (item)
 			{
-				break;
+				// an child's order  and mItems  should be same   
+				if (button->getLandmarkId() != item->getUUID() // sort order has been changed
+					|| button->getLabelSelected() != item->getDisplayName() // favorite's name has been changed
+					|| button->getRect().mRight < rightest_point) // favbar's width has been changed
+				{
+					break;
+				}
 			}
 			first_changed_item_index++;
 		}
-- 
cgit v1.2.3


From 0561b09a7d9d8fb0137bf5ec1d25120aac23c312 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Thu, 17 Dec 2009 22:03:52 -0500
Subject: EXT-3126 : Avatar Textures (Debug) floater is too huge to fit screen

Added horizontal and vertical scrollbars.
---
 .../default/xui/en/floater_avatar_textures.xml     | 46 ++++++++++++++++------
 1 file changed, 34 insertions(+), 12 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
index a0cb94eb69..54b6edb0ec 100644
--- a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
+++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- height="950"
+ height="650"
  layout="topleft"
  name="avatar_texture_debug"
  help_topic="avatar_texture_debug"
@@ -16,9 +16,9 @@
      length="1"
      height="16"
      layout="topleft"
-     left="10"
+     left="30"
      name="label"
-     top="24"
+     top="40"
      width="80">
         Baked Textures
     </text>
@@ -27,7 +27,7 @@
      length="1"
      height="16"
      layout="topleft"
-     left_pad="60"
+     left_pad="50"
      name="composite_label"
      top_delta="0"
      width="120">
@@ -40,16 +40,37 @@
      layout="topleft"
      left_pad="530"
      name="Dump"
-     top_delta="1"
+     top_delta="0"
      width="150" />
 
+    <scroll_container
+     color="DkGray2"
+     opaque="true"
+     follows="all"
+     height="590"
+     layout="topleft"
+     left="5"
+     top_pad="5"
+     name="profile_scroll"
+     reserve_scroll_corner="false"
+     width="1240">
+    <panel
+     name="scroll_content_panel"
+     follows="left|top"
+     min_height="300"
+     layout="topleft"
+     top="0"
+     background_visible="false"
+     height="950"
+     left="0"
+     width="1250">
     <texture_picker
      height="143"
      label="Hair"
      layout="topleft"
      left="10"
      name="hair-baked"
-     top="47"
+     top="17"
      width="128" />
     <texture_picker
      height="143"
@@ -74,7 +95,7 @@
      layout="topleft"
      left="10"
      name="head-baked"
-     top="197"
+     top="167"
      width="128" />
     <texture_picker
      height="143"
@@ -107,7 +128,7 @@
      layout="topleft"
      left="10"
      name="eyes-baked"
-     top="347"
+     top="317"
      width="128" />
     <texture_picker
      height="143"
@@ -132,7 +153,7 @@
      layout="topleft"
      left="10"
      name="upper-baked"
-     top="497"
+     top="467"
      width="128" />
     <texture_picker
      height="143"
@@ -197,7 +218,7 @@
      layout="topleft"
      left="10"
      name="lower-baked"
-     top="647"
+     top="617"
      width="128" />
     <texture_picker
      height="143"
@@ -270,7 +291,7 @@
      layout="topleft"
      left="10"
      name="skirt-baked"
-     top="797"
+     top="767"
      width="128" />
     <texture_picker
      height="143"
@@ -280,5 +301,6 @@
      name="skirt"
      top_delta="0"
      width="128" />
-
+</panel>
+</scroll_container>
 </floater>
-- 
cgit v1.2.3


From bde0540ab5cea7ad4941a847094e0f8f0ff3e723 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Fri, 18 Dec 2009 15:35:51 +0200
Subject: implemented major task EXT-3509   	 User's own name should appear
 in the Group chat participant list

--HG--
branch : product-engine
---
 indra/newview/llavatarlist.cpp      | 15 +++++++++++++++
 indra/newview/llavatarlist.h        | 12 ++++++++++++
 indra/newview/llparticipantlist.cpp | 18 ++++++++++++++++--
 indra/newview/llparticipantlist.h   |  6 ++++++
 4 files changed, 49 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 3bd4f898c8..71b23e1383 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -33,6 +33,7 @@
 #include "llviewerprecompiledheaders.h"
 
 #include "llavatarlist.h"
+#include "llagent.h" // for comparator
 
 // newview
 #include "llcallingcard.h" // for LLAvatarTracker
@@ -420,3 +421,17 @@ bool LLAvatarItemNameComparator::doCompare(const LLAvatarListItem* avatar_item1,
 
 	return name1 < name2;
 }
+bool LLAvatarItemAgentOnTopComparator::doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const
+{
+	//keep agent on top, if first is agent, 
+	//then we need to return true to elevate this id, otherwise false.
+	if(avatar_item1->getAvatarId() == gAgent.getID())
+	{
+		return true;
+	}
+	else if (avatar_item2->getAvatarId() == gAgent.getID())
+	{
+		return false;
+	}
+	return LLAvatarItemNameComparator::doCompare(avatar_item1,avatar_item2);
+}
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 9058fec540..e913be0f62 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -155,4 +155,16 @@ protected:
 	virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
 };
 
+class LLAvatarItemAgentOnTopComparator : public LLAvatarItemNameComparator
+{
+	LOG_CLASS(LLAvatarItemAgentOnTopComparator);
+
+public:
+	LLAvatarItemAgentOnTopComparator() {};
+	virtual ~LLAvatarItemAgentOnTopComparator() {};
+
+protected:
+	virtual bool doCompare(const LLAvatarListItem* avatar_item1, const LLAvatarListItem* avatar_item2) const;
+};
+
 #endif // LL_LLAVATARLIST_H
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 93e5b8fa15..1cc08b75da 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -49,11 +49,14 @@
 #pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally
 #endif
 
+static const LLAvatarItemAgentOnTopComparator AGENT_ON_TOP_NAME_COMPARATOR;
+
 LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* avatar_list,  bool use_context_menu/* = true*/):
 	mSpeakerMgr(data_source),
 	mAvatarList(avatar_list),
 	mSortOrder(E_SORT_BY_NAME)
 ,	mParticipantListMenu(NULL)
+,	mExcludeAgent(true)
 {
 	mSpeakerAddListener = new SpeakerAddListener(*this);
 	mSpeakerRemoveListener = new SpeakerRemoveListener(*this);
@@ -97,6 +100,8 @@ LLParticipantList::LLParticipantList(LLSpeakerMgr* data_source, LLAvatarList* av
 			mModeratorList.insert(speakerp->mID);
 		}
 	}
+	// we need to exclude agent id for non group chat
+	mExcludeAgent = !gAgent.isInGroup(mSpeakerMgr->getSessionID());
 	mAvatarList->setDirty(true);
 	sort();
 }
@@ -307,7 +312,16 @@ void LLParticipantList::sort()
 	// TODO: Implement more sorting orders after specs updating (EM)
 	switch ( mSortOrder ) {
 	case E_SORT_BY_NAME :
-		mAvatarList->sortByName();
+		// if mExcludeAgent == true , then no need to keep agent on top of the list
+		if(mExcludeAgent)
+		{
+			mAvatarList->sortByName();
+		}
+		else
+		{
+			mAvatarList->setComparator(&AGENT_ON_TOP_NAME_COMPARATOR);
+			mAvatarList->sort();
+		}
 		break;
 	default :
 		llwarns << "Unrecognized sort order for " << mAvatarList->getName() << llendl;
@@ -317,7 +331,7 @@ void LLParticipantList::sort()
 
 void LLParticipantList::addAvatarIDExceptAgent(std::vector<LLUUID>& existing_list, const LLUUID& avatar_id)
 {
-	if (gAgent.getID() == avatar_id) return;
+	if (mExcludeAgent && gAgent.getID() == avatar_id) return;
 
 	existing_list.push_back(avatar_id);
 	adjustParticipant(avatar_id);
diff --git a/indra/newview/llparticipantlist.h b/indra/newview/llparticipantlist.h
index bc6c6c2b50..72c413d188 100644
--- a/indra/newview/llparticipantlist.h
+++ b/indra/newview/llparticipantlist.h
@@ -229,6 +229,12 @@ class LLParticipantList
 		LLParticipantListMenu*    mParticipantListMenu;
 
 		EParticipantSortOrder	mSortOrder;
+		/*
+		 * This field manages an adding  a new avatar_id in the mAvatarList
+		 * If true, then agent_id wont  be added into mAvatarList
+		 * Also by default this field is controlling a sort procedure, @c sort() 
+		 */
+		bool mExcludeAgent;
 
 		// boost::connections
 		boost::signals2::connection mAvatarListDoubleClickConnection;
-- 
cgit v1.2.3


From 55ff23cdad73882fdbf0a4959c1ca8fbf6ada315 Mon Sep 17 00:00:00 2001
From: Andrew Polunin <apolunin@productengine.com>
Date: Fri, 18 Dec 2009 15:47:21 +0200
Subject: implemented major task EXT-3469 Make timestamp disappear instead of
 covering avatar name while IM floater is being resized

--HG--
branch : product-engine
---
 indra/newview/llchathistory.cpp | 37 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 36 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index ee60df1b4b..fc8dc0ff8f 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -202,6 +202,8 @@ public:
 			userName->setValue(SL);
 		}
 
+		mMinUserNameWidth = style_params.font.getValueFromBlock()->getWidth(userName->getWText().c_str()) + PADDING;
+
 		setTimeField(chat);
 		
 		LLAvatarIconCtrl* icon = getChild<LLAvatarIconCtrl>("avatar_icon");
@@ -218,7 +220,37 @@ public:
 			icon->setValue(LLSD("SL_Logo"));
 		}
 
-	} 
+	}
+
+	/*virtual*/ void draw()
+	{
+		LLTextEditor* user_name = getChild<LLTextEditor>("user_name");
+		LLTextBox* time_box = getChild<LLTextBox>("time_box");
+
+		LLRect user_name_rect = user_name->getRect();
+		S32 user_name_width = user_name_rect.getWidth();
+		S32 time_box_width = time_box->getRect().getWidth();
+
+		if (time_box->getVisible() && user_name_width <= mMinUserNameWidth)
+		{
+			time_box->setVisible(FALSE);
+
+			user_name_rect.mRight += time_box_width;
+			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight());
+			user_name->setRect(user_name_rect);
+		}
+
+		if (!time_box->getVisible() && user_name_width > mMinUserNameWidth + time_box_width)
+		{
+			user_name_rect.mRight -= time_box_width;
+			user_name->reshape(user_name_rect.getWidth(), user_name_rect.getHeight());
+			user_name->setRect(user_name_rect);
+
+			time_box->setVisible(TRUE);
+		}
+
+		LLPanel::draw();
+	}
 
 	void nameUpdatedCallback(const LLUUID& id,const std::string& first,const std::string& last,BOOL is_group)
 	{
@@ -228,6 +260,8 @@ public:
 		mLastName = last;
 	}
 protected:
+	static const S32 PADDING = 20;
+
 	void showContextMenu(S32 x,S32 y)
 	{
 		if(mSourceType == CHAT_SOURCE_SYSTEM)
@@ -307,6 +341,7 @@ protected:
 	std::string			mLastName;
 	std::string			mFrom;
 
+	S32					mMinUserNameWidth;
 };
 
 
-- 
cgit v1.2.3


From f3a92bfc17762c7f0ade6b93f27d7a499031e463 Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Fri, 18 Dec 2009 15:58:37 +0200
Subject: implemented major task (EXT-3354) Add "unread message" counters for
 IM sessions in the IM well window

- IM Well Window's chiclets now have counters and count IMs from 1 to "99+"
- IM Well Window's items can resize on appearance of chiclet's counter or speaker indicator

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp                        | 125 +++++++++++++++------
 indra/newview/llchiclet.h                          |  59 ++++++----
 indra/newview/llsyswellwindow.cpp                  |  12 ++
 indra/newview/llsyswellwindow.h                    |   2 +
 .../skins/default/xui/en/panel_activeim_row.xml    |   4 +-
 5 files changed, 147 insertions(+), 55 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 5695f7cac1..1bdbdb6b82 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -66,7 +66,8 @@ static LLDefaultChildRegistry::Register<LLInvOfferChiclet> t7("chiclet_offer");
 
 static const LLRect CHICLET_RECT(0, 25, 25, 0);
 static const LLRect CHICLET_ICON_RECT(0, 22, 22, 0);
-static const LLRect VOICE_INDICATOR_RECT(25, 25, 45, 0);
+static const LLRect VOICE_INDICATOR_RECT(50, 25, 70, 0);
+static const LLRect COUNTER_RECT(25, 25, 50, 0);
 static const S32	OVERLAY_ICON_SHIFT = 2;	// used for shifting of an overlay icon for new massages in a chiclet
 
 // static
@@ -170,6 +171,7 @@ LLSysWellChiclet::~LLSysWellChiclet()
 
 void LLSysWellChiclet::setCounter(S32 counter)
 {
+	// note same code in LLChicletNotificationCounterCtrl::setCounter(S32 counter)
 	std::string s_count;
 	if(counter != 0)
 	{
@@ -427,7 +429,7 @@ LLIMChiclet::LLIMChiclet(const LLIMChiclet::Params& p)
 	// shift an icon a little bit to the right and up corner of a chiclet
 	overlay_icon_rect.translate(OVERLAY_ICON_SHIFT, OVERLAY_ICON_SHIFT);
 
-	setShowCounter(false);
+	enableCounterControl(false);
 }
 
 void LLIMChiclet::setShowSpeaker(bool show)
@@ -440,30 +442,87 @@ void LLIMChiclet::setShowSpeaker(bool show)
 		onChicletSizeChanged();		
 	}
 }
+
+void LLIMChiclet::enableCounterControl(bool enable) 
+{
+	mCounterEnabled = enable;
+	if(!enable)
+	{
+		LLChiclet::setShowCounter(false);
+	}
+}
+
+void LLIMChiclet::setShowCounter(bool show)
+{
+	if(!mCounterEnabled)
+	{
+		return;
+	}
+
+	bool needs_resize = getShowCounter() != show;
+	if(needs_resize)
+	{		
+		LLChiclet::setShowCounter(show);
+		toggleCounterControl();
+		onChicletSizeChanged();		
+	}
+}
+
 void LLIMChiclet::initSpeakerControl()
 {
 	// virtual
 }
 
-void LLIMChiclet::toggleSpeakerControl()
+void LLIMChiclet::setRequiredWidth()
 {
-	LLRect speaker_rect = mSpeakerCtrl->getRect();
-	S32 required_width = getRect().getWidth();
+	bool show_speaker = getShowSpeaker();
+	bool show_counter = getShowCounter();
+	S32 required_width = CHICLET_RECT.getWidth();
 
-	if(getShowSpeaker())
+	if (show_counter)
 	{
-		required_width = required_width + speaker_rect.getWidth();
-		initSpeakerControl();		
+		required_width += COUNTER_RECT.getWidth();
 	}
-	else
+	if (show_speaker)
 	{
-		required_width = required_width - speaker_rect.getWidth();
-	}
-	
+		required_width += VOICE_INDICATOR_RECT.getWidth();
+	} 
+
 	reshape(required_width, getRect().getHeight());
+}
+
+void LLIMChiclet::toggleSpeakerControl()
+{
+	if(getShowSpeaker())
+	{
+		if(getShowCounter())
+		{
+			mSpeakerCtrl->setRect(VOICE_INDICATOR_RECT);
+		}
+		else
+		{
+			mSpeakerCtrl->setRect(COUNTER_RECT);
+		}
+		initSpeakerControl();		
+	}
+
+	setRequiredWidth();
 	mSpeakerCtrl->setVisible(getShowSpeaker());
 }
 
+void LLIMChiclet::setCounter(S32 counter)
+{
+	mCounterCtrl->setCounter(counter);
+	setShowCounter(counter);
+	setShowNewMessagesIcon(counter);
+}
+
+void LLIMChiclet::toggleCounterControl()
+{
+	setRequiredWidth();
+	mCounterCtrl->setVisible(getShowCounter());
+}
+
 void LLIMChiclet::setShowNewMessagesIcon(bool show)
 {
 	if(mNewMessagesIcon)
@@ -564,6 +623,7 @@ LLIMP2PChiclet::Params::Params()
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
 	unread_notifications.mouse_opaque(false);
+	unread_notifications.rect(COUNTER_RECT);
 	unread_notifications.visible(false);
 
 	speaker.name("speaker");
@@ -602,12 +662,6 @@ LLIMP2PChiclet::LLIMP2PChiclet(const Params& p)
 	mSpeakerCtrl->setVisible(getShowSpeaker());
 }
 
-void LLIMP2PChiclet::setCounter(S32 counter)
-{
-	mCounterCtrl->setCounter(counter);
-	setShowNewMessagesIcon(counter);
-}
-
 void LLIMP2PChiclet::initSpeakerControl()
 {
 	mSpeakerCtrl->setSpeakerId(getOtherParticipantId());
@@ -720,6 +774,7 @@ LLAdHocChiclet::Params::Params()
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
 	unread_notifications.mouse_opaque(false);
+	unread_notifications.rect(COUNTER_RECT);
 	unread_notifications.visible(false);
 
 
@@ -794,12 +849,6 @@ void LLAdHocChiclet::switchToCurrentSpeaker()
 	mSpeakerCtrl->setSpeakerId(speaker_id);
 }
 
-void LLAdHocChiclet::setCounter(S32 counter)
-{
-	mCounterCtrl->setCounter(counter);
-	setShowNewMessagesIcon(counter);
-}
-
 void LLAdHocChiclet::createPopupMenu()
 {
 	if(mPopupMenu)
@@ -871,6 +920,7 @@ LLIMGroupChiclet::Params::Params()
 	unread_notifications.font_halign(LLFontGL::HCENTER);
 	unread_notifications.v_pad(5);
 	unread_notifications.text_color(LLColor4::white);
+	unread_notifications.rect(COUNTER_RECT);
 	unread_notifications.visible(false);
 
 	speaker.name("speaker");
@@ -911,12 +961,6 @@ LLIMGroupChiclet::~LLIMGroupChiclet()
 	LLGroupMgr::getInstance()->removeObserver(this);
 }
 
-void LLIMGroupChiclet::setCounter(S32 counter)
-{
-	mCounterCtrl->setCounter(counter);
-	setShowNewMessagesIcon(counter);
-}
-
 void LLIMGroupChiclet::draw()
 {
 	switchToCurrentSpeaker();
@@ -1608,11 +1652,16 @@ S32 LLChicletPanel::getTotalUnreadIMCount()
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
+LLChicletNotificationCounterCtrl::Params::Params()
+: max_displayed_count("max_displayed_count", MAX_DISPLAYED_COUNT)
+{
+}
 
 LLChicletNotificationCounterCtrl::LLChicletNotificationCounterCtrl(const Params& p)
  : LLTextBox(p)
  , mCounter(0)
  , mInitialWidth(0)
+ , mMaxDisplayedCount(p.max_displayed_count)
 {
 	mInitialWidth = getRect().getWidth();
 }
@@ -1621,11 +1670,21 @@ void LLChicletNotificationCounterCtrl::setCounter(S32 counter)
 {
 	mCounter = counter;
 
-	std::stringstream stream;
-	stream << getCounter();
+	// note same code in LLSysWellChiclet::setCounter(S32 counter)
+	std::string s_count;
+	if(counter != 0)
+	{
+		static std::string more_messages_exist("+");
+		std::string more_messages(counter > mMaxDisplayedCount ? more_messages_exist : "");
+		s_count = llformat("%d%s"
+			, llmin(counter, mMaxDisplayedCount)
+			, more_messages.c_str()
+			);
+	}
+
 	if(mCounter != 0)
 	{
-		setText(stream.str());
+		setText(s_count);
 	}
 	else
 	{
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index d8f641d0f9..529586abb3 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -52,10 +52,19 @@ class LLChicletNotificationCounterCtrl : public LLTextBox
 {
 public:
 
+	static const S32 MAX_DISPLAYED_COUNT = 99;
+
 	struct Params :	public LLInitParam::Block<Params, LLTextBox::Params>
 	{
-		Params()
-		{};
+		/**
+		* Contains maximum displayed count of unread messages. Default value is 9.
+		*
+		* If count is less than "max_unread_count" will be displayed as is.
+		* Otherwise 9+ will be shown (for default value).
+		*/
+		Optional<S32> max_displayed_count;
+
+		Params();
 	};
 
 	/**
@@ -93,6 +102,7 @@ private:
 
 	S32 mCounter;
 	S32 mInitialWidth;
+	S32 mMaxDisplayedCount;
 };
 
 /**
@@ -358,6 +368,32 @@ public:
 	 */
 	virtual void toggleSpeakerControl();
 
+	/**
+	* Sets number of unread messages. Will update chiclet's width if number text 
+	* exceeds size of counter and notify it's parent about size change.
+	*/
+	virtual void setCounter(S32);
+
+	/**
+	* Enables/disables the counter control for a chiclet.
+	*/
+	virtual void enableCounterControl(bool enable);
+
+	/**
+	* Sets show counter state.
+	*/
+	virtual void setShowCounter(bool show);
+
+	/**
+	* Shows/Hides for counter control for a chiclet.
+	*/
+	virtual void toggleCounterControl();
+
+	/**
+	* Sets required width for a chiclet according to visible controls.
+	*/
+	virtual void setRequiredWidth();
+
 	/**
 	 * Shows/hides overlay icon concerning new unread messages.
 	 */
@@ -400,6 +436,7 @@ protected:
 protected:
 
 	bool mShowSpeaker;
+	bool mCounterEnabled;
 
 	LLIconCtrl* mNewMessagesIcon;
 	LLChicletNotificationCounterCtrl* mCounterCtrl;
@@ -452,12 +489,6 @@ public:
 
 	/* virtual */ void setOtherParticipantId(const LLUUID& other_participant_id);
 
-	/**
-	 * Sets number of unread messages. Will update chiclet's width if number text 
-	 * exceeds size of counter and notify it's parent about size change.
-	 */
-	/*virtual*/ void setCounter(S32);
-
 	/**
 	 * Init Speaker Control with speaker's ID
 	 */
@@ -526,12 +557,6 @@ public:
 	 */
 	/*virtual*/ void setSessionId(const LLUUID& session_id);
 
-	/**
-	 * Sets number of unread messages. Will update chiclet's width if number text 
-	 * exceeds size of counter and notify it's parent about size change.
-	 */
-	/*virtual*/ void setCounter(S32);
-
 	/**
 	 * Keep Speaker Control with actual speaker's ID
 	 */
@@ -694,12 +719,6 @@ public:
 	 */
 	/*virtual*/ void changed(LLGroupChange gc);
 
-	/**
-	 * Sets number of unread messages. Will update chiclet's width if number text 
-	 * exceeds size of counter and notify it's parent about size change.
-	 */
-	/*virtual*/ void setCounter(S32);
-
 	/**
 	 * Init Speaker Control with speaker's ID
 	 */
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index 7bff06e9a3..1aeafaea5a 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -350,6 +350,8 @@ LLIMWellWindow::RowPanel::RowPanel(const LLSysWellWindow* parent, const LLUUID&
 	}
 
 	// Initialize chiclet.
+	mChiclet->setChicletSizeChangedCallback(boost::bind(&LLIMWellWindow::RowPanel::onChicletSizeChanged, this, mChiclet, _2));
+	mChiclet->enableCounterControl(true);
 	mChiclet->setCounter(chicletCounter);
 	mChiclet->setSessionId(sessionId);
 	mChiclet->setIMSessionName(name);
@@ -363,6 +365,16 @@ LLIMWellWindow::RowPanel::RowPanel(const LLSysWellWindow* parent, const LLUUID&
 	mCloseBtn->setCommitCallback(boost::bind(&LLIMWellWindow::RowPanel::onClosePanel, this));
 }
 
+//---------------------------------------------------------------------------------
+void LLIMWellWindow::RowPanel::onChicletSizeChanged(LLChiclet* ctrl, const LLSD& param)
+{
+	LLTextBox* text = getChild<LLTextBox>("contact_name");
+	S32 new_text_left = mChiclet->getRect().mRight + CHICLET_HPAD;
+	LLRect text_rect = text->getRect(); 
+	text_rect.mLeft = new_text_left;
+	text->setRect(text_rect);
+}
+
 //---------------------------------------------------------------------------------
 LLIMWellWindow::RowPanel::~RowPanel()
 {
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 5f2c2ba501..0b95c8decd 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -223,6 +223,8 @@ private:
 		void onMouseLeave(S32 x, S32 y, MASK mask);
 		BOOL handleMouseDown(S32 x, S32 y, MASK mask);
 	private:
+		static const S32 CHICLET_HPAD = 10;
+		void onChicletSizeChanged(LLChiclet* ctrl, const LLSD& param);
 		void onClosePanel();
 	public:
 		LLIMChiclet* mChiclet;
diff --git a/indra/newview/skins/default/xui/en/panel_activeim_row.xml b/indra/newview/skins/default/xui/en/panel_activeim_row.xml
index 3ed91cb48f..3416b2369d 100644
--- a/indra/newview/skins/default/xui/en/panel_activeim_row.xml
+++ b/indra/newview/skins/default/xui/en/panel_activeim_row.xml
@@ -69,9 +69,9 @@
 		name="contact_name"
 		layout="topleft"
 		top="10"
-		left_pad="20"
+		left_pad="10"
 		height="14"
-		width="245"
+		width="255"
 		length="1"
 		follows="right|left"
 		use_ellipses="true"
-- 
cgit v1.2.3


From 0b835fe1605be7908f63730575018c2b412b951f Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 18 Dec 2009 16:33:58 +0200
Subject: Fixed Linux build.

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp | 1 +
 indra/newview/llchiclet.h   | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 1bdbdb6b82..84722db384 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -72,6 +72,7 @@ static const S32	OVERLAY_ICON_SHIFT = 2;	// used for shifting of an overlay icon
 
 // static
 const S32 LLChicletPanel::s_scroll_ratio = 10;
+const S32 LLChicletNotificationCounterCtrl::MAX_DISPLAYED_COUNT = 99;
 
 
 boost::signals2::signal<LLChiclet* (const LLUUID&),
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index 529586abb3..c60d06bc97 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -52,7 +52,7 @@ class LLChicletNotificationCounterCtrl : public LLTextBox
 {
 public:
 
-	static const S32 MAX_DISPLAYED_COUNT = 99;
+	static const S32 MAX_DISPLAYED_COUNT;
 
 	struct Params :	public LLInitParam::Block<Params, LLTextBox::Params>
 	{
-- 
cgit v1.2.3


From 7cf60a0d57ef8a483f637341665a1765172721d5 Mon Sep 17 00:00:00 2001
From: Paul Guslisty <pguslisty@productengine.com>
Date: Fri, 18 Dec 2009 16:44:16 +0200
Subject: Fixed normal bug EXT - 2863 ([BSI] Group Chat List Names right click
 do not contain view profile or send private message)

--HG--
branch : product-engine
---
 indra/newview/skins/default/xui/en/menu_participant_list.xml | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/menu_participant_list.xml b/indra/newview/skins/default/xui/en/menu_participant_list.xml
index 449202aaaa..faf33bd1b1 100644
--- a/indra/newview/skins/default/xui/en/menu_participant_list.xml
+++ b/indra/newview/skins/default/xui/en/menu_participant_list.xml
@@ -51,6 +51,8 @@
         <menu_item_call.on_click
          function="Avatar.Pay" />
     </menu_item_call>
+        <menu_item_separator
+         layout="topleft" />
     <menu_item_check
      label="Block Voice"
      layout="topleft"
@@ -64,8 +66,6 @@
          function="ParticipantList.EnableItem"
          parameter="can_block" />
     </menu_item_check>
-        <menu_item_separator
-         layout="topleft" />
     <menu_item_check
      label="Block Text"
      layout="topleft"
@@ -79,6 +79,8 @@
          function="ParticipantList.EnableItem"
          parameter="can_mute_text" />
     </menu_item_check>
+        <menu_item_separator
+         layout="topleft" />
     <context_menu
      label="Moderator Options &gt;"
      layout="topleft"
-- 
cgit v1.2.3


From e0b2fbbf793a9e1dde3ff172687b39581569d7cf Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 18 Dec 2009 17:07:27 +0200
Subject: Fixed stall on startup: removed references to Arrow_Left and
 Arrow_Right images (which don't exist and are unused anyway) from
 textures.xml.

--HG--
branch : product-engine
---
 indra/newview/skins/default/textures/textures.xml | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index 0317d55768..72e7d10623 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -50,8 +50,10 @@ with the same filename but different name
   <texture name="Arrow_Right_Off" file_name="navbar/Arrow_Right_Off.png" preload="true" />
   <texture name="Arrow_Right_Press" file_name="navbar/Arrow_Right_Press.png" preload="true" />
 
+<!--
   <texture name="Arrow_Left" file_name="widgets/Arrow_Left.png" preload="true" />
   <texture name="Arrow_Right" file_name="widgets/Arrow_Right.png" preload="true" />
+-->
 
   <texture name="Arrow_Small_Up" file_name="widgets/Arrow_Small_Up.png" preload="true" />
   <texture name="Arrow_Small_Left" file_name="widgets/Arrow_Small_Left.png" preload="true" />
-- 
cgit v1.2.3


From caab41523da6ca89e6478154184d874cfcb19d79 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Fri, 18 Dec 2009 17:09:05 +0200
Subject: IM floater: Made P2P IM control panel resizable (added "follows"
 flags). This is an additional fix for task EXT-3470.

--HG--
branch : product-engine
---
 .../skins/default/xui/en/panel_im_control_panel.xml       | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
index 0a3fd1699f..30e652befd 100644
--- a/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/default/xui/en/panel_im_control_panel.xml
@@ -21,32 +21,32 @@
      value="Unknown"
      width="100" />
     <button
-     follows="left|top"
+     follows="left|top|right"
      height="20"
      label="Profile"
      name="view_profile_btn"
      width="100" />
     <button
-     follows="left|top"
+     follows="left|top|right"
      height="20"
      label="Add Friend"
      name="add_friend_btn"
      width="100" />
     <button
-     follows="left|top"
+     follows="left|top|right"
      height="20"
      label="Teleport"
      name="teleport_btn"
      width="100" />
    <button
-     follows="left|top"
+     follows="left|top|right"
      height="20"
      label="Share"
      name="share_btn"
      width="100" />
      <!--Removing pay button to save space - will update spec - verified by Erica/Steve -->
  <!--   <button
-     follows="left|top"
+     follows="left|top|right"
      height="20"
      label="Pay"
      name="pay_btn"
@@ -56,13 +56,14 @@
      bg_alpha_color="DkGray2"
      border="false"
      top_pad="10"
-     follows="left|bottom"
+     follows="left|bottom|right"
      height="70"
      left="1"
      name="panel_call_buttons"
      width="109">
         <button
          bottom="10"
+         follows="left|top|right"
          height="20"
          label="Call"
          left_delta="5"
@@ -70,6 +71,7 @@
          width="100" />
         <button
          bottom="35"
+         follows="left|top|right"
          height="20"
          label="Leave Call"
          name="end_call_btn"
@@ -77,6 +79,7 @@
          width="100" />
         <button
          bottom="10"
+         follows="left|top|right"
          height="20"
          label="Voice Controls"
          name="voice_ctrls_btn"
-- 
cgit v1.2.3


From a09c2ba7ac798386b462745774d01c75102beaaf Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 18 Dec 2009 17:15:54 +0200
Subject: Major task EXT-3466 (Add avatars context menu for nearby voice chat
 in the voice control panel)

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp     | 5 ++---
 indra/newview/llparticipantlist.cpp | 9 ++++++---
 2 files changed, 8 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 1f23840109..b1e530d323 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -270,10 +270,9 @@ void LLCallFloater::refreshPartisipantList()
 
 	if (!non_avatar_caller)
 	{
-		bool do_not_use_context_menu_in_local_chat = LLLocalSpeakerMgr::getInstance() != mSpeakerManager;
-		mPaticipants = new LLParticipantList(mSpeakerManager, mAvatarList, do_not_use_context_menu_in_local_chat);
+		mPaticipants = new LLParticipantList(mSpeakerManager, mAvatarList);
 
-		if (!do_not_use_context_menu_in_local_chat)
+		if (LLLocalSpeakerMgr::getInstance() == mSpeakerManager)
 		{
 			mAvatarList->setNoItemsCommentText(getString("no_one_near"));
 		}
diff --git a/indra/newview/llparticipantlist.cpp b/indra/newview/llparticipantlist.cpp
index 1cc08b75da..afb9892d12 100644
--- a/indra/newview/llparticipantlist.cpp
+++ b/indra/newview/llparticipantlist.cpp
@@ -115,13 +115,16 @@ LLParticipantList::~LLParticipantList()
 	// It is possible Participant List will be re-created from LLCallFloater::onCurrentChannelChanged()
 	// See ticket EXT-3427
 	// hide menu before deleting it to stop enable and check handlers from triggering.
-	if(mParticipantListMenu)
+	if(mParticipantListMenu && !LLApp::isExiting())
 	{
 		mParticipantListMenu->hide();
 	}
 
-	delete mParticipantListMenu;
-	mParticipantListMenu = NULL;
+	if (mParticipantListMenu)
+	{
+		delete mParticipantListMenu;
+		mParticipantListMenu = NULL;
+	}
 }
 
 void LLParticipantList::setSpeakingIndicatorsVisible(BOOL visible)
-- 
cgit v1.2.3


From 715b2758caf303c8db86bcca7945172ccdf6f8f7 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 18 Dec 2009 17:21:14 +0200
Subject: reverted current voice channel changes notification time

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

(limited to 'indra/newview')

diff --git a/indra/newview/llvoicechannel.cpp b/indra/newview/llvoicechannel.cpp
index 60a2c3b638..69d2458217 100644
--- a/indra/newview/llvoicechannel.cpp
+++ b/indra/newview/llvoicechannel.cpp
@@ -316,8 +316,6 @@ void LLVoiceChannel::activate()
 		}
 	}
 
-	sCurrentVoiceChannelChangedSignal(this->mSessionID);
-
 	if (mState == STATE_NO_CHANNEL_INFO)
 	{
 		// responsible for setting status to active
@@ -327,6 +325,9 @@ void LLVoiceChannel::activate()
 	{
 		setState(STATE_CALL_STARTED);
 	}
+
+	//do not send earlier, channel should be initialized, should not be in STATE_NO_CHANNEL_INFO state
+	sCurrentVoiceChannelChangedSignal(this->mSessionID);
 }
 
 void LLVoiceChannel::getChannelInfo()
-- 
cgit v1.2.3


From b28de65a8ba2704c5d567f112a51f878b746c802 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 18 Dec 2009 17:27:58 +0200
Subject: corrected outgoing call dialog

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 9e878f8c75..c152ad6c02 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -1279,6 +1279,28 @@ void LLCallDialogManager::onVoiceChannelChanged(const LLUUID &session_id)
 		sPreviousSessionlName = sCurrentSessionlName;
 		sCurrentSessionlName = session->mName;
 	}
+
+	if (LLVoiceChannel::getCurrentVoiceChannel()->getState() == LLVoiceChannel::STATE_CALL_STARTED &&
+		LLVoiceChannel::getCurrentVoiceChannel()->getCallDirection() == LLVoiceChannel::OUTGOING_CALL)
+	{
+		
+		//*TODO get rid of duplicated code
+		LLSD mCallDialogPayload;
+		mCallDialogPayload["session_id"] = sSession->mSessionID;
+		mCallDialogPayload["session_name"] = sSession->mName;
+		mCallDialogPayload["other_user_id"] = sSession->mOtherParticipantID;
+		mCallDialogPayload["old_channel_name"] = sPreviousSessionlName;
+		mCallDialogPayload["state"] = LLVoiceChannel::STATE_CALL_STARTED;
+		mCallDialogPayload["disconnected_channel_name"] = sSession->mName;
+		mCallDialogPayload["session_type"] = sSession->mSessionType;
+
+		LLOutgoingCallDialog* ocd = LLFloaterReg::getTypedInstance<LLOutgoingCallDialog>("outgoing_call", LLOutgoingCallDialog::OCD_KEY);
+		if(ocd)
+		{
+			ocd->show(mCallDialogPayload);
+		}	
+	}
+
 }
 
 void LLCallDialogManager::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction)
-- 
cgit v1.2.3


From f7fadaa807a0652df1da41ac69ab069273605965 Mon Sep 17 00:00:00 2001
From: Igor Borovkov <iborovkov@productengine.com>
Date: Fri, 18 Dec 2009 17:39:01 +0200
Subject: completed EXT-3545 Voice controls panel should auto-open on starting
 call w/o text chat

--HG--
branch : product-engine
---
 indra/newview/llcallfloater.cpp | 24 ++++++++++++++++++------
 indra/newview/llcallfloater.h   |  8 +++++---
 indra/newview/llspeakbutton.cpp |  3 +++
 3 files changed, 26 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 1f23840109..f60f1e59d7 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -42,6 +42,8 @@
 #include "llagentdata.h" // for gAgentID
 #include "llavatarlist.h"
 #include "llbottomtray.h"
+#include "llimfloater.h"
+#include "llfloaterreg.h"
 #include "llparticipantlist.h"
 #include "llspeakers.h"
 #include "lltransientfloatermgr.h"
@@ -95,7 +97,6 @@ LLCallFloater::LLCallFloater(const LLSD& key)
 
 LLCallFloater::~LLCallFloater()
 {
-	mChannelChangedConnection.disconnect();
 	delete mPaticipants;
 	mPaticipants = NULL;
 
@@ -128,8 +129,6 @@ BOOL LLCallFloater::postBuild()
 	// update list for current session
 	updateSession();
 
-	// subscribe to to be notified Voice Channel is changed
-	mChannelChangedConnection = LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::onCurrentChannelChanged, this, _1));
 	return TRUE;
 }
 
@@ -245,6 +244,17 @@ void LLCallFloater::updateSession()
 	
 	refreshPartisipantList();
 	updateModeratorState();
+
+	//show floater for voice calls
+	if (!is_local_chat)
+	{
+		LLIMFloater* im_floater = LLIMFloater::findInstance(session_id);
+		bool show_me = !(im_floater && im_floater->getVisible());
+		if (show_me) 
+		{
+			setVisible(true);
+		}
+	}
 }
 
 void LLCallFloater::refreshPartisipantList()
@@ -281,7 +291,7 @@ void LLCallFloater::refreshPartisipantList()
 	}
 }
 
-void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/)
+void LLCallFloater::sOnCurrentChannelChanged(const LLUUID& /*session_id*/)
 {
 	// Don't update participant list if no channel info is available.
 	// Fix for ticket EXT-3427
@@ -291,9 +301,11 @@ void LLCallFloater::onCurrentChannelChanged(const LLUUID& /*session_id*/)
 	{
 		return;
 	}
+	LLCallFloater* call_floater = LLFloaterReg::getTypedInstance<LLCallFloater>("voice_controls");
+
 	// Forget speaker manager from the previous session to avoid using it after session was destroyed.
-	mSpeakerManager = NULL;
-	updateSession();
+	call_floater->mSpeakerManager = NULL;
+	call_floater->updateSession();
 }
 
 void LLCallFloater::updateTitle()
diff --git a/indra/newview/llcallfloater.h b/indra/newview/llcallfloater.h
index b2288a42ff..f9c9149085 100644
--- a/indra/newview/llcallfloater.h
+++ b/indra/newview/llcallfloater.h
@@ -70,6 +70,8 @@ public:
 	 */
 	/*virtual*/ void onChange();
 
+	static void sOnCurrentChannelChanged(const LLUUID& session_id);
+
 private:
 	typedef enum e_voice_controls_type
 	{
@@ -93,7 +95,9 @@ private:
 	 * Refreshes participant list according to current Voice Channel
 	 */
 	void refreshPartisipantList();
-	void onCurrentChannelChanged(const LLUUID& session_id);
+
+
+	
 	void updateTitle();
 	void initAgentData();
 	void setModeratorMutedVoice(bool moderator_muted);
@@ -108,8 +112,6 @@ private:
 	LLPanel* mAgentPanel;
 	LLOutputMonitorCtrl* mSpeakingIndicator;
 	bool mIsModeratorMutedVoice;
-
-	boost::signals2::connection mChannelChangedConnection;
 };
 
 
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index 5edc4804ca..fd39bde118 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -119,6 +119,9 @@ LLSpeakButton::LLSpeakButton(const Params& p)
 	// never show "muted" because you can't mute yourself
 	mOutputMonitor->setIsMuted(false);
 	mOutputMonitor->setIsAgentControl(true);
+
+	//*TODO find a better place to do that
+	LLVoiceChannel::setCurrentVoiceChannelChangedCallback(boost::bind(&LLCallFloater::sOnCurrentChannelChanged, _1));
 }
 
 LLSpeakButton::~LLSpeakButton()
-- 
cgit v1.2.3


From a0373dc565589f0a2288707ce353f51114464e96 Mon Sep 17 00:00:00 2001
From: Denis Serdjuk <dserduk@productengine.com>
Date: Fri, 18 Dec 2009 17:40:18 +0200
Subject: fixed critical bug EXT-3559   Crash when deleting last Favorites
 entry Cause: An error of invalid array index. Solution: Additional check has
 been added.

--HG--
branch : product-engine
---
 indra/newview/llfavoritesbar.cpp | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index da0a9727a9..64af1225bf 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -657,7 +657,7 @@ void LLFavoritesBarCtrl::updateButtons()
 	int first_changed_item_index = 0;
 	int rightest_point = getRect().mRight - mChevronButton->getRect().getWidth();
 	//lets find first changed button
-	while (child_it != childs->end())
+	while (child_it != childs->end() && first_changed_item_index < mItems.count())
 	{
 		LLFavoriteLandmarkButton* button = dynamic_cast<LLFavoriteLandmarkButton*> (*child_it);
 		if (button)
@@ -675,9 +675,8 @@ void LLFavoritesBarCtrl::updateButtons()
 	}
 	// now first_changed_item_index should contains a number of button that need to change
 
-	if (first_changed_item_index < mItems.count())
+	if (first_changed_item_index <= mItems.count())
 	{
-		mUpdateDropDownItems = true;
 		// Rebuild the buttons only
 		// child_list_t is a linked list, so safe to erase from the middle if we pre-incrament the iterator
 
@@ -722,6 +721,10 @@ void LLFavoritesBarCtrl::updateButtons()
 		// Chevron button
 		if (mFirstDropDownItem < mItems.count())
 		{
+			// if updateButton had been called it means:
+			//or there are some new favorites, or width had been changed
+			// so if we need to display chevron button,  we must update dropdown items too. 
+			mUpdateDropDownItems = true;
 			S32 buttonHGap = 2; // default value
 			buttonXMLNode->getAttributeS32("left", buttonHGap);
 			LLRect rect;
-- 
cgit v1.2.3


From ced655cbfff302f9eef60c572a9f602f1b4c6648 Mon Sep 17 00:00:00 2001
From: Dmitry Oleshko <doleshko@productengine.com>
Date: Fri, 18 Dec 2009 17:56:49 +0200
Subject: partial implementation for major task (EXT-2211) Add textual
 indication (IM messages) about incoming voice calls and reactions on them
 (All types of IMs)

- added notifications for group/adhoc calls

--HG--
branch : product-engine
---
 indra/newview/llimview.cpp | 55 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 46 insertions(+), 9 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llimview.cpp b/indra/newview/llimview.cpp
index 9e878f8c75..a1429d75a2 100644
--- a/indra/newview/llimview.cpp
+++ b/indra/newview/llimview.cpp
@@ -238,15 +238,17 @@ LLIMModel::LLIMSession::LLIMSession(const LLUUID& session_id, const std::string&
 
 void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::EState& old_state, const LLVoiceChannel::EState& new_state, const LLVoiceChannel::EDirection& direction)
 {
-	bool is_p2p_session = dynamic_cast<LLVoiceChannelP2P*>(mVoiceChannel);
-	std::string other_avatar_name;
+	std::string you = LLTrans::getString("You");
+	std::string started_call = LLTrans::getString("started_call");
+	std::string joined_call = LLTrans::getString("joined_call");
+	std::string other_avatar_name = "";
 
-	if(is_p2p_session)
+	switch(mSessionType)
 	{
+	case AVALINE_SESSION:
+		// *TODO: test avaline calls (EXT-2211)
+	case P2P_SESSION:
 		gCacheName->getFullName(mOtherParticipantID, other_avatar_name);
-		std::string you = LLTrans::getString("You");
-		std::string started_call = LLTrans::getString("started_call");
-		std::string joined_call = LLTrans::getString("joined_call");
 
 		if(direction == LLVoiceChannel::INCOMING_CALL)
 		{
@@ -280,10 +282,45 @@ void LLIMModel::LLIMSession::onVoiceChannelStateChanged(const LLVoiceChannel::ES
 		{
 			mSpeakers->update(true);
 		}
-	}
-	else  // group || ad-hoc calls
-	{
 
+		break;
+
+	case GROUP_SESSION:
+	case ADHOC_SESSION:
+		// *TODO: determine call starter's name "other_avatar_name" (EXT-2211)
+		//        decide how to show notifications for a group/adhoc chat already opened
+		//		  for now there is no notification from voice channel for this case
+		if(direction == LLVoiceChannel::INCOMING_CALL)
+		{
+			switch(new_state)
+			{
+			case LLVoiceChannel::STATE_CALL_STARTED :
+				LLIMModel::getInstance()->addMessageSilently(mSessionID, other_avatar_name, mOtherParticipantID, started_call);
+				break;
+			case LLVoiceChannel::STATE_CONNECTED :
+				LLIMModel::getInstance()->addMessageSilently(mSessionID, you, gAgent.getID(), joined_call);
+			default:
+				break;
+			}
+		}
+		else // outgoing call
+		{
+			switch(new_state)
+			{
+			case LLVoiceChannel::STATE_CALL_STARTED :
+				LLIMModel::getInstance()->addMessageSilently(mSessionID, you, gAgent.getID(), started_call);
+				break;
+			default:
+				break;
+			}
+		}
+
+		// Update speakers list when connected
+		if (LLVoiceChannel::STATE_CONNECTED == new_state)
+		{
+			mSpeakers->update(true);
+		}
+		break;
 	}
 }
 
-- 
cgit v1.2.3


From 8083feada1b4dc047e4da995c1a6c695d99d3fc0 Mon Sep 17 00:00:00 2001
From: Dmitry Zaporozhan <dzaporozhan@productengine.com>
Date: Fri, 18 Dec 2009 17:57:45 +0200
Subject: Fixed major bug EXT-3520 - Can't open Group Notices or Attachments.

--HG--
branch : product-engine
---
 indra/newview/llviewermessage.cpp | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index ea40f2aae1..6a31bbfa1e 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1078,6 +1078,28 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 		gCacheName->get(mFromID, mFromGroup, boost::bind(&inventory_offer_mute_callback,_1,_2,_3,_4,this));
 	}
 
+	// *NOTE dzaporozhan
+	// Restored from viewer-1-23 to fix EXT-3520
+	// Saves Group Notice Attachments to inventory.
+	LLMessageSystem* msg = gMessageSystem;
+	msg->newMessageFast(_PREHASH_ImprovedInstantMessage);
+	msg->nextBlockFast(_PREHASH_AgentData);
+	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
+	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
+	msg->nextBlockFast(_PREHASH_MessageBlock);
+	msg->addBOOLFast(_PREHASH_FromGroup, FALSE);
+	msg->addUUIDFast(_PREHASH_ToAgentID, mFromID);
+	msg->addU8Fast(_PREHASH_Offline, IM_ONLINE);
+	msg->addUUIDFast(_PREHASH_ID, mTransactionID);
+	msg->addU32Fast(_PREHASH_Timestamp, NO_TIMESTAMP); // no timestamp necessary
+	std::string name;
+	LLAgentUI::buildFullname(name);
+	msg->addStringFast(_PREHASH_FromAgentName, name);
+	msg->addStringFast(_PREHASH_Message, ""); 
+	msg->addU32Fast(_PREHASH_ParentEstateID, 0);
+	msg->addUUIDFast(_PREHASH_RegionID, LLUUID::null);
+	msg->addVector3Fast(_PREHASH_Position, gAgent.getPositionAgent());
+
 	std::string from_string; // Used in the pop-up.
 	std::string chatHistory_string;  // Used in chat history.
 	
@@ -1129,6 +1151,10 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
 		// Show falls through to accept.
 			
 	case IOR_ACCEPT:
+		msg->addU8Fast(_PREHASH_Dialog, (U8)(mIM + 1));
+		msg->addBinaryDataFast(_PREHASH_BinaryBucket, &(mFolderID.mData), sizeof(mFolderID.mData));
+		msg->sendReliable(mHost);
+
 		//don't spam them if they are getting flooded
 		if (check_offer_throttle(mFromName, true))
 		{
-- 
cgit v1.2.3


From 216726dd23ef925f5bd6cccbdeb09cfca5400a7a Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 18 Dec 2009 18:41:14 +0200
Subject: Implemented major sub-task EXT-3524 (Context menu for IM well)

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp                        | 38 ++++++++++-
 indra/newview/llchiclet.h                          | 10 +++
 indra/newview/llsyswellwindow.cpp                  | 78 ++++++++++++++++++++++
 indra/newview/llsyswellwindow.h                    |  5 +-
 .../skins/default/xui/en/menu_im_well_button.xml   | 16 +++++
 .../newview/skins/default/xui/en/notifications.xml | 11 +++
 6 files changed, 156 insertions(+), 2 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/menu_im_well_button.xml

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 84722db384..21a0381495 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -267,9 +267,45 @@ LLIMWellChiclet::~LLIMWellChiclet()
 	LLIMMgr::getInstance()->removeSessionObserver(this);
 }
 
+void LLIMWellChiclet::onMenuItemClicked(const LLSD& user_data)
+{
+	std::string action = user_data.asString();
+	if("close all" == action)
+	{
+		LLIMWellWindow::getInstance()->closeAll();
+	}
+}
+
+bool LLIMWellChiclet::enableMenuItem(const LLSD& user_data)
+{
+	std::string item = user_data.asString();
+	if (item == "can close all")
+	{
+		return !LLIMWellWindow::getInstance()->isWindowEmpty();
+	}
+	return true;
+}
+
 void LLIMWellChiclet::createMenu()
 {
-	// TODO: implement context menu for IM well
+	if(mContextMenu)
+	{
+		llwarns << "Menu already exists" << llendl;
+		return;
+	}
+
+	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+	registrar.add("IMWellChicletMenu.Action",
+		boost::bind(&LLIMWellChiclet::onMenuItemClicked, this, _2));
+
+	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
+	enable_registrar.add("IMWellChicletMenu.EnableItem",
+		boost::bind(&LLIMWellChiclet::enableMenuItem, this, _2));
+
+	mContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>
+		("menu_im_well_button.xml",
+		 LLMenuGL::sMenuContainer,
+		 LLViewerMenuHolderGL::child_registry_t::instance());
 }
 
 void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index c60d06bc97..259476c2ad 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -860,6 +860,16 @@ public:
 protected:
 	LLIMWellChiclet(const Params& p);
 
+	/**
+	 * Processes clicks on chiclet popup menu.
+	 */
+	virtual void onMenuItemClicked(const LLSD& user_data);
+
+	/**
+	 * Enables chiclet menu items.
+	 */
+	bool enableMenuItem(const LLSD& user_data);
+
 	/**
 	 * Creates menu.
 	 */
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index 1aeafaea5a..26f9824f9c 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -48,6 +48,8 @@
 #include "llchiclet.h"
 #include "lltoastpanel.h"
 #include "llnotificationmanager.h"
+#include "llnotificationsutil.h"
+#include "llspeakers.h"
 
 //---------------------------------------------------------------------------------
 LLSysWellWindow::LLSysWellWindow(const LLSD& key) : LLDockableFloater(NULL, key),
@@ -920,4 +922,80 @@ void LLIMWellWindow::onNewIM(const LLSD& data)
 }
 
 
+void LLIMWellWindow::closeAll()
+{
+	// Generate an ignorable alert dialog if there is an active voice IM sesion
+	bool need_confirmation = false;
+	const LLIMModel& im_model = LLIMModel::instance();
+	std::vector<LLSD> values;
+	mMessageList->getValues(values);
+	for (std::vector<LLSD>::iterator
+			 iter = values.begin(),
+			 iter_end = values.end();
+		 iter != iter_end; ++iter)
+	{
+		LLIMSpeakerMgr* speaker_mgr =  im_model.getSpeakerManager(*iter);
+		if (speaker_mgr && speaker_mgr->isVoiceActive())
+		{
+			need_confirmation = true;
+			break;
+		}
+	}
+	if ( need_confirmation )
+	{
+		//Bring up a confirmation dialog
+		LLNotificationsUtil::add
+			("ConfirmCloseAll", LLSD(), LLSD(),
+			 boost::bind(&LLIMWellWindow::confirmCloseAll, this, _1, _2));
+	}
+	else
+	{
+		closeAllImpl();
+	}
+}
+
+void LLIMWellWindow::closeAllImpl()
+{
+	std::vector<LLSD> values;
+	mMessageList->getValues(values);
+
+	for (std::vector<LLSD>::iterator
+			 iter = values.begin(),
+			 iter_end = values.end();
+		 iter != iter_end; ++iter)
+	{
+		LLPanel* panel = mMessageList->getItemByValue(*iter);
+
+		RowPanel* im_panel = dynamic_cast <RowPanel*> (panel);
+		if (im_panel)
+		{
+			gIMMgr->leaveSession(*iter);
+			continue;
+		}
+
+		ObjectRowPanel* obj_panel = dynamic_cast <ObjectRowPanel*> (panel);
+		if (obj_panel)
+		{
+			LLScriptFloaterManager::instance()
+				.removeNotificationByObjectId(*iter);
+		}
+	}
+}
+
+bool LLIMWellWindow::confirmCloseAll(const LLSD& notification, const LLSD& response)
+{
+	S32 option = LLNotificationsUtil::getSelectedOption(notification, response);
+	switch(option)
+	{
+	case 0:
+		{
+			closeAllImpl();
+			return  true;
+		}
+	default:
+		break;
+	}
+	return false;
+}
+
 // EOF
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 0b95c8decd..6cfa25b84d 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -199,6 +199,8 @@ public:
 	void addIMRow(const LLUUID& session_id);
 	bool hasIMRow(const LLUUID& session_id);
 
+	void closeAll();
+
 protected:
 	/*virtual*/ const std::string& getAnchorViewName() { return IM_WELL_ANCHOR_NAME; }
 
@@ -208,7 +210,8 @@ private:
 
 	void addIMRow(const LLUUID& sessionId, S32 chicletCounter, const std::string& name, const LLUUID& otherParticipantId);
 	void delIMRow(const LLUUID& sessionId);
-
+	bool confirmCloseAll(const LLSD& notification, const LLSD& response);
+	void closeAllImpl();
 
 	/**
 	 * Scrolling row panel.
diff --git a/indra/newview/skins/default/xui/en/menu_im_well_button.xml b/indra/newview/skins/default/xui/en/menu_im_well_button.xml
new file mode 100644
index 0000000000..f8dfba91ff
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_im_well_button.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ layout="topleft"
+ name="IM Well Button Context Menu">
+    <menu_item_call
+     label="Close All"
+     layout="topleft"
+     name="Close All">
+        <menu_item_call.on_click
+         function="IMWellChicletMenu.Action"
+         parameter="close all" />
+        <menu_item_call.on_enable
+         function="IMWellChicletMenu.EnableItem"
+         parameter="can close all" />
+    </menu_item_call>
+</context_menu>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index bcf006f1a0..3320a2dcce 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5761,6 +5761,17 @@ They will be blocked for a few seconds for your security.
     </form>
   </notification>
 
+  <notification
+   icon="alert.tga"
+   name="ConfirmCloseAll"
+   type="alertmodal">
+Are you sure you want to close all IMs?
+    <usetemplate
+     name="okcancelignore"
+     notext="Cancel"
+     yestext="Ok"/>
+  </notification>
+
   <notification icon="notifytip.tga"
 		name="AttachmentSaved" type="notifytip">
 Attachment has been saved.
-- 
cgit v1.2.3


From 8246111b12025bfb5864af354632737f67c32bd1 Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 18 Dec 2009 19:26:49 +0200
Subject: Fixed normal bug EXT-3570 (IM Well Chiclet's counter is not reset
 when IM session with unread IMs is removed)

--HG--
branch : product-engine
---
 indra/newview/llbottomtray.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 6f2e666cc7..ab657e0e99 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -67,6 +67,10 @@ LLBottomTray::LLBottomTray(const LLSD&)
 ,	mGesturePanel(NULL)
 ,	mCamButton(NULL)
 {
+	// Firstly add ourself to IMSession observers, so we catch session events
+	// before chiclets do that.
+	LLIMMgr::getInstance()->addSessionObserver(this);
+
 	mFactoryMap["chat_bar"] = LLCallbackMap(LLBottomTray::createNearbyChatBar, NULL);
 
 	LLUICtrlFactory::getInstance()->buildPanel(this,"panel_bottomtray.xml");
@@ -76,7 +80,6 @@ LLBottomTray::LLBottomTray(const LLSD&)
 	mChicletPanel->setChicletClickedCallback(boost::bind(&LLBottomTray::onChicletClick,this,_1));
 
 	LLUICtrl::CommitCallbackRegistry::defaultRegistrar().add("CameraPresets.ChangeView", boost::bind(&LLFloaterCamera::onClickCameraPresets, _2));
-	LLIMMgr::getInstance()->addSessionObserver(this);
 
 	//managing chiclets for voice calls
 	LLIMModel::getInstance()->addNewMsgCallback(boost::bind(&LLBottomTray::onNewIM, this, _1));
-- 
cgit v1.2.3


From 74f0f4dac0c31201a7c26ec1b6d645de5c8d288d Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Fri, 18 Dec 2009 13:10:38 -0500
Subject: EXT-3575 : Inernal selection spam when nothing selected in some
 folders Default selection will no longer try to select hidden folders.

---
 indra/newview/llfolderview.cpp            |  9 +++++++--
 indra/newview/llfolderviewitem.cpp        | 15 ++++++++++-----
 indra/newview/llpaneloutfitsinventory.cpp |  2 ++
 3 files changed, 19 insertions(+), 7 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp
index 98fae1c2a0..8b05f8614d 100644
--- a/indra/newview/llfolderview.cpp
+++ b/indra/newview/llfolderview.cpp
@@ -330,8 +330,8 @@ BOOL LLFolderView::addFolder( LLFolderViewFolder* folder)
 	else
 	{
 		mFolders.insert(mFolders.begin(), folder);
-		folder->setShowLoadStatus(true);
 	}
+	folder->setShowLoadStatus(true);
 	folder->setOrigin(0, 0);
 	folder->reshape(getRect().getWidth(), 0);
 	folder->setVisible(FALSE);
@@ -774,7 +774,7 @@ void LLFolderView::sanitizeSelection()
 				parent_folder;
 				parent_folder = parent_folder->getParentFolder())
 			{
-				if (parent_folder->potentiallyVisible())
+				if (parent_folder->potentiallyVisible() && !parent_folder->getDontShowInHierarchy())
 				{
 					// give initial selection to first ancestor folder that potentially passes the filter
 					if (!new_selection)
@@ -795,6 +795,11 @@ void LLFolderView::sanitizeSelection()
 		{
 			// nothing selected to start with, so pick "My Inventory" as best guess
 			new_selection = getItemByID(gInventory.getRootFolderID());
+			// ... except if it's hidden from the UI.
+			if (new_selection && new_selection->getDontShowInHierarchy())
+			{
+				new_selection = NULL;
+			}
 		}
 
 		if (new_selection)
diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index 9ae0c9100a..a6be866bb3 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -969,19 +969,24 @@ void LLFolderViewItem::draw()
 		}
 
 
+		font->renderUTF8( mLabel, 0, text_left, y, color,
+				   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+			S32_MAX, getRect().getWidth() - (S32) text_left, &right_x, TRUE);
+		text_left = right_x;
+
 		if ( (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= gSavedSettings.getF32("FolderLoadingMessageWaitTime"))
 			|| (LLInventoryModel::backgroundFetchActive() && mShowLoadStatus) )
 		{
-			std::string load_string = LLTrans::getString("LoadingData") + " ";
+			std::string load_string = " ( " + LLTrans::getString("LoadingData") + " ) ";
 			font->renderUTF8(load_string, 0, text_left, y, sSearchStatusColor,
 					  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, &right_x, FALSE);
 			text_left = right_x;
 		}
 
-		font->renderUTF8( mLabel, 0, text_left, y, color,
-				   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-			S32_MAX, getRect().getWidth() - (S32) text_left, &right_x, TRUE);
-
+		font->renderUTF8( "BLAH BLAH ", 0, right_x, y, sSuffixColor,
+						  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
+						  S32_MAX, S32_MAX, &right_x, FALSE );
+		
 		if (!mLabelSuffix.empty())
 		{
 			font->renderUTF8( mLabelSuffix, 0, right_x, y, sSuffixColor,
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index f9777147b7..8e14074de1 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -80,6 +80,7 @@ BOOL LLPanelOutfitsInventory::postBuild()
 	sShowDebugEditor = gSavedSettings.getBOOL("ShowDebugAppearanceEditor");
 	initTabPanels();
 	initListCommandsHandlers();
+
 	return TRUE;
 }
 
@@ -431,6 +432,7 @@ void LLPanelOutfitsInventory::initTabPanels()
 	mTabPanels[0] = myoutfits_panel;
 	mActivePanel = myoutfits_panel;
 
+
 	LLInventoryPanel *cof_panel = getChild<LLInventoryPanel>("cof_accordionpanel");
 	cof_panel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS);
 	mTabPanels[1] = cof_panel;
-- 
cgit v1.2.3


From c624407ea791b61942694f456c8e3d7c5837716f Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Fri, 18 Dec 2009 13:13:28 -0500
Subject: EXT-3567 : My Inventory shows as loading even when Library is loading

This reformats "Loading... Inventory" into "Inventory (Loading...)"
Took out accidental debug checkin.
---
 indra/newview/llfolderviewitem.cpp | 4 ----
 1 file changed, 4 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index a6be866bb3..cf3a126aef 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -983,10 +983,6 @@ void LLFolderViewItem::draw()
 			text_left = right_x;
 		}
 
-		font->renderUTF8( "BLAH BLAH ", 0, right_x, y, sSuffixColor,
-						  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
-						  S32_MAX, S32_MAX, &right_x, FALSE );
-		
 		if (!mLabelSuffix.empty())
 		{
 			font->renderUTF8( mLabelSuffix, 0, right_x, y, sSuffixColor,
-- 
cgit v1.2.3


From c8c890021696ff468df4acd30b9f3c573e4af9ae Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Fri, 18 Dec 2009 14:08:17 -0500
Subject: EXT-3567 : My Inventory shows as loading even when Library is loading

Fixed some highlight formatting issues.
---
 indra/newview/llfolderviewitem.cpp | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llfolderviewitem.cpp b/indra/newview/llfolderviewitem.cpp
index cf3a126aef..bfd9d6dca7 100644
--- a/indra/newview/llfolderviewitem.cpp
+++ b/indra/newview/llfolderviewitem.cpp
@@ -972,15 +972,13 @@ void LLFolderViewItem::draw()
 		font->renderUTF8( mLabel, 0, text_left, y, color,
 				   LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW,
 			S32_MAX, getRect().getWidth() - (S32) text_left, &right_x, TRUE);
-		text_left = right_x;
 
 		if ( (mIsLoading && mTimeSinceRequestStart.getElapsedTimeF32() >= gSavedSettings.getF32("FolderLoadingMessageWaitTime"))
 			|| (LLInventoryModel::backgroundFetchActive() && mShowLoadStatus) )
 		{
 			std::string load_string = " ( " + LLTrans::getString("LoadingData") + " ) ";
-			font->renderUTF8(load_string, 0, text_left, y, sSearchStatusColor,
+			font->renderUTF8(load_string, 0, right_x, y, sSearchStatusColor,
 					  LLFontGL::LEFT, LLFontGL::BOTTOM, LLFontGL::NORMAL, LLFontGL::NO_SHADOW, S32_MAX, S32_MAX, &right_x, FALSE);
-			text_left = right_x;
 		}
 
 		if (!mLabelSuffix.empty())
-- 
cgit v1.2.3


From 5962d8804f19105d8f98372606745e3f9ec0bc27 Mon Sep 17 00:00:00 2001
From: Palmer Truelson <palmer@lindenlab.com>
Date: Fri, 18 Dec 2009 13:28:23 -0600
Subject: ext-3386 Fix for day cycle crash and xui cleanup

Reviewed by Richard
---
 .../default/xui/en/floater_day_cycle_options.xml   | 108 ++++++---------------
 1 file changed, 30 insertions(+), 78 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
index 35f3e643c3..8c5af2283d 100644
--- a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
+++ b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
@@ -65,11 +65,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12am"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left="8"
              name="WL12am"
@@ -80,11 +78,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL3am"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL3am"
@@ -95,11 +91,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL6am"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL6am"
@@ -110,11 +104,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL9am"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL9amHash"
@@ -125,11 +117,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12pm"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL12pmHash"
@@ -140,11 +130,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL3pm"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL3pm"
@@ -155,11 +143,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL6pm"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL6pm"
@@ -170,11 +156,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL9pm"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL9pm"
@@ -185,11 +169,9 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12am2"
              follows="left|top|right"
-             height="6"
+             height="16"
              layout="topleft"
              left_pad="10"
              name="WL12am2"
@@ -200,9 +182,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12amHash"
              follows="left|top|right"
              font="SansSerif"
              height="14"
@@ -210,135 +190,119 @@
              left="20"
              name="WL12amHash"
              top="54"
-             width="4">
+             width="6">
                 |
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL3amHash"
              follows="left|top|right"
              font="SansSerif"
              height="11"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL3amHash"
              top_delta="3"
-             width="4">
+             width="6">
                 I
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL6amHash"
              follows="left|top|right"
              font="SansSerif"
              height="14"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL6amHash"
              top_delta="-3"
-             width="4">
+             width="6">
                 |
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL9amHash"
              follows="left|top|right"
              font="SansSerif"
              height="11"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL9amHash2"
              top_delta="3"
-             width="4">
+             width="6">
                 I
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12pmHash"
              follows="left|top|right"
              font="SansSerif"
              height="14"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL12pmHash2"
              top_delta="-3"
-             width="4">
+             width="6">
                 |
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL3pmHash"
              follows="left|top|right"
              font="SansSerif"
              height="11"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL3pmHash"
              top_delta="3"
-             width="4">
+             width="6">
                 I
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL6pmHash"
              follows="left|top|right"
              font="SansSerif"
              height="14"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL6pmHash"
              top_delta="-3"
-             width="4">
+             width="6">
                 |
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL9pmHash"
              follows="left|top|right"
              font="SansSerif"
              height="11"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL9pmHash"
              top_delta="3"
-             width="4">
+             width="6">
                 I
             </text>
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WL12amHash2"
              follows="left|top|right"
              font="SansSerif"
              height="14"
              layout="topleft"
-             left_pad="61"
+             left_pad="59"
              name="WL12amHash2"
              top_delta="-3"
-             width="4">
+             width="6">
                 |
             </text>
             <button
@@ -346,9 +310,9 @@
              label="Add Key"
              label_selected="Add Key"
              layout="topleft"
-             left="550"
+             left="555"
              name="WLAddKey"
-             top="20"
+             top="30"
              width="80" />
             <button
              height="20"
@@ -362,9 +326,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="DayCycleText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -378,9 +340,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="DayCycleText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -424,9 +384,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="WLCurKeyTimeText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -456,9 +414,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="DayCycleText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -481,9 +437,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="DayCycleText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -542,9 +496,7 @@
             <text
              type="string"
              length="1"
-             bg_visible="true"
              border_visible="true"
-             control_name="DayCycleText"
              follows="left|top|right"
              font="SansSerif"
              height="16"
@@ -560,7 +512,7 @@
              label="Play"
              label_selected="Play"
              layout="topleft"
-             left_delta="0"
+             left_delta="60"
              name="WLAnimSky"
              top_pad="5"
              width="50" />
@@ -581,7 +533,7 @@
              left_pad="5"
              name="WLUseLindenTime"
              top_delta="0"
-             width="140" />
+             width="150" />
             <button
              height="20"
              label="Save Test Day"
-- 
cgit v1.2.3


From 0bc84f40b414edd6aacf32fc930e3f2d352f4c4e Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Fri, 18 Dec 2009 14:40:24 -0500
Subject: For EXT-3579: removed unhelpful 'try again' from gesture loading
 failure.

---
 indra/newview/skins/default/xui/en/notifications.xml | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index bcf006f1a0..99debc7473 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4328,7 +4328,6 @@ Hmm. Gesture [NAME] is missing from the database.
    name="UnableToLoadGesture"
    type="notifytip">
 Unable to load gesture [NAME].
-Please try again.
   </notification>
 
   <notification
-- 
cgit v1.2.3


From be2a8983134e7caba1b45037c368dc15060edcba Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Fri, 18 Dec 2009 14:50:14 -0500
Subject: EXT-2203 : Wear btn is enabled when Quick Look Selector is empty

Partial fix.  Changed filter behavior so that non-default is properly detected if filtering for non-objects.
---
 indra/newview/llinventoryfilter.cpp | 4 +++-
 indra/newview/llinventoryfilter.h   | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llinventoryfilter.cpp b/indra/newview/llinventoryfilter.cpp
index 522edd0cb5..b4dcb566e4 100644
--- a/indra/newview/llinventoryfilter.cpp
+++ b/indra/newview/llinventoryfilter.cpp
@@ -218,6 +218,7 @@ std::string::size_type LLInventoryFilter::getStringMatchOffset() const
 BOOL LLInventoryFilter::isNotDefault() const
 {
 	return mFilterOps.mFilterObjectTypes != mDefaultFilterOps.mFilterObjectTypes 
+		|| mFilterOps.mFilterTypes != FILTERTYPE_OBJECT
 		|| mFilterSubString.size() 
 		|| mFilterOps.mPermissions != mDefaultFilterOps.mPermissions
 		|| mFilterOps.mMinDate != mDefaultFilterOps.mMinDate 
@@ -227,7 +228,8 @@ BOOL LLInventoryFilter::isNotDefault() const
 
 BOOL LLInventoryFilter::isActive() const
 {
-	return mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL 
+	return mFilterOps.mFilterObjectTypes != 0xffffffffffffffffULL
+		|| mFilterOps.mFilterTypes != FILTERTYPE_OBJECT
 		|| mFilterSubString.size() 
 		|| mFilterOps.mPermissions != PERM_NONE 
 		|| mFilterOps.mMinDate != time_min()
diff --git a/indra/newview/llinventoryfilter.h b/indra/newview/llinventoryfilter.h
index 5ca77cb26a..b01554edc8 100644
--- a/indra/newview/llinventoryfilter.h
+++ b/indra/newview/llinventoryfilter.h
@@ -162,8 +162,8 @@ private:
 		FilterOps();
 		U32 			mFilterTypes;
 
-		U64				mFilterObjectTypes; // For _ITEM
-		U64				mFilterCategoryTypes; // For _ITEM
+		U64				mFilterObjectTypes; // For _OBJECT
+		U64				mFilterCategoryTypes; // For _CATEGORY
 		LLUUID      	mFilterUUID; // for UUID
 
 		time_t			mMinDate;
-- 
cgit v1.2.3


From 43d918b7f3fe5652a20fe55bb09d27746d79a965 Mon Sep 17 00:00:00 2001
From: "Nyx (Neal Orman)" <nyx@lindenlab.com>
Date: Fri, 18 Dec 2009 15:04:21 -0500
Subject: EXT-3123 cannot decline save for newly created wearable

We weren't marking the initially loaded parameters of a
wearable created through the appearance editor as "saved"
so the client thought the wearable was dirty when it wasn't.
Added a call to mark all parameters as saved right before
sending the wearable to the server.

reviewed by Bigpapi
---
 indra/newview/llwearable.h       | 2 +-
 indra/newview/llwearablelist.cpp | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h
index 82d388ab7e..7a579b248e 100644
--- a/indra/newview/llwearable.h
+++ b/indra/newview/llwearable.h
@@ -127,6 +127,7 @@ public:
 	void 				setClothesColor( S32 te, const LLColor4& new_color, BOOL upload_bake );
 
 	void				revertValues();
+	void				saveValues();
 
 	BOOL				isOnTop() const;
 
@@ -143,7 +144,6 @@ private:
 
 	void 				createLayers(S32 te);
 	void 				createVisualParams();
-	void				saveValues();
 	void				syncImages(te_map_t &src, te_map_t &dst);
 	void				destroyTextures();			
 
diff --git a/indra/newview/llwearablelist.cpp b/indra/newview/llwearablelist.cpp
index bd7619f7e5..5636256856 100644
--- a/indra/newview/llwearablelist.cpp
+++ b/indra/newview/llwearablelist.cpp
@@ -249,9 +249,13 @@ LLWearable* LLWearableList::createNewWearable( EWearableType type )
 	wearable->setParamsToDefaults();
 	wearable->setTexturesToDefaults();
 
+	//mark all values (params & images) as saved
+	wearable->saveValues();
+
 	// Send to the dataserver
 	wearable->saveNewAsset();
 
+
 	return wearable;
 }
 
-- 
cgit v1.2.3


From e0f5ce4ecff112857a03b5f9b61d29ef86209d24 Mon Sep 17 00:00:00 2001
From: Loren Shih <seraph@lindenlab.com>
Date: Fri, 18 Dec 2009 15:18:40 -0500
Subject: EXT-3582 : My Outfits populates from library if I delete my last
 outfit

Now checking if this is the first time a user has logged into viewer2.0, via checking against COF existence.

This doesn't quite work yet because something before LLAgentWearables is also looking up COF.
---
 indra/newview/llagentwearables.cpp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 1e2eac39eb..454e547155 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -875,6 +875,9 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 	LLUUID agent_id;
 	gMessageSystem->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id);
 
+	const BOOL is_first_time_in_viewer2_0 = (gInventory.findCategoryUUIDForType(LLFolderType::FT_CURRENT_OUTFIT, FALSE) == LLUUID::null);
+
+
 	LLVOAvatar* avatar = gAgent.getAvatarObject();
 	if (avatar && (agent_id == avatar->getID()))
 	{
@@ -954,7 +957,8 @@ void LLAgentWearables::processAgentInitialWearablesUpdate(LLMessageSystem* mesgs
 			gInventory.addObserver(outfit);
 		}
 		
-		gAgentWearables.populateMyOutfitsFolder();
+		if (is_first_time_in_viewer2_0)
+			gAgentWearables.populateMyOutfitsFolder();
 	}
 }
 
-- 
cgit v1.2.3


From f6d8165445f1051adcd9e52ef7ab20836373aa5a Mon Sep 17 00:00:00 2001
From: brad kittenbrink <brad@lindenlab.com>
Date: Fri, 18 Dec 2009 13:21:41 -0800
Subject: Fix for extra llplugin/ on the path of the imageformats plugins.
 reviewed by mani.

---
 indra/newview/viewer_manifest.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index d69a771bbb..d2859db296 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -345,7 +345,7 @@ class WindowsManifest(ViewerManifest):
                 self.path("ssleay32.dll")
 
                 # For WebKit/Qt plugin runtimes (image format plugins)
-                if self.prefix(src="imageformats", dst="llplugin/imageformats"):
+                if self.prefix(src="imageformats", dst="imageformats"):
                     self.path("qgifd4.dll")
                     self.path("qicod4.dll")
                     self.path("qjpegd4.dll")
@@ -368,7 +368,7 @@ class WindowsManifest(ViewerManifest):
                 self.path("ssleay32.dll")
 
                 # For WebKit/Qt plugin runtimes (image format plugins)
-                if self.prefix(src="imageformats", dst="llplugin/imageformats"):
+                if self.prefix(src="imageformats", dst="imageformats"):
                     self.path("qgif4.dll")
                     self.path("qico4.dll")
                     self.path("qjpeg4.dll")
-- 
cgit v1.2.3


From 8e8b14971855bf023f4f6af0a4ece13bb444b778 Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Fri, 18 Dec 2009 17:05:45 -0500
Subject: fix for osx compile error

---
 indra/newview/llchathistory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index fc8dc0ff8f..7a83299dac 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -202,7 +202,7 @@ public:
 			userName->setValue(SL);
 		}
 
-		mMinUserNameWidth = style_params.font.getValueFromBlock()->getWidth(userName->getWText().c_str()) + PADDING;
+		mMinUserNameWidth = style_params.font()->getWidth(userName->getWText().c_str()) + PADDING;
 
 		setTimeField(chat);
 		
-- 
cgit v1.2.3


From 4964ca39f14531630ffbfece593f8ba9cdc86e4e Mon Sep 17 00:00:00 2001
From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com>
Date: Fri, 18 Dec 2009 17:35:28 -0500
Subject: EXT-2703: tex preview bug ui/buttons weren't visible or would appear
 off floater

---
 indra/newview/llpreviewtexture.cpp                             | 4 ++--
 indra/newview/skins/default/xui/en/floater_preview_texture.xml | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llpreviewtexture.cpp b/indra/newview/llpreviewtexture.cpp
index 26694ac433..26368fb0a8 100644
--- a/indra/newview/llpreviewtexture.cpp
+++ b/indra/newview/llpreviewtexture.cpp
@@ -422,8 +422,8 @@ void LLPreviewTexture::updateDimensions()
 	if (mShowKeepDiscard || mCopyToInv) {  //mCopyToInvBtn
 
 		// add space for buttons
-		view_height += 	BTN_HEIGHT + CLIENT_RECT_VPAD;
-		button_height = BTN_HEIGHT + PREVIEW_PAD;
+		view_height += 	(BTN_HEIGHT + CLIENT_RECT_VPAD) * 3;
+		button_height = (BTN_HEIGHT + PREVIEW_PAD) * 3;
 	}
 
 	view_width = llmax(view_width, getMinWidth());
diff --git a/indra/newview/skins/default/xui/en/floater_preview_texture.xml b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
index abc30c335c..552902d1d9 100644
--- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml
+++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml
@@ -4,13 +4,13 @@
  auto_tile="true"
  can_resize="true"
  follows="left|top"
- height="313"
+ height="350"
  layout="topleft"
- min_height="120"
- min_width="320"
+ min_height="200"
+ min_width="370"
  name="preview_texture"
  help_topic="preview_texture"
- width="320">
+ width="370">
    <floater.string
      name="Title">
         Texture: [NAME]
-- 
cgit v1.2.3


From 90548a46ce49f510a29f0490fea1e3853d6affc3 Mon Sep 17 00:00:00 2001
From: Steve Bennetts <steve@lindenlab.com>
Date: Fri, 18 Dec 2009 14:42:41 -0800
Subject: Additional HTTP Texture tunining * Important fix in
 lltexturefetch.cpp where a 'partial' resonse was incorrectly setting
 mHaveAllData.

---
 indra/newview/lltexturefetch.cpp  | 22 ++++++++++++++++------
 indra/newview/lltextureview.cpp   | 28 ++++++++++++++--------------
 indra/newview/llviewerdisplay.cpp |  2 +-
 indra/newview/llviewertexture.cpp |  3 ++-
 4 files changed, 33 insertions(+), 22 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index 83e0b53960..e80dafe245 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -158,7 +158,7 @@ public:
 
 	void callbackHttpGet(const LLChannelDescriptors& channels,
 						 const LLIOPipe::buffer_ptr_t& buffer,
-						 bool last_block, bool success);
+						 bool partial, bool success);
 	void callbackCacheRead(bool success, LLImageFormatted* image,
 						   S32 imagesize, BOOL islocal);
 	void callbackCacheWrite(bool success);
@@ -316,7 +316,7 @@ public:
 			if (HTTP_OK <= status &&  status < HTTP_MULTIPLE_CHOICES)
 			{
 				success = true;
-				if (HTTP_PARTIAL_CONTENT == status) // partial information (i.e. last block)
+				if (HTTP_PARTIAL_CONTENT == status) // partial information
 				{
 					partial = true;
 				}
@@ -882,8 +882,18 @@ bool LLTextureFetchWorker::doWork(S32 param)
 				++mHTTPFailCount;
 				if (mHTTPFailCount >= max_attempts)
 				{
-					resetFormattedData();
-					return true; // failed
+					if (cur_size > 0)
+					{
+						// Use available data
+						mLoadedDiscard = mFormattedImage->getDiscardLevel();
+						mState = DECODE_IMAGE;
+						return false; 
+					}
+					else
+					{
+						resetFormattedData();
+						return true; // failed
+					}
 				}
 				else
 				{
@@ -1207,7 +1217,7 @@ bool LLTextureFetchWorker::processSimulatorPackets()
 
 void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
 										   const LLIOPipe::buffer_ptr_t& buffer,
-										   bool last_block, bool success)
+										   bool partial, bool success)
 {
 	LLMutexLock lock(&mWorkMutex);
 
@@ -1236,7 +1246,7 @@ void LLTextureFetchWorker::callbackHttpGet(const LLChannelDescriptors& channels,
 			mBuffer = new U8[data_size];
 			buffer->readAfter(channels.in(), NULL, mBuffer, data_size);
 			mBufferSize += data_size;
-			if (data_size < mRequestedSize || last_block == true)
+			if (data_size < mRequestedSize && mRequestedDiscard == 0)
 			{
 				mHaveAllData = TRUE;
 			}
diff --git a/indra/newview/lltextureview.cpp b/indra/newview/lltextureview.cpp
index 9573b884eb..98731f90f4 100644
--- a/indra/newview/lltextureview.cpp
+++ b/indra/newview/lltextureview.cpp
@@ -412,7 +412,7 @@ void LLGLTexMemBar::draw()
 	F32 cache_usage = (F32)BYTES_TO_MEGA_BYTES(LLAppViewer::getTextureCache()->getUsage()) ;
 	F32 cache_max_usage = (F32)BYTES_TO_MEGA_BYTES(LLAppViewer::getTextureCache()->getMaxUsage()) ;
 	S32 line_height = (S32)(LLFontGL::getFontMonospace()->getLineHeight() + .5f);
-	S32 h_offset = (S32)((texture_bar_height + 2.5f) * mTextureView->mNumTextureBars + 2.5f);
+	S32 v_offset = (S32)((texture_bar_height + 2.5f) * mTextureView->mNumTextureBars + 2.5f);
 	//----------------------------------------------------------------------------
 	LLGLSUIDefault gls_ui;
 	LLColor4 text_color(1.f, 1.f, 1.f, 0.75f);
@@ -428,14 +428,14 @@ void LLGLTexMemBar::draw()
 					cache_usage, cache_max_usage);
 	//, cache_entries, cache_max_entries
 
-	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, h_offset + line_height*3,
+	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*3,
 											 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 
 	//----------------------------------------------------------------------------
 #if 0
 	S32 bar_left = 400;
 	S32 bar_width = 200;
-	S32 top = line_height*3 - 2 + h_offset;
+	S32 top = line_height*3 - 2 + v_offset;
 	S32 bottom = top - 6;
 	S32 left = bar_left;
 	S32 right = left + bar_width;
@@ -494,18 +494,18 @@ void LLGLTexMemBar::draw()
 #endif
 	//----------------------------------------------------------------------------
 
-	text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d IW:%d RAW:%d HTP:%d CRE:%d",
+	text = llformat("Textures: %d Fetch: %d(%d) Pkts:%d(%d) Cache R/W: %d/%d LFS:%d RAW:%d HTP:%d DEC:%d CRE:%d",
 					gTextureList.getNumImages(),
 					LLAppViewer::getTextureFetch()->getNumRequests(), LLAppViewer::getTextureFetch()->getNumDeletes(),
 					LLAppViewer::getTextureFetch()->mPacketCount, LLAppViewer::getTextureFetch()->mBadPacketCount, 
 					LLAppViewer::getTextureCache()->getNumReads(), LLAppViewer::getTextureCache()->getNumWrites(),
 					LLLFSThread::sLocal->getPending(),
-					LLAppViewer::getImageDecodeThread()->getPending(), 
 					LLImageRaw::sRawImageCount,
 					LLAppViewer::getTextureFetch()->getNumHTTPRequests(),
+					LLAppViewer::getImageDecodeThread()->getPending(), 
 					gTextureList.mCreateTextureList.size());
 
-	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, h_offset + line_height*2,
+	LLFontGL::getFontMonospace()->renderUTF8(text, 0, 0, v_offset + line_height*2,
 									 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 
 
@@ -515,40 +515,40 @@ void LLGLTexMemBar::draw()
 	color = bandwidth > max_bandwidth ? LLColor4::red : bandwidth > max_bandwidth*.75f ? LLColor4::yellow : text_color;
 	color[VALPHA] = text_color[VALPHA];
 	text = llformat("BW:%.0f/%.0f",bandwidth, max_bandwidth);
-	LLFontGL::getFontMonospace()->renderUTF8(text, 0, left, line_height*2,
+	LLFontGL::getFontMonospace()->renderUTF8(text, 0, left, v_offset + line_height*2,
 											 color, LLFontGL::LEFT, LLFontGL::TOP);
 	
 	S32 dx1 = 0;
 	if (LLAppViewer::getTextureFetch()->mDebugPause)
 	{
-		LLFontGL::getFontMonospace()->renderUTF8(std::string("!"), 0, title_x1, h_offset + line_height,
+		LLFontGL::getFontMonospace()->renderUTF8(std::string("!"), 0, title_x1, v_offset + line_height,
 										 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 		dx1 += 8;
 	}
 	if (mTextureView->mFreezeView)
 	{
-		LLFontGL::getFontMonospace()->renderUTF8(std::string("*"), 0, title_x1, h_offset + line_height,
+		LLFontGL::getFontMonospace()->renderUTF8(std::string("*"), 0, title_x1, v_offset + line_height,
 										 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 		dx1 += 8;
 	}
 	if (mTextureView->mOrderFetch)
 	{
-		LLFontGL::getFontMonospace()->renderUTF8(title_string1b, 0, title_x1+dx1, h_offset + line_height,
+		LLFontGL::getFontMonospace()->renderUTF8(title_string1b, 0, title_x1+dx1, v_offset + line_height,
 										 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 	}
 	else
 	{	
-		LLFontGL::getFontMonospace()->renderUTF8(title_string1a, 0, title_x1+dx1, h_offset + line_height,
+		LLFontGL::getFontMonospace()->renderUTF8(title_string1a, 0, title_x1+dx1, v_offset + line_height,
 										 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 	}
 	
-	LLFontGL::getFontMonospace()->renderUTF8(title_string2, 0, title_x2, h_offset + line_height,
+	LLFontGL::getFontMonospace()->renderUTF8(title_string2, 0, title_x2, v_offset + line_height,
 									 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 
-	LLFontGL::getFontMonospace()->renderUTF8(title_string3, 0, title_x3, h_offset + line_height,
+	LLFontGL::getFontMonospace()->renderUTF8(title_string3, 0, title_x3, v_offset + line_height,
 									 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 
-	LLFontGL::getFontMonospace()->renderUTF8(title_string4, 0, title_x4, h_offset + line_height,
+	LLFontGL::getFontMonospace()->renderUTF8(title_string4, 0, title_x4, v_offset + line_height,
 									 text_color, LLFontGL::LEFT, LLFontGL::TOP);
 }
 
diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp
index 68a5147bc7..3dac0ee452 100644
--- a/indra/newview/llviewerdisplay.cpp
+++ b/indra/newview/llviewerdisplay.cpp
@@ -713,7 +713,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot)
 			gBumpImageList.updateImages();  // must be called before gTextureList version so that it's textures are thrown out first.
 
 			F32 max_image_decode_time = 0.050f*gFrameIntervalSeconds; // 50 ms/second decode time
-			max_image_decode_time = llclamp(max_image_decode_time, 0.001f, 0.005f ); // min 1ms/frame, max 5ms/frame)
+			max_image_decode_time = llclamp(max_image_decode_time, 0.002f, 0.005f ); // min 2ms/frame, max 5ms/frame)
 			gTextureList.updateImages(max_image_decode_time);
 
 			//remove dead textures from GL
diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp
index b45148a186..ae9db94000 100644
--- a/indra/newview/llviewertexture.cpp
+++ b/indra/newview/llviewertexture.cpp
@@ -1497,7 +1497,8 @@ F32 LLViewerFetchedTexture::calcDecodePriority()
 		{
 			priority += 10000000.f;
 		}		
-		else if(mAdditionalDecodePriority > 0.0f)
+
+		if(mAdditionalDecodePriority > 0.0f)
 		{
 			// 1-9
 			S32 additional_priority = (S32)(1.0f + mAdditionalDecodePriority*8.0f + .5f); // round
-- 
cgit v1.2.3


From 06019288c181ad986e854969214a5c6ec3ba69b2 Mon Sep 17 00:00:00 2001
From: Steve Bennetts <steve@lindenlab.com>
Date: Fri, 18 Dec 2009 17:14:53 -0800
Subject: HTTP Texture tuning: * Changed download rate update frequency *
 Updated network bandwidth preferences to be 100 Kbps - 10 Mbps instead of 50
 Kbps - 1.5 MBps

---
 indra/newview/llviewerstats.cpp                                | 4 ++--
 indra/newview/skins/default/xui/en/panel_preferences_setup.xml | 8 ++++----
 2 files changed, 6 insertions(+), 6 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llviewerstats.cpp b/indra/newview/llviewerstats.cpp
index a1a3bc6d6a..8059f866ba 100644
--- a/indra/newview/llviewerstats.cpp
+++ b/indra/newview/llviewerstats.cpp
@@ -656,9 +656,9 @@ void update_statistics(U32 frame_count)
 	gObjectBits = 0;
 //	gDecodedBits = 0;
 
-	// Only update texture stats ones per second so that they are less noisy
+	// Only update texture stats periodically so that they are less noisy
 	{
-		static const F32 texture_stats_freq = 1.f;
+		static const F32 texture_stats_freq = 10.f;
 		static LLFrameTimer texture_stats_timer;
 		if (texture_stats_timer.getElapsedTimeF32() >= texture_stats_freq)
 		{
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index 83dc7cd854..34bd6fb091 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -98,12 +98,12 @@
      decimal_digits="0"
      follows="left|top"
      height="15"
-     increment="10"
-     initial_value="50"
+     increment="100"
+     initial_value="500"
      layout="topleft"
      left_delta="150"
-     max_val="1500"
-     min_val="50"
+     max_val="10000"
+     min_val="100"
      name="max_bandwidth"
      top_delta="0"
      width="180" />
-- 
cgit v1.2.3


From e148eebff38acd2c552971c4f24bea79d477dcec Mon Sep 17 00:00:00 2001
From: gabriel <none@none>
Date: Sat, 19 Dec 2009 01:57:42 +0000
Subject: Added a first view script limits floater

reviewed by Mani
---
 indra/newview/CMakeLists.txt                       |    4 +-
 indra/newview/llfloaterland.cpp                    |   22 +
 indra/newview/llfloaterland.h                      |    7 +-
 indra/newview/llfloaterscriptlimits.cpp            | 1061 ++++++++++++++++++++
 indra/newview/llfloaterscriptlimits.h              |  259 +++++
 indra/newview/llfloatertopobjects.cpp              |    5 +-
 indra/newview/llviewerfloaterreg.cpp               |    2 +
 indra/newview/llviewerregion.cpp                   |    3 +
 .../skins/default/xui/en/floater_about_land.xml    |   12 +-
 .../skins/default/xui/en/floater_customize.xml     |   10 +
 .../skins/default/xui/en/floater_script_limits.xml |   20 +
 .../xui/en/panel_script_limits_my_avatar.xml       |   62 ++
 .../xui/en/panel_script_limits_region_memory.xml   |  122 +++
 indra/newview/skins/default/xui/en/strings.xml     |   53 +
 14 files changed, 1636 insertions(+), 6 deletions(-)
 create mode 100644 indra/newview/llfloaterscriptlimits.cpp
 create mode 100644 indra/newview/llfloaterscriptlimits.h
 create mode 100644 indra/newview/skins/default/xui/en/floater_script_limits.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml

(limited to 'indra/newview')

diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 8953682fae..9f7b782320 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -200,6 +200,7 @@ set(viewer_SOURCE_FILES
     llfloaterregioninfo.cpp
     llfloaterreporter.cpp
     llfloaterscriptdebug.cpp
+    llfloaterscriptlimits.cpp
     llfloatersearch.cpp
     llfloatersellland.cpp
     llfloatersettingsdebug.cpp
@@ -696,7 +697,7 @@ set(viewer_HEADER_FILES
     llfloatermediasettings.h
     llfloatermemleak.h
     llfloaternamedesc.h
-        llfloaternearbymedia.h
+    llfloaternearbymedia.h
     llfloaternotificationsconsole.h
     llfloateropenobject.h
     llfloaterparcel.h
@@ -709,6 +710,7 @@ set(viewer_HEADER_FILES
     llfloaterregioninfo.h
     llfloaterreporter.h
     llfloaterscriptdebug.h
+    llfloaterscriptlimits.h
     llfloatersearch.h
     llfloatersellland.h
     llfloatersettingsdebug.h
diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp
index 81322abbf7..02884575b0 100644
--- a/indra/newview/llfloaterland.cpp
+++ b/indra/newview/llfloaterland.cpp
@@ -52,6 +52,7 @@
 #include "llfloateravatarpicker.h"
 #include "llfloaterauction.h"
 #include "llfloatergroups.h"
+#include "llfloaterscriptlimits.h"
 #include "llavataractions.h"
 #include "lllineeditor.h"
 #include "llnamelistctrl.h"
@@ -148,6 +149,10 @@ void send_parcel_select_objects(S32 parcel_local_id, U32 return_type,
 	msg->sendReliable(region->getHost());
 }
 
+LLParcel* LLFloaterLand::getCurrentSelectedParcel()
+{
+	return mParcel->getParcel();
+};
 
 //static
 LLPanelLandObjects* LLFloaterLand::getCurrentPanelLandObjects()
@@ -421,6 +426,9 @@ BOOL LLPanelLandGeneral::postBuild()
 	mBtnBuyLand = getChild<LLButton>("Buy Land...");
 	mBtnBuyLand->setClickedCallback(onClickBuyLand, (void*)&BUY_PERSONAL_LAND);
 	
+	mBtnScriptLimits = getChild<LLButton>("Scripts...");
+	mBtnScriptLimits->setClickedCallback(onClickScriptLimits, this);
+	
 	mBtnBuyGroupLand = getChild<LLButton>("Buy For Group...");
 	mBtnBuyGroupLand->setClickedCallback(onClickBuyLand, (void*)&BUY_GROUP_LAND);
 	
@@ -508,6 +516,7 @@ void LLPanelLandGeneral::refresh()
 		mTextDwell->setText(LLStringUtil::null);
 
 		mBtnBuyLand->setEnabled(FALSE);
+		mBtnScriptLimits->setEnabled(FALSE);
 		mBtnBuyGroupLand->setEnabled(FALSE);
 		mBtnReleaseLand->setEnabled(FALSE);
 		mBtnReclaimLand->setEnabled(FALSE);
@@ -715,6 +724,8 @@ void LLPanelLandGeneral::refresh()
 
 		mBtnBuyLand->setEnabled(
 			LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
+		mBtnScriptLimits->setEnabled(true);
+//			LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, false));
 		mBtnBuyGroupLand->setEnabled(
 			LLViewerParcelMgr::getInstance()->canAgentBuyParcel(parcel, true));
 
@@ -854,6 +865,17 @@ void LLPanelLandGeneral::onClickBuyLand(void* data)
 	LLViewerParcelMgr::getInstance()->startBuyLand(*for_group);
 }
 
+// static
+void LLPanelLandGeneral::onClickScriptLimits(void* data)
+{
+	LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
+	LLParcel* parcel = panelp->mParcel->getParcel();
+	if(parcel != NULL)
+	{
+		LLFloaterReg::showInstance("script_limits");
+	}
+}
+
 BOOL LLPanelLandGeneral::enableDeedToGroup(void* data)
 {
 	LLPanelLandGeneral* panelp = (LLPanelLandGeneral*)data;
diff --git a/indra/newview/llfloaterland.h b/indra/newview/llfloaterland.h
index f7fb978c2a..eb47fbe15b 100644
--- a/indra/newview/llfloaterland.h
+++ b/indra/newview/llfloaterland.h
@@ -70,6 +70,7 @@ class LLPanelLandAccess;
 class LLPanelLandBan;
 class LLPanelLandRenters;
 class LLPanelLandCovenant;
+class LLParcel;
 
 class LLFloaterLand
 :	public LLFloater
@@ -80,7 +81,9 @@ public:
 
 	static LLPanelLandObjects* getCurrentPanelLandObjects();
 	static LLPanelLandCovenant* getCurrentPanelLandCovenant();
-
+	
+	LLParcel* getCurrentSelectedParcel();
+	
 	virtual void onOpen(const LLSD& key);
 	virtual BOOL postBuild();
 
@@ -146,6 +149,7 @@ public:
 	static BOOL enableDeedToGroup(void*);
 	static void onClickDeed(void*);
 	static void onClickBuyLand(void* data);
+	static void onClickScriptLimits(void* data);
 	static void onClickRelease(void*);
 	static void onClickReclaim(void*);
 	static void onClickBuyPass(void* deselect_when_done);
@@ -215,6 +219,7 @@ protected:
 	LLTextBox*		mTextDwell;
 
 	LLButton*		mBtnBuyLand;
+	LLButton*		mBtnScriptLimits;
 	LLButton*		mBtnBuyGroupLand;
 
 	// these buttons share the same location, but
diff --git a/indra/newview/llfloaterscriptlimits.cpp b/indra/newview/llfloaterscriptlimits.cpp
new file mode 100644
index 0000000000..3042fbc6ec
--- /dev/null
+++ b/indra/newview/llfloaterscriptlimits.cpp
@@ -0,0 +1,1061 @@
+/** 
+ * @file llfloaterscriptlimits.cpp
+ * @author Gabriel Lee
+ * @brief Implementation of the region info and controls floater and panels.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ * 
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#include "llviewerprecompiledheaders.h"
+#include "llfloaterscriptlimits.h"
+
+#include "llsdutil.h"
+#include "llsdutil_math.h"
+#include "message.h"
+
+#include "llagent.h"
+#include "llfloateravatarpicker.h"
+#include "llfloaterland.h"
+#include "llfloaterreg.h"
+#include "llregionhandle.h"
+#include "llscrolllistctrl.h"
+#include "llscrolllistitem.h"
+#include "llparcel.h"
+#include "lltabcontainer.h"
+#include "lltracker.h"
+#include "lltrans.h"
+#include "llviewercontrol.h"
+#include "lluictrlfactory.h"
+#include "llviewerparcelmgr.h"
+#include "llviewerregion.h"
+#include "llviewerwindow.h"
+
+///----------------------------------------------------------------------------
+/// LLFloaterScriptLimits
+///----------------------------------------------------------------------------
+
+// due to server side bugs the full summary display is not possible
+// until they are fixed this define creates a simple version of the
+// summary which only shows available & correct information
+#define USE_SIMPLE_SUMMARY
+
+LLFloaterScriptLimits::LLFloaterScriptLimits(const LLSD& seed)
+	: LLFloater(seed)
+{
+}
+
+BOOL LLFloaterScriptLimits::postBuild()
+{
+	// a little cheap and cheerful - if there's an about land panel open default to showing parcel info,
+	// otherwise default to showing attachments (avatar appearance)
+	bool selectParcelPanel = false;
+	
+	LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
+	if(instance)
+	{
+		if(instance->isShown())
+		{
+			selectParcelPanel = true;
+		}
+	}
+
+	mTab = getChild<LLTabContainer>("scriptlimits_panels");
+
+	// contruct the panels
+	LLPanelScriptLimitsRegionMemory* panel_memory;
+	panel_memory = new LLPanelScriptLimitsRegionMemory;
+	mInfoPanels.push_back(panel_memory);
+	
+	LLUICtrlFactory::getInstance()->buildPanel(panel_memory, "panel_script_limits_region_memory.xml");
+	mTab->addTabPanel(panel_memory);
+
+	LLPanelScriptLimitsRegionURLs* panel_urls = new LLPanelScriptLimitsRegionURLs;
+	mInfoPanels.push_back(panel_urls);
+	LLUICtrlFactory::getInstance()->buildPanel(panel_urls, "panel_script_limits_region_urls.xml");
+	mTab->addTabPanel(panel_urls);
+
+	LLPanelScriptLimitsAttachment* panel_attachments = new LLPanelScriptLimitsAttachment;
+	mInfoPanels.push_back(panel_attachments);
+	LLUICtrlFactory::getInstance()->buildPanel(panel_attachments, "panel_script_limits_my_avatar.xml");
+	mTab->addTabPanel(panel_attachments);
+
+	if(selectParcelPanel)
+	{
+		mTab->selectTab(0);
+	}
+	else
+	{
+		mTab->selectTab(2);
+	}
+
+	return TRUE;
+}
+
+LLFloaterScriptLimits::~LLFloaterScriptLimits()
+{
+}
+
+// public
+void LLFloaterScriptLimits::refresh()
+{
+	for(info_panels_t::iterator iter = mInfoPanels.begin();
+		iter != mInfoPanels.end(); ++iter)
+	{
+		(*iter)->refresh();
+	}
+}
+
+
+///----------------------------------------------------------------------------
+// Base class for panels
+///----------------------------------------------------------------------------
+
+LLPanelScriptLimitsInfo::LLPanelScriptLimitsInfo()
+	: LLPanel()
+{
+}
+
+
+// virtual
+BOOL LLPanelScriptLimitsInfo::postBuild()
+{
+	refresh();
+	return TRUE;
+}
+
+// virtual 
+void LLPanelScriptLimitsInfo::updateChild(LLUICtrl* child_ctr)
+{
+}
+
+///----------------------------------------------------------------------------
+// Responders
+///----------------------------------------------------------------------------
+
+void fetchScriptLimitsRegionInfoResponder::result(const LLSD& content)
+{
+	// at this point we have an llsd which should contain ether one or two urls to the services we want.
+	// first we look for the details service:
+	if(content.has("ScriptResourceDetails"))
+	{
+		LLHTTPClient::get(content["ScriptResourceDetails"], new fetchScriptLimitsRegionDetailsResponder(mInfo));
+	}
+	else
+	{
+		LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+		if(!instance)
+		{
+			llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
+		}
+		else
+		{
+
+// temp - only show info if we get details - there's nothing to show if not until the sim gets fixed
+#ifdef USE_SIMPLE_SUMMARY
+
+			LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+			LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+			std::string msg = LLTrans::getString("ScriptLimitsRequestDontOwnParcel");
+			panel_memory->childSetValue("loading_text", LLSD(msg));
+			LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+			panel_urls->childSetValue("loading_text", LLSD(msg));
+			
+			// intentional early out as we dont want the resource summary if we are using the "simple summary"
+			// and the details are missing
+			return;
+#endif
+		}
+	}
+
+	// then the summary service:
+	if(content.has("ScriptResourceSummary"))
+	{
+		LLHTTPClient::get(content["ScriptResourceSummary"], new fetchScriptLimitsRegionSummaryResponder(mInfo));
+	}
+}
+
+void fetchScriptLimitsRegionInfoResponder::error(U32 status, const std::string& reason)
+{
+	llinfos << "Error from responder " << reason << llendl;
+}
+
+void fetchScriptLimitsRegionSummaryResponder::result(const LLSD& content)
+{
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(!instance)
+	{
+		llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
+	}
+	else
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		panel_memory->setRegionSummary(content);
+		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+		panel_urls->setRegionSummary(content);
+	}
+}
+
+void fetchScriptLimitsRegionSummaryResponder::error(U32 status, const std::string& reason)
+{
+	llinfos << "Error from responder " << reason << llendl;
+}
+
+void fetchScriptLimitsRegionDetailsResponder::result(const LLSD& content)
+{
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+
+	if(!instance)
+	{
+		llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
+	}
+	else
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		panel_memory->setRegionDetails(content);
+		
+		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+		panel_urls->setRegionDetails(content);
+	}
+}
+
+void fetchScriptLimitsRegionDetailsResponder::error(U32 status, const std::string& reason)
+{
+	llinfos << "Error from responder " << reason << llendl;
+}
+
+void fetchScriptLimitsAttachmentInfoResponder::result(const LLSD& content)
+{
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+
+	if(!instance)
+	{
+		llinfos << "Failed to get llfloaterscriptlimits instance" << llendl;
+	}
+	else
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsAttachment* panel = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
+		panel->setAttachmentDetails(content);
+	}
+}
+
+void fetchScriptLimitsAttachmentInfoResponder::error(U32 status, const std::string& reason)
+{
+	llinfos << "Error from responder " << reason << llendl;
+}
+
+///----------------------------------------------------------------------------
+// Memory Panel
+///----------------------------------------------------------------------------
+
+BOOL LLPanelScriptLimitsRegionMemory::getLandScriptResources()
+{
+	LLSD body;
+	std::string url = gAgent.getRegion()->getCapability("LandResources");
+	if (!url.empty())
+	{
+		body["parcel_id"] = mParcelId;
+
+		LLSD info;
+		info["parcel_id"] = mParcelId;
+		LLHTTPClient::post(url, body, new fetchScriptLimitsRegionInfoResponder(info));
+				
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+void LLPanelScriptLimitsRegionMemory::processParcelInfo(const LLParcelData& parcel_data)
+{
+	mParcelId = parcel_data.parcel_id;
+
+	if(!getLandScriptResources())
+	{
+		std::string msg_error = LLTrans::getString("ScriptLimitsRequestError");
+		childSetValue("loading_text", LLSD(msg_error));
+	}
+	else
+	{
+		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
+		childSetValue("loading_text", LLSD(msg_waiting));
+	}	
+}
+
+void LLPanelScriptLimitsRegionMemory::setParcelID(const LLUUID& parcel_id)
+{
+	if (!parcel_id.isNull())
+	{
+		LLRemoteParcelInfoProcessor::getInstance()->addObserver(parcel_id, this);
+		LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id);
+	}
+	else
+	{
+		std::string msg_error = LLTrans::getString("ScriptLimitsRequestError");
+		childSetValue("loading_text", LLSD(msg_error));
+	}
+}
+
+// virtual
+void LLPanelScriptLimitsRegionMemory::setErrorStatus(U32 status, const std::string& reason)
+{
+	llerrs << "Can't handle remote parcel request."<< " Http Status: "<< status << ". Reason : "<< reason<<llendl;
+}
+
+void LLPanelScriptLimitsRegionMemory::setRegionDetails(LLSD content)
+{
+	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+
+	S32 number_parcels = content["parcels"].size();
+
+	LLStringUtil::format_map_t args_parcels;
+	args_parcels["[PARCELS]"] = llformat ("%d", number_parcels);
+	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
+	childSetValue("parcels_listed", LLSD(msg_parcels));
+
+	S32 total_objects = 0;
+	S32 total_size = 0;
+
+	for(S32 i = 0; i < number_parcels; i++)
+	{
+		std::string parcel_name = content["parcels"][i]["name"].asString();
+		
+		S32 number_objects = content["parcels"][i]["objects"].size();
+		for(S32 j = 0; j < number_objects; j++)
+		{
+			S32 size = content["parcels"][i]["objects"][j]["resources"]["memory"].asInteger() / 1024;
+			total_size += size;
+			
+			std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
+			LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
+
+			LLSD element;
+
+			element["id"] = task_id;
+			element["columns"][0]["column"] = "size";
+			element["columns"][0]["value"] = llformat("%d", size);
+			element["columns"][0]["font"] = "SANSSERIF";
+			element["columns"][1]["column"] = "name";
+			element["columns"][1]["value"] = name_buf;
+			element["columns"][1]["font"] = "SANSSERIF";
+			element["columns"][2]["column"] = "owner";
+			element["columns"][2]["value"] = "";
+			element["columns"][2]["font"] = "SANSSERIF";
+			element["columns"][3]["column"] = "location";
+			element["columns"][3]["value"] = parcel_name;
+			element["columns"][3]["font"] = "SANSSERIF";
+
+			list->addElement(element);
+			mObjectListIDs.push_back(task_id);
+			total_objects++;
+		}
+	}
+	
+	mParcelMemoryUsed =total_size;
+	mGotParcelMemoryUsed = TRUE;
+	populateParcelMemoryText();
+}
+
+void LLPanelScriptLimitsRegionMemory::populateParcelMemoryText()
+{
+	if(mGotParcelMemoryUsed && mGotParcelMemoryMax)
+	{
+#ifdef USE_SIMPLE_SUMMARY
+		LLStringUtil::format_map_t args_parcel_memory;
+		args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
+		std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsedSimple", args_parcel_memory);
+		childSetValue("memory_used", LLSD(msg_parcel_memory));
+#else
+		S32 parcel_memory_available = mParcelMemoryMax - mParcelMemoryUsed;
+	
+		LLStringUtil::format_map_t args_parcel_memory;
+		args_parcel_memory["[COUNT]"] = llformat ("%d", mParcelMemoryUsed);
+		args_parcel_memory["[MAX]"] = llformat ("%d", mParcelMemoryMax);
+		args_parcel_memory["[AVAILABLE]"] = llformat ("%d", parcel_memory_available);
+		std::string msg_parcel_memory = LLTrans::getString("ScriptLimitsMemoryUsed", args_parcel_memory);
+		childSetValue("memory_used", LLSD(msg_parcel_memory));
+#endif
+
+		childSetValue("loading_text", LLSD(std::string("")));
+	}
+}
+
+void LLPanelScriptLimitsRegionMemory::setRegionSummary(LLSD content)
+{
+	if(content["summary"]["available"][0]["type"].asString() == std::string("memory"))
+	{
+		mParcelMemoryMax = content["summary"]["available"][0]["amount"].asInteger();
+		mGotParcelMemoryMax = TRUE;
+	}
+	else if(content["summary"]["available"][1]["type"].asString() == std::string("memory"))
+	{
+		mParcelMemoryMax = content["summary"]["available"][1]["amount"].asInteger();
+		mGotParcelMemoryMax = TRUE;
+	}
+	else
+	{
+		llinfos << "summary doesn't contain memory info" << llendl;
+		return;
+	}
+/*
+	currently this is broken on the server, so we get this value from the details section
+	and update via populateParcelMemoryText() when both sets of information have been returned
+
+	when the sim is fixed this should be used instead:
+	if(content["summary"]["used"][0]["type"].asString() == std::string("memory"))
+	{
+		mParcelMemoryUsed = content["summary"]["used"][0]["amount"].asInteger();
+		mGotParcelMemoryUsed = TRUE;
+	}
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("memory"))
+	{
+		mParcelMemoryUsed = content["summary"]["used"][1]["amount"].asInteger();
+		mGotParcelMemoryUsed = TRUE;
+	}
+	else
+	{
+		//ERROR!!!
+		return;
+	}*/
+
+	populateParcelMemoryText();
+}
+
+BOOL LLPanelScriptLimitsRegionMemory::postBuild()
+{
+	childSetAction("refresh_list_btn", onClickRefresh, this);
+	childSetAction("highlight_btn", onClickHighlight, this);
+	childSetAction("return_btn", onClickReturn, this);
+		
+	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
+	childSetValue("loading_text", LLSD(msg_waiting));
+	
+	return StartRequestChain();
+}
+
+BOOL LLPanelScriptLimitsRegionMemory::StartRequestChain()
+{
+	LLUUID region_id;
+	
+	LLFloaterLand* instance = LLFloaterReg::getTypedInstance<LLFloaterLand>("about_land");
+	if(!instance)
+	{
+		//this isnt really an error...
+//		llinfos << "Failed to get about land instance" << llendl;
+//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+		childSetValue("loading_text", LLSD(std::string("")));
+		//might have to do parent post build here
+		//if not logic below could use early outs
+		return FALSE;
+	}
+
+	LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+	LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+
+	LLParcel* parcel = instance->getCurrentSelectedParcel();
+	LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion();
+	
+	LLUUID current_region_id = gAgent.getRegion()->getRegionID();
+
+	if ((region) && (parcel))
+	{
+		LLVector3 parcel_center = parcel->getCenterpoint();
+		
+		region_id = region->getRegionID();
+		
+		if(region_id != current_region_id)
+		{
+			std::string msg_wrong_region = LLTrans::getString("ScriptLimitsRequestWrongRegion");
+			childSetValue("loading_text", LLSD(msg_wrong_region));
+			panel_urls->childSetValue("loading_text", LLSD(msg_wrong_region));
+			return FALSE;
+		}
+		
+		LLVector3d pos_global = region->getCenterGlobal();
+		
+		LLSD body;
+		std::string url = region->getCapability("RemoteParcelRequest");
+		if (!url.empty())
+		{
+			body["location"] = ll_sd_from_vector3(parcel_center);
+			if (!region_id.isNull())
+			{
+				body["region_id"] = region_id;
+			}
+			if (!pos_global.isExactlyZero())
+			{
+				U64 region_handle = to_region_handle(pos_global);
+				body["region_handle"] = ll_sd_from_U64(region_handle);
+			}
+			LLHTTPClient::post(url, body, new LLRemoteParcelRequestResponder(getObserverHandle()));
+		}
+		else
+		{
+			llwarns << "Can't get parcel info for script information request" << region_id
+					<< ". Region: "	<< region->getName()
+					<< " does not support RemoteParcelRequest" << llendl;
+					
+			std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+			childSetValue("loading_text", LLSD(msg_waiting));
+			panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
+		}
+	}
+	else
+	{
+		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+		childSetValue("loading_text", LLSD(msg_waiting));
+		panel_urls->childSetValue("loading_text", LLSD(msg_waiting));
+	}
+
+	return LLPanelScriptLimitsInfo::postBuild();
+}
+
+void LLPanelScriptLimitsRegionMemory::clearList()
+{
+	LLCtrlListInterface *list = childGetListInterface("scripts_list");
+	
+	if (list)
+	{
+		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
+	}
+
+	mGotParcelMemoryUsed = FALSE;
+	mGotParcelMemoryMax = FALSE;
+	
+	LLStringUtil::format_map_t args_parcel_memory;
+	std::string msg_empty_string("");
+	childSetValue("memory_used", LLSD(msg_empty_string));
+	childSetValue("parcels_listed", LLSD(msg_empty_string));
+
+	mObjectListIDs.clear();
+}
+
+// static
+void LLPanelScriptLimitsRegionMemory::onClickRefresh(void* userdata)
+{
+	llinfos << "LLPanelRegionGeneralInfo::onClickRefresh" << llendl;
+	
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		panel_memory->clearList();
+
+		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+		panel_urls->clearList();
+		
+		panel_memory->StartRequestChain();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl;
+		return;
+	}
+}
+
+void LLPanelScriptLimitsRegionMemory::showBeacon()
+{	
+/*	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("scripts_list");
+	if (!list) return;
+
+	LLScrollListItem* first_selected = list->getFirstSelected();
+	if (!first_selected) return;
+
+	std::string name = first_selected->getColumn(1)->getValue().asString();
+	std::string pos_string =  first_selected->getColumn(3)->getValue().asString();
+	
+	llinfos << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>" <<llendl;
+	llinfos << "name = " << name << " pos = " << pos_string << llendl;
+
+	F32 x, y, z;
+	S32 matched = sscanf(pos_string.c_str(), "<%g,%g,%g>", &x, &y, &z);
+	if (matched != 3) return;
+
+	LLVector3 pos_agent(x, y, z);
+	LLVector3d pos_global = gAgent.getPosGlobalFromAgent(pos_agent);
+	llinfos << "name = " << name << " pos = " << pos_string << llendl;
+	std::string tooltip("");
+	LLTracker::trackLocation(pos_global, name, tooltip, LLTracker::LOCATION_ITEM);*/
+}
+
+// static
+void LLPanelScriptLimitsRegionMemory::onClickHighlight(void* userdata)
+{
+/*	llinfos << "LLPanelRegionGeneralInfo::onClickHighlight" << llendl;
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		panel->showBeacon();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
+//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+//		panel->childSetValue("loading_text", LLSD(msg_waiting));
+		return;
+	}*/
+}
+
+void LLPanelScriptLimitsRegionMemory::returnObjects()
+{
+/*	llinfos << "started" << llendl;
+	LLMessageSystem *msg = gMessageSystem;
+
+	LLViewerRegion* region = gAgent.getRegion();
+	if (!region) return;
+
+	llinfos << "got region" << llendl;
+	LLCtrlListInterface *list = childGetListInterface("scripts_list");
+	if (!list || list->getItemCount() == 0) return;
+
+	llinfos << "got list" << llendl;
+	std::vector<LLUUID>::iterator id_itor;
+
+	bool start_message = true;
+
+	for (id_itor = mObjectListIDs.begin(); id_itor != mObjectListIDs.end(); ++id_itor)
+	{
+		LLUUID task_id = *id_itor;
+		llinfos << task_id << llendl;
+		if (!list->isSelected(task_id))
+		{
+			llinfos << "not selected" << llendl;
+			// Selected only
+			continue;
+		}
+		llinfos << "selected" << llendl;
+		if (start_message)
+		{
+			msg->newMessageFast(_PREHASH_ParcelReturnObjects);
+			msg->nextBlockFast(_PREHASH_AgentData);
+			msg->addUUIDFast(_PREHASH_AgentID,	gAgent.getID());
+			msg->addUUIDFast(_PREHASH_SessionID,gAgent.getSessionID());
+			msg->nextBlockFast(_PREHASH_ParcelData);
+			msg->addS32Fast(_PREHASH_LocalID, -1); // Whole region
+			msg->addS32Fast(_PREHASH_ReturnType, RT_LIST);
+			start_message = false;
+			llinfos << "start message" << llendl;
+		}
+
+		msg->nextBlockFast(_PREHASH_TaskIDs);
+		msg->addUUIDFast(_PREHASH_TaskID, task_id);
+		llinfos << "added id" << llendl;
+
+		if (msg->isSendFullFast(_PREHASH_TaskIDs))
+		{
+			msg->sendReliable(region->getHost());
+			start_message = true;
+			llinfos << "sent 1" << llendl;
+		}
+	}
+
+	if (!start_message)
+	{
+		msg->sendReliable(region->getHost());
+		llinfos << "sent 2" << llendl;
+	}*/
+}
+
+// static
+void LLPanelScriptLimitsRegionMemory::onClickReturn(void* userdata)
+{
+/*	llinfos << "LLPanelRegionGeneralInfo::onClickReturn" << llendl;
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		panel->returnObjects();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
+//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+//		panel->childSetValue("loading_text", LLSD(msg_waiting));
+		return;
+	}*/
+}
+
+///----------------------------------------------------------------------------
+// URLs Panel
+///----------------------------------------------------------------------------
+
+void LLPanelScriptLimitsRegionURLs::setRegionDetails(LLSD content)
+{
+	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+
+	S32 number_parcels = content["parcels"].size();
+
+	LLStringUtil::format_map_t args_parcels;
+	args_parcels["[PARCELS]"] = llformat ("%d", number_parcels);
+	std::string msg_parcels = LLTrans::getString("ScriptLimitsParcelsOwned", args_parcels);
+	childSetValue("parcels_listed", LLSD(msg_parcels));
+
+	S32 total_objects = 0;
+	S32 total_size = 0;
+
+	for(S32 i = 0; i < number_parcels; i++)
+	{
+		std::string parcel_name = content["parcels"][i]["name"].asString();
+		llinfos << parcel_name << llendl;
+
+		S32 number_objects = content["parcels"][i]["objects"].size();
+		for(S32 j = 0; j < number_objects; j++)
+		{
+			if(content["parcels"][i]["objects"][j]["resources"].has("urls"))
+			{
+				S32 size = content["parcels"][i]["objects"][j]["resources"]["urls"].asInteger();
+				total_size += size;
+				
+				std::string name_buf = content["parcels"][i]["objects"][j]["name"].asString();
+				LLUUID task_id = content["parcels"][i]["objects"][j]["id"].asUUID();
+
+				LLSD element;
+
+				element["id"] = task_id;
+				element["columns"][0]["column"] = "urls";
+				element["columns"][0]["value"] = llformat("%d", size);
+				element["columns"][0]["font"] = "SANSSERIF";
+				element["columns"][1]["column"] = "name";
+				element["columns"][1]["value"] = name_buf;
+				element["columns"][1]["font"] = "SANSSERIF";
+				element["columns"][2]["column"] = "owner";
+				element["columns"][2]["value"] = "";
+				element["columns"][2]["font"] = "SANSSERIF";
+				element["columns"][3]["column"] = "location";
+				element["columns"][3]["value"] = parcel_name;
+				element["columns"][3]["font"] = "SANSSERIF";
+
+				list->addElement(element);
+				mObjectListIDs.push_back(task_id);
+				total_objects++;
+			}
+		}
+	}
+	
+	mParcelURLsUsed =total_size;
+	mGotParcelURLsUsed = TRUE;
+	populateParcelURLsText();
+}
+
+void LLPanelScriptLimitsRegionURLs::populateParcelURLsText()
+{
+	if(mGotParcelURLsUsed && mGotParcelURLsMax)
+	{
+
+#ifdef USE_SIMPLE_SUMMARY
+		LLStringUtil::format_map_t args_parcel_urls;
+		args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
+		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsedSimple", args_parcel_urls);
+		childSetValue("urls_used", LLSD(msg_parcel_urls));
+#else
+		S32 parcel_urls_available = mParcelURLsMax - mParcelURLsUsed;
+
+		LLStringUtil::format_map_t args_parcel_urls;
+		args_parcel_urls["[COUNT]"] = llformat ("%d", mParcelURLsUsed);
+		args_parcel_urls["[MAX]"] = llformat ("%d", mParcelURLsMax);
+		args_parcel_urls["[AVAILABLE]"] = llformat ("%d", parcel_urls_available);
+		std::string msg_parcel_urls = LLTrans::getString("ScriptLimitsURLsUsed", args_parcel_urls);
+		childSetValue("urls_used", LLSD(msg_parcel_urls));
+#endif
+
+		childSetValue("loading_text", LLSD(std::string("")));
+
+	}
+}
+
+void LLPanelScriptLimitsRegionURLs::setRegionSummary(LLSD content)
+{
+	if(content["summary"]["available"][0]["type"].asString() == std::string("urls"))
+	{
+		mParcelURLsMax = content["summary"]["available"][0]["amount"].asInteger();
+		mGotParcelURLsMax = TRUE;
+	}
+	else if(content["summary"]["available"][1]["type"].asString() == std::string("urls"))
+	{
+		mParcelURLsMax = content["summary"]["available"][1]["amount"].asInteger();
+		mGotParcelURLsMax = TRUE;
+	}
+	else
+	{
+		llinfos << "summary contains no url info" << llendl;
+		return;
+	}
+/*
+	currently this is broken on the server, so we get this value from the details section
+	and update via populateParcelMemoryText() when both sets of information have been returned
+
+	when the sim is fixed this should be used instead:
+	if(content["summary"]["used"][0]["type"].asString() == std::string("urls"))
+	{
+		mParcelURLsUsed = content["summary"]["used"][0]["amount"].asInteger();
+		mGotParcelURLsUsed = TRUE;
+	}
+	else if(content["summary"]["used"][1]["type"].asString() == std::string("urls"))
+	{
+		mParcelURLsUsed = content["summary"]["used"][1]["amount"].asInteger();
+		mGotParcelURLsUsed = TRUE;
+	}
+	else
+	{
+		//ERROR!!!
+		return;
+	}*/
+
+	populateParcelURLsText();
+}
+
+BOOL LLPanelScriptLimitsRegionURLs::postBuild()
+{
+	childSetAction("refresh_list_btn", onClickRefresh, this);
+	childSetAction("highlight_btn", onClickHighlight, this);
+	childSetAction("return_btn", onClickReturn, this);
+		
+	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
+	childSetValue("loading_text", LLSD(msg_waiting));
+	return FALSE;
+}
+
+void LLPanelScriptLimitsRegionURLs::clearList()
+{
+	LLCtrlListInterface *list = childGetListInterface("scripts_list");
+
+	if (list)
+	{
+		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
+	}
+
+	mGotParcelURLsUsed = FALSE;
+	mGotParcelURLsMax = FALSE;
+	
+	LLStringUtil::format_map_t args_parcel_urls;
+	std::string msg_empty_string("");
+	childSetValue("urls_used", LLSD(msg_empty_string));
+	childSetValue("parcels_listed", LLSD(msg_empty_string));
+
+	mObjectListIDs.clear();
+}
+
+// static
+void LLPanelScriptLimitsRegionURLs::onClickRefresh(void* userdata)
+{
+	llinfos << "Refresh clicked" << llendl;
+	
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel_memory = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		// use the memory panel to re-request all the info
+		panel_memory->clearList();
+
+		LLPanelScriptLimitsRegionURLs* panel_urls = (LLPanelScriptLimitsRegionURLs*)tab->getChild<LLPanel>("script_limits_region_urls_panel");
+		// but the urls panel to clear itself
+		panel_urls->clearList();
+
+		panel_memory->StartRequestChain();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl;
+		return;
+	}
+}
+
+// static
+void LLPanelScriptLimitsRegionURLs::onClickHighlight(void* userdata)
+{
+/*	llinfos << "Highlight clicked" << llendl;
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		// use the beacon function from the memory panel
+		panel->showBeacon();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
+//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+//		panel->childSetValue("loading_text", LLSD(msg_waiting));
+		return;
+	}*/
+}
+
+// static
+void LLPanelScriptLimitsRegionURLs::onClickReturn(void* userdata)
+{
+/*	llinfos << "Return clicked" << llendl;
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsRegionMemory* panel = (LLPanelScriptLimitsRegionMemory*)tab->getChild<LLPanel>("script_limits_region_memory_panel");
+		// use the return function from the memory panel
+		panel->returnObjects();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after highlight button clicked" << llendl;
+//		std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestError");
+//		panel->childSetValue("loading_text", LLSD(msg_waiting));
+		return;
+	}*/
+}
+
+///----------------------------------------------------------------------------
+// Attachment Panel
+///----------------------------------------------------------------------------
+
+BOOL LLPanelScriptLimitsAttachment::requestAttachmentDetails()
+{
+	LLSD body;
+	std::string url = gAgent.getRegion()->getCapability("AttachmentResources");
+	if (!url.empty())
+	{
+		LLHTTPClient::get(url, body, new fetchScriptLimitsAttachmentInfoResponder());
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+void LLPanelScriptLimitsAttachment::setAttachmentDetails(LLSD content)
+{
+	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("scripts_list");
+	S32 number_attachments = content["attachments"].size();
+
+	for(int i = 0; i < number_attachments; i++)
+	{
+		std::string humanReadableLocation = "";
+		if(content["attachments"][i].has("location"))
+		{
+			std::string actualLocation = content["attachments"][i]["location"];
+			humanReadableLocation = LLTrans::getString(actualLocation.c_str());
+		}
+		
+		S32 number_objects = content["attachments"][i]["objects"].size();
+		for(int j = 0; j < number_objects; j++)
+		{
+			LLUUID task_id = content["attachments"][i]["objects"][j]["id"].asUUID();
+			S32 size = 0;
+			if(content["attachments"][i]["objects"][j]["resources"].has("memory"))
+			{
+				size = content["attachments"][i]["objects"][j]["resources"]["memory"].asInteger();
+			}
+			S32 urls = 0;
+			if(content["attachments"][i]["objects"][j]["resources"].has("urls"))
+			{
+				urls = content["attachments"][i]["objects"][j]["resources"]["urls"].asInteger();
+			}
+			std::string name = content["attachments"][i]["objects"][j]["name"].asString();
+			
+			LLSD element;
+
+			element["id"] = task_id;
+			element["columns"][0]["column"] = "size";
+			element["columns"][0]["value"] = llformat("%d", size);
+			element["columns"][0]["font"] = "SANSSERIF";
+
+			element["columns"][1]["column"] = "urls";
+			element["columns"][1]["value"] = llformat("%d", urls);
+			element["columns"][1]["font"] = "SANSSERIF";
+			
+			element["columns"][2]["column"] = "name";
+			element["columns"][2]["value"] = name;
+			element["columns"][2]["font"] = "SANSSERIF";
+			
+			element["columns"][3]["column"] = "location";
+			element["columns"][3]["value"] = humanReadableLocation;
+			element["columns"][3]["font"] = "SANSSERIF";
+
+			list->addElement(element);
+		}
+	}
+
+	childSetValue("loading_text", LLSD(std::string("")));
+}
+
+BOOL LLPanelScriptLimitsAttachment::postBuild()
+{
+	childSetAction("refresh_list_btn", onClickRefresh, this);
+		
+	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
+	childSetValue("loading_text", LLSD(msg_waiting));
+	return requestAttachmentDetails();
+}
+
+void LLPanelScriptLimitsAttachment::clearList()
+{
+	LLCtrlListInterface *list = childGetListInterface("scripts_list");
+
+	if (list)
+	{
+		list->operateOnAll(LLCtrlListInterface::OP_DELETE);
+	}
+
+	std::string msg_waiting = LLTrans::getString("ScriptLimitsRequestWaiting");
+	childSetValue("loading_text", LLSD(msg_waiting));
+}
+
+// static
+void LLPanelScriptLimitsAttachment::onClickRefresh(void* userdata)
+{
+	llinfos << "Refresh clicked" << llendl;
+	
+	LLFloaterScriptLimits* instance = LLFloaterReg::getTypedInstance<LLFloaterScriptLimits>("script_limits");
+	if(instance)
+	{
+		LLTabContainer* tab = instance->getChild<LLTabContainer>("scriptlimits_panels");
+		LLPanelScriptLimitsAttachment* panel_attachments = (LLPanelScriptLimitsAttachment*)tab->getChild<LLPanel>("script_limits_my_avatar_panel");
+		panel_attachments->clearList();
+		panel_attachments->requestAttachmentDetails();
+		return;
+	}
+	else
+	{
+		llwarns << "could not find LLPanelScriptLimitsRegionMemory instance after refresh button clicked" << llendl;
+		return;
+	}
+}
diff --git a/indra/newview/llfloaterscriptlimits.h b/indra/newview/llfloaterscriptlimits.h
new file mode 100644
index 0000000000..88239136e3
--- /dev/null
+++ b/indra/newview/llfloaterscriptlimits.h
@@ -0,0 +1,259 @@
+/** 
+ * @file llfloaterscriptlimits.h
+ * @author Gabriel Lee
+ * @brief Declaration of the region info and controls floater and panels.
+ *
+ * $LicenseInfo:firstyear=2004&license=viewergpl$
+ * 
+ * Copyright (c) 2004-2009, Linden Research, Inc.
+ * 
+ * Second Life Viewer Source Code
+ * The source code in this file ("Source Code") is provided by Linden Lab
+ * to you under the terms of the GNU General Public License, version 2.0
+ * ("GPL"), unless you have obtained a separate licensing agreement
+ * ("Other License"), formally executed by you and Linden Lab.  Terms of
+ * the GPL can be found in doc/GPL-license.txt in this distribution, or
+ * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
+ * 
+ * There are special exceptions to the terms and conditions of the GPL as
+ * it is applied to this Source Code. View the full text of the exception
+ * in the file doc/FLOSS-exception.txt in this software distribution, or
+ * online at
+ * http://secondlifegrid.net/programs/open_source/licensing/flossexception
+ * 
+ * By copying, modifying or distributing this software, you acknowledge
+ * that you have read and understood your obligations described above,
+ * and agree to abide by those obligations.
+ * 
+ * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
+ * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
+ * COMPLETENESS OR PERFORMANCE.
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLFLOATERSCRIPTLIMITS_H
+#define LL_LLFLOATERSCRIPTLIMITS_H
+
+#include <vector>
+#include "llfloater.h"
+#include "llhost.h"
+#include "llpanel.h"
+#include "llremoteparcelrequest.h"
+
+class LLPanelScriptLimitsInfo;
+class LLTabContainer;
+
+class LLPanelScriptLimitsRegionMemory;
+
+class LLFloaterScriptLimits : public LLFloater
+{
+	friend class LLFloaterReg;
+public:
+
+	/*virtual*/ BOOL postBuild();
+
+	// from LLPanel
+	virtual void refresh();
+	
+private:
+	
+	LLFloaterScriptLimits(const LLSD& seed);
+	~LLFloaterScriptLimits();
+	
+protected:
+
+	LLTabContainer* mTab;
+	typedef std::vector<LLPanelScriptLimitsInfo*> info_panels_t;
+	info_panels_t mInfoPanels;
+};
+
+
+// Base class for all script limits information panels.
+class LLPanelScriptLimitsInfo : public LLPanel
+{
+public:
+	LLPanelScriptLimitsInfo();
+	
+	virtual BOOL postBuild();
+	virtual void updateChild(LLUICtrl* child_ctrl);
+	
+protected:
+	void initCtrl(const std::string& name);
+	
+	typedef std::vector<std::string> strings_t;
+	
+	LLHost mHost;
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Responders
+/////////////////////////////////////////////////////////////////////////////
+
+class fetchScriptLimitsRegionInfoResponder: public LLHTTPClient::Responder
+{
+	public:
+		fetchScriptLimitsRegionInfoResponder(const LLSD& info) : mInfo(info) {};
+
+		void result(const LLSD& content);
+		void error(U32 status, const std::string& reason);
+	public:
+	protected:
+		LLSD mInfo;
+};
+
+class fetchScriptLimitsRegionSummaryResponder: public LLHTTPClient::Responder
+{
+	public:
+		fetchScriptLimitsRegionSummaryResponder(const LLSD& info) : mInfo(info) {};
+
+		void result(const LLSD& content);
+		void error(U32 status, const std::string& reason);
+	public:
+	protected:
+		LLSD mInfo;
+};
+
+class fetchScriptLimitsRegionDetailsResponder: public LLHTTPClient::Responder
+{
+	public:
+		fetchScriptLimitsRegionDetailsResponder(const LLSD& info) : mInfo(info) {};
+
+		void result(const LLSD& content);
+		void error(U32 status, const std::string& reason);
+	public:
+	protected:
+		LLSD mInfo;
+};
+
+class fetchScriptLimitsAttachmentInfoResponder: public LLHTTPClient::Responder
+{
+	public:
+		fetchScriptLimitsAttachmentInfoResponder() {};
+
+		void result(const LLSD& content);
+		void error(U32 status, const std::string& reason);
+	public:
+	protected:
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Memory panel
+/////////////////////////////////////////////////////////////////////////////
+
+class LLPanelScriptLimitsRegionMemory : public LLPanelScriptLimitsInfo, LLRemoteParcelInfoObserver
+{
+	
+public:
+	LLPanelScriptLimitsRegionMemory()
+		:	LLPanelScriptLimitsInfo(), LLRemoteParcelInfoObserver(), mParcelId(LLUUID()), mGotParcelMemoryUsed(FALSE), mGotParcelMemoryMax(FALSE) {};
+	~LLPanelScriptLimitsRegionMemory()
+	{
+		LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this);
+	};
+	
+	// LLPanel
+	virtual BOOL postBuild();
+
+	void setRegionDetails(LLSD content);
+	void setRegionSummary(LLSD content);
+
+	BOOL StartRequestChain();
+
+	void populateParcelMemoryText();
+	BOOL getLandScriptResources();
+	void clearList();
+	void showBeacon();
+	void returnObjects();
+
+private:
+
+	LLUUID mParcelId;
+	BOOL mGotParcelMemoryUsed;
+	BOOL mGotParcelMemoryMax;
+	S32 mParcelMemoryMax;
+	S32 mParcelMemoryUsed;
+	
+	std::vector<LLUUID> mObjectListIDs;
+		
+protected:
+
+// LLRemoteParcelInfoObserver interface:
+/*virtual*/ void processParcelInfo(const LLParcelData& parcel_data);
+/*virtual*/ void setParcelID(const LLUUID& parcel_id);
+/*virtual*/ void setErrorStatus(U32 status, const std::string& reason);
+	
+	static void onClickRefresh(void* userdata);
+	static void onClickHighlight(void* userdata);
+	static void onClickReturn(void* userdata);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// URLs panel
+/////////////////////////////////////////////////////////////////////////////
+
+class LLPanelScriptLimitsRegionURLs : public LLPanelScriptLimitsInfo
+{
+	
+public:
+	LLPanelScriptLimitsRegionURLs()
+		:	LLPanelScriptLimitsInfo(), mParcelId(LLUUID()), mGotParcelURLsUsed(FALSE), mGotParcelURLsMax(FALSE) {};
+	~LLPanelScriptLimitsRegionURLs()
+	{
+	};
+	
+	// LLPanel
+	virtual BOOL postBuild();
+
+	void setRegionDetails(LLSD content);
+	void setRegionSummary(LLSD content);
+
+	void populateParcelURLsText();
+	void clearList();
+
+private:
+
+	LLUUID mParcelId;
+	BOOL mGotParcelURLsUsed;
+	BOOL mGotParcelURLsMax;
+	S32 mParcelURLsMax;
+	S32 mParcelURLsUsed;
+	
+	std::vector<LLUUID> mObjectListIDs;
+		
+protected:
+	
+	static void onClickRefresh(void* userdata);
+	static void onClickHighlight(void* userdata);
+	static void onClickReturn(void* userdata);
+};
+
+/////////////////////////////////////////////////////////////////////////////
+// Attachment panel
+/////////////////////////////////////////////////////////////////////////////
+
+class LLPanelScriptLimitsAttachment : public LLPanelScriptLimitsInfo
+{
+	
+public:
+	LLPanelScriptLimitsAttachment()
+		:	LLPanelScriptLimitsInfo() {};
+	~LLPanelScriptLimitsAttachment()
+	{
+	};
+	
+	// LLPanel
+	virtual BOOL postBuild();
+
+	void setAttachmentDetails(LLSD content);
+
+	BOOL requestAttachmentDetails();
+	void clearList();
+
+private:
+
+protected:
+	
+	static void onClickRefresh(void* userdata);
+};
+
+#endif
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index 86992d6a31..c930e99bad 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -162,7 +162,7 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
 	msg->getU32Fast(_PREHASH_RequestData, _PREHASH_ReportType, mCurrentMode);
 
 	LLScrollListCtrl *list = getChild<LLScrollListCtrl>("objects_list");
-	
+
 	S32 block_count = msg->getNumberOfBlocks("ReportData");
 	for (S32 block = 0; block < block_count; ++block)
 	{
@@ -432,7 +432,6 @@ void LLFloaterTopObjects::onRefresh()
 	filter = mFilter;
 	clearList();
 
-
 	LLMessageSystem *msg = gMessageSystem;
 	msg->newMessageFast(_PREHASH_LandStatRequest);
 	msg->nextBlockFast(_PREHASH_AgentData);
@@ -465,7 +464,7 @@ void LLFloaterTopObjects::onGetByOwnerName()
 }
 
 void LLFloaterTopObjects::showBeacon()
-{	
+{
 	LLScrollListCtrl* list = getChild<LLScrollListCtrl>("objects_list");
 	if (!list) return;
 
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 35c9a1d367..00db11a767 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -94,6 +94,7 @@
 #include "llfloaterregioninfo.h"
 #include "llfloaterreporter.h"
 #include "llfloaterscriptdebug.h"
+#include "llfloaterscriptlimits.h"
 #include "llfloatersellland.h"
 #include "llfloatersettingsdebug.h"
 #include "llfloatersnapshot.h"
@@ -241,6 +242,7 @@ void LLViewerFloaterReg::registerFloaters()
 	LLFloaterReg::add("script_debug", "floater_script_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebug>);
 	LLFloaterReg::add("script_debug_output", "floater_script_debug_panel.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptDebugOutput>);
 	LLFloaterReg::add("script_floater", "floater_script.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLScriptFloater>);
+	LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptLimits>);
 	LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
 	LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
 	LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index d1c9840a97..77d2d493bd 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -1421,6 +1421,8 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
 	setCapability("Seed", url);
 
 	LLSD capabilityNames = LLSD::emptyArray();
+	
+	capabilityNames.append("AttachmentResources");
 	capabilityNames.append("ChatSessionRequest");
 	capabilityNames.append("CopyInventoryFromNotecard");
 	capabilityNames.append("DispatchRegionInfo");
@@ -1434,6 +1436,7 @@ void LLViewerRegion::setSeedCapability(const std::string& url)
 	capabilityNames.append("GetTexture");
 	capabilityNames.append("GroupProposalBallot");
 	capabilityNames.append("HomeLocation");
+	capabilityNames.append("LandResources");
 	capabilityNames.append("MapLayer");
 	capabilityNames.append("MapLayerGod");
 	capabilityNames.append("NewFileAgentInventory");
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 81e6503407..a581190d18 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -274,7 +274,7 @@
             <button
              enabled="false"
              follows="left|top"
-             height="23S"
+             height="23"
              label="Deed"
              layout="topleft"
              left_pad="2"
@@ -471,6 +471,16 @@
              name="Buy Land..."
              top="328"
              width="100" />
+            <button
+             enabled="true"
+             follows="left|top"
+             height="23"
+             label="Script Info"
+             layout="topleft"
+             left="10"
+             name="Scripts..."
+             top="352"
+             width="100" />
             <button
              enabled="false"
              follows="left|top"
diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml
index 153a9c2c45..ffdb59d44c 100644
--- a/indra/newview/skins/default/xui/en/floater_customize.xml
+++ b/indra/newview/skins/default/xui/en/floater_customize.xml
@@ -3379,6 +3379,16 @@ scratch and wear it.
          layout="topleft"
          name="panel_list" />
     </scroll_container>
+    <button
+     bottom="598"
+     follows="right|left"
+     height="20"
+     label="Script Info"
+     label_selected="Script Info"
+     layout="topleft"
+     name="script_info"
+     left="2"
+     width="98" />
     <button
      bottom="598"
      follows="right|bottom"
diff --git a/indra/newview/skins/default/xui/en/floater_script_limits.xml b/indra/newview/skins/default/xui/en/floater_script_limits.xml
new file mode 100644
index 0000000000..98c44ad1b3
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_script_limits.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="570"
+ help_topic="scriptlimits"
+ layout="topleft"
+ name="scriptlimits"
+ save_rect="true"
+ title="SCRIPT INFORMATION"
+ width="480">
+    <tab_container
+     bottom="555"
+     follows="left|right|top|bottom"
+     layout="topleft"
+     left="1"
+     name="scriptlimits_panels"
+     right="-1"
+     tab_position="top"
+     top="20" />
+</floater>
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
new file mode 100644
index 0000000000..d98f690339
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_my_avatar.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ border="true"
+ follows="top|left"
+ height="570"
+ label="MY AVATAR"
+ layout="topleft"
+ left="0"
+ name="script_limits_my_avatar_panel"
+ top="0"
+ width="480">
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="10"
+     name="loading_text"
+     top="10"
+     text_color="EmphasisColor"
+     width="480">
+        Loading...
+    </text>
+    <scroll_list
+     draw_heading="true"
+     follows="all"
+     height="500"
+     layout="topleft"
+     left_delta="0"
+     multi_select="true"
+     name="scripts_list"
+     top_delta="17"
+     width="460">
+        <scroll_list.columns
+         label="Size (kb)"
+         name="size"
+         width="70" />
+        <scroll_list.columns
+         label="URLs"
+         name="urls"
+         width="50" />
+        <scroll_list.columns
+         label="Object Name"
+         name="name"
+         width="140" />
+        <scroll_list.columns
+         label="Location"
+         name="location"
+         width="130" />
+    </scroll_list>
+    <button
+     follows="bottom|left"
+     height="19"
+     label="Refresh List"
+     layout="bottomleft"
+     left_pad="5"
+     name="refresh_list_btn"
+     top="34"
+     left="10"
+     width="100" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
new file mode 100644
index 0000000000..0fa3c1cf2e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_script_limits_region_memory.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<panel
+ border="true"
+ follows="top|left"
+ height="570"
+ label="REGION MEMORY"
+ layout="topleft"
+ name="script_limits_region_memory_panel"
+ top="0"
+ left="0"
+ width="480">
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="10"
+	 name="script_memory"
+	 top_pad="24"
+	 text_color="White"
+	 width="480">
+	   Parcel Script Memory
+	</text>
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="30"
+	 name="parcels_listed"
+	 top_delta="18"
+	 visible="true"
+	 width="480">
+		Parcels Owned:
+	</text>
+	<text
+	 type="string"
+	 length="1"
+	 follows="left|top"
+	 height="16"
+	 layout="topleft"
+	 left="30"
+	 name="memory_used"
+	 top_delta="18"
+	 width="480">
+		Memory used:
+	</text>
+	<text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="10"
+     name="loading_text"
+     top_delta="32"
+     text_color="EmphasisColor"
+     width="480">
+        Loading...
+    </text>
+    <scroll_list
+     draw_heading="true"
+     follows="all"
+     height="409"
+     layout="topleft"
+     left_delta="0"
+     multi_select="true"
+     name="scripts_list"
+     top_delta="16"
+     width="460">
+        <scroll_list.columns
+         label="Size (kb)"
+         name="size"
+         width="70" />
+        <scroll_list.columns
+         label="Object Name"
+         name="name"
+         width="100" />
+        <scroll_list.columns
+         label="Object Owner"
+         name="owner"
+         width="100" />
+        <scroll_list.columns
+         label="Parcel / Location"
+         name="location"
+         width="130" />
+<!--		<scroll_list.commit_callback
+          function="TopObjects.CommitObjectsList" />-->
+    </scroll_list>
+    <button
+     follows="bottom|left"
+     height="19"
+     label="Refresh List"
+     layout="bottomleft"
+     left_pad="5"
+     name="refresh_list_btn"
+     top="34"
+     left="10"
+     width="100" />
+    <button
+     follows="bottom|right"
+     height="19"
+	 visible="false"
+     label="Highlight"
+     layout="bottomright"
+     left="370"
+     name="highlight_btn"
+     top="34"
+     width="100" />
+    <button
+     follows="bottom|right"
+     height="19"
+	 visible="false"
+     label="Return"
+     layout="bottomright"
+     name="return_btn"
+     top="34"
+     left_delta="-105"
+     width="100" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index ec4723bd55..7438a36ed0 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2041,6 +2041,59 @@ this texture in your inventory
 	<string name="RegionInfoAllowedResidents">Allowed residents: ([ALLOWEDAGENTS], max [MAXACCESS])</string>
 	<string name="RegionInfoAllowedGroups">Allowed groups: ([ALLOWEDGROUPS], max [MAXACCESS])</string>
 
+	<!-- script limits floater -->
+	<string name="ScriptLimitsParcelScriptMemory">Parcel Script Memory</string>
+	<string name="ScriptLimitsParcelsOwned">Parcels Listed: [PARCELS]</string>
+	<string name="ScriptLimitsMemoryUsed">Memory used: [COUNT] kb out of [MAX] kb; [AVAILABLE] kb available</string>
+	<string name="ScriptLimitsMemoryUsedSimple">Memory used: [COUNT] kb</string>
+	<string name="ScriptLimitsParcelScriptURLs">Parcel Script URLs</string>
+	<string name="ScriptLimitsURLsUsed">URLs used: [COUNT] out of [MAX]; [AVAILABLE] available</string>
+	<string name="ScriptLimitsURLsUsedSimple">URLs used: [COUNT]</string>
+	<string name="ScriptLimitsRequestError">Error requesting information</string>
+	<string name="ScriptLimitsRequestWrongRegion">Error: script information is only available in your current region</string>
+	<string name="ScriptLimitsRequestWaiting">Retrieving information...</string>
+	<string name="ScriptLimitsRequestDontOwnParcel">You do not have permission to examine this parcel</string>
+	
+	<string name="SITTING_ON">Sitting On</string>
+	<string name="ATTACH_CHEST">Chest</string>
+	<string name="ATTACH_HEAD">Head</string>
+	<string name="ATTACH_LSHOULDER">Left Shoulder</string>
+	<string name="ATTACH_RSHOULDER">Right Shoulder</string>
+	<string name="ATTACH_LHAND">Left Hand</string>
+	<string name="ATTACH_RHAND">Right Hand</string>
+	<string name="ATTACH_LFOOT">Left Foot</string>
+	<string name="ATTACH_RFOOT">Right Foot</string>
+	<string name="ATTACH_BACK">Back</string>
+	<string name="ATTACH_PELVIS">Pelvis</string>
+	<string name="ATTACH_MOUTH">Mouth</string>
+	<string name="ATTACH_CHIN">Chin</string>
+	<string name="ATTACH_LEAR">Left Ear</string>
+	<string name="ATTACH_REAR">Right Ear</string>
+	<string name="ATTACH_LEYE">Left Eye</string>
+	<string name="ATTACH_REYE">Right Eye</string>
+	<string name="ATTACH_NOSE">Nose</string>
+	<string name="ATTACH_RUARM">Right Upper Arm</string>
+	<string name="ATTACH_RLARM">Right Lower Arm</string>
+	<string name="ATTACH_LUARM">Left Upper Arm</string>
+	<string name="ATTACH_LLARM">Left Lower Arm</string>
+	<string name="ATTACH_RHIP">Right Hip</string>
+	<string name="ATTACH_RULEG">Right Upper Leg</string>
+	<string name="ATTACH_RLLEG">Right Lower Leg</string>
+	<string name="ATTACH_LHIP">Left Hip</string>
+	<string name="ATTACH_LULEG">Left Upper Leg</string>
+	<string name="ATTACH_LLLEG">Left Lower Leg</string>
+	<string name="ATTACH_BELLY">Belly</string>
+	<string name="ATTACH_RPEC">Right Pec</string>
+	<string name="ATTACH_LPEC">Left Pec</string>
+	<string name="ATTACH_HUD_CENTER_2"><HUD Center 2/string>
+	<string name="ATTACH_HUD_TOP_RIGHT">HUD Top Right</string>
+	<string name="ATTACH_HUD_TOP_CENTER">HUD Top Center</string>
+	<string name="ATTACH_HUD_TOP_LEFT">HUD Top Left</string>
+	<string name="ATTACH_HUD_CENTER_1">HUD Center 1</string>
+	<string name="ATTACH_HUD_BOTTOM_LEFT">HUD Bottom Left</string>
+	<string name="ATTACH_HUD_BOTTOM">HUD Bottom</string>
+	<string name="ATTACH_HUD_BOTTOM_RIGHT">HUD Bottom Right</string>
+			
 	<!-- script editor -->
 	<string name="CursorPos">Line [LINE], Column [COLUMN]</string>
 
-- 
cgit v1.2.3


From dc8cd05082e4d82a578d4a20278725cdf5e0450f Mon Sep 17 00:00:00 2001
From: Andrew Polunin <apolunin@productengine.com>
Date: Sat, 19 Dec 2009 18:35:38 +0200
Subject: implemented minor task EXT-3455 Code Improvements: Improve
 LLAvatarListItem not to calculate constant values in each constructing

--HG--
branch : product-engine
---
 indra/newview/llavatarlistitem.cpp | 19 +++++++++++++++----
 indra/newview/llavatarlistitem.h   | 10 ++++++----
 2 files changed, 21 insertions(+), 8 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 072eebdf2d..08b359d26e 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -43,6 +43,12 @@
 #include "lltextutil.h"
 #include "llbutton.h"
 
+bool LLAvatarListItem::mStaticInitialized = false;
+S32 LLAvatarListItem::mIconWidth = 0;
+S32 LLAvatarListItem::mInfoBtnWidth = 0;
+S32 LLAvatarListItem::mProfileBtnWidth = 0;
+S32 LLAvatarListItem::mSpeakingIndicatorWidth = 0;
+
 LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
 :	LLPanel(),
 	mAvatarIcon(NULL),
@@ -88,10 +94,15 @@ BOOL  LLAvatarListItem::postBuild()
 
 	// Remember avatar icon width including its padding from the name text box,
 	// so that we can hide and show the icon again later.
-	mIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
-	mInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
-	mProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
-	mSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight; 
+	if (!mStaticInitialized)
+	{
+		mIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
+		mInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
+		mProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
+		mSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight;
+
+		mStaticInitialized = true;
+	}
 
 /*
 	if(!p.buttons.profile)
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index aa1b7593f5..1272bdf7a9 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -135,10 +135,12 @@ private:
 	//Speaker indicator and avatar name coords are translated accordingly
 	bool mShowInfoBtn;
 	bool mShowProfileBtn;
-	S32	 mIconWidth; // icon width + padding
-	S32  mInfoBtnWidth; //info btn width + padding
-	S32  mProfileBtnWidth; //profile btn width + padding
-	S32  mSpeakingIndicatorWidth; //speaking indicator width + padding
+
+	static bool	mStaticInitialized; // this variable is introduced to improve code readability
+	static S32	mIconWidth; // icon width + padding
+	static S32  mInfoBtnWidth; //info btn width + padding
+	static S32  mProfileBtnWidth; //profile btn width + padding
+	static S32  mSpeakingIndicatorWidth; //speaking indicator width + padding
 };
 
 #endif //LL_LLAVATARLISTITEM_H
-- 
cgit v1.2.3


From 368c75ccd367320c650dbfdb62fdb3334e888f8a Mon Sep 17 00:00:00 2001
From: Andrew Polunin <apolunin@productengine.com>
Date: Sat, 19 Dec 2009 18:52:14 +0200
Subject: no ticket. static variables renamed according to convention.

--HG--
branch : product-engine
---
 indra/newview/llavatarlistitem.cpp | 38 +++++++++++++++++++-------------------
 indra/newview/llavatarlistitem.h   | 10 +++++-----
 2 files changed, 24 insertions(+), 24 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llavatarlistitem.cpp b/indra/newview/llavatarlistitem.cpp
index 08b359d26e..bbe5cdcc4a 100644
--- a/indra/newview/llavatarlistitem.cpp
+++ b/indra/newview/llavatarlistitem.cpp
@@ -43,11 +43,11 @@
 #include "lltextutil.h"
 #include "llbutton.h"
 
-bool LLAvatarListItem::mStaticInitialized = false;
-S32 LLAvatarListItem::mIconWidth = 0;
-S32 LLAvatarListItem::mInfoBtnWidth = 0;
-S32 LLAvatarListItem::mProfileBtnWidth = 0;
-S32 LLAvatarListItem::mSpeakingIndicatorWidth = 0;
+bool LLAvatarListItem::sStaticInitialized = false;
+S32 LLAvatarListItem::sIconWidth = 0;
+S32 LLAvatarListItem::sInfoBtnWidth = 0;
+S32 LLAvatarListItem::sProfileBtnWidth = 0;
+S32 LLAvatarListItem::sSpeakingIndicatorWidth = 0;
 
 LLAvatarListItem::LLAvatarListItem(bool not_from_ui_factory/* = true*/)
 :	LLPanel(),
@@ -94,14 +94,14 @@ BOOL  LLAvatarListItem::postBuild()
 
 	// Remember avatar icon width including its padding from the name text box,
 	// so that we can hide and show the icon again later.
-	if (!mStaticInitialized)
+	if (!sStaticInitialized)
 	{
-		mIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
-		mInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
-		mProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
-		mSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight;
+		sIconWidth = mAvatarName->getRect().mLeft - mAvatarIcon->getRect().mLeft;
+		sInfoBtnWidth = mInfoBtn->getRect().mRight - mSpeakingIndicator->getRect().mRight;
+		sProfileBtnWidth = mProfileBtn->getRect().mRight - mInfoBtn->getRect().mRight;
+		sSpeakingIndicatorWidth = mSpeakingIndicator->getRect().mRight - mAvatarName->getRect().mRight;
 
-		mStaticInitialized = true;
+		sStaticInitialized = true;
 	}
 
 /*
@@ -225,7 +225,7 @@ void LLAvatarListItem::setShowInfoBtn(bool show)
 	if(mShowInfoBtn == show)
 		return;
 	mShowInfoBtn = show;
-	S32 width_delta = show ? - mInfoBtnWidth : mInfoBtnWidth;
+	S32 width_delta = show ? - sInfoBtnWidth : sInfoBtnWidth;
 
 	//Translating speaking indicator
 	mSpeakingIndicator->translate(width_delta, 0);
@@ -239,7 +239,7 @@ void LLAvatarListItem::setShowProfileBtn(bool show)
 	if(mShowProfileBtn == show)
 			return;
 	mShowProfileBtn = show;
-	S32 width_delta = show ? - mProfileBtnWidth : mProfileBtnWidth;
+	S32 width_delta = show ? - sProfileBtnWidth : sProfileBtnWidth;
 
 	//Translating speaking indicator
 	mSpeakingIndicator->translate(width_delta, 0);
@@ -253,7 +253,7 @@ void LLAvatarListItem::setSpeakingIndicatorVisible(bool visible)
 	if (mSpeakingIndicator->getVisible() == (BOOL)visible)
 		return;
 	mSpeakingIndicator->setVisible(visible);
-	S32 width_delta = visible ? - mSpeakingIndicatorWidth : mSpeakingIndicatorWidth;
+	S32 width_delta = visible ? - sSpeakingIndicatorWidth : sSpeakingIndicatorWidth;
 
 	//Reshaping avatar name
 	mAvatarName->reshape(mAvatarName->getRect().getWidth() + width_delta, mAvatarName->getRect().getHeight());
@@ -270,7 +270,7 @@ void LLAvatarListItem::setAvatarIconVisible(bool visible)
 
 	// Move the avatar name horizontally by icon size + its distance from the avatar name.
 	LLRect name_rect = mAvatarName->getRect();
-	name_rect.mLeft += visible ? mIconWidth : -mIconWidth;
+	name_rect.mLeft += visible ? sIconWidth : -sIconWidth;
 	mAvatarName->setRect(name_rect);
 }
 
@@ -338,10 +338,10 @@ void LLAvatarListItem::onNameCache(const std::string& first_name, const std::str
 void LLAvatarListItem::reshapeAvatarName()
 {
 	S32 width_delta = 0;
-	width_delta += mShowProfileBtn ? mProfileBtnWidth : 0;
-	width_delta += mSpeakingIndicator->getVisible() ? mSpeakingIndicatorWidth : 0;
-	width_delta += mAvatarIcon->getVisible() ? mIconWidth : 0;
-	width_delta += mShowInfoBtn ? mInfoBtnWidth : 0;
+	width_delta += mShowProfileBtn ? sProfileBtnWidth : 0;
+	width_delta += mSpeakingIndicator->getVisible() ? sSpeakingIndicatorWidth : 0;
+	width_delta += mAvatarIcon->getVisible() ? sIconWidth : 0;
+	width_delta += mShowInfoBtn ? sInfoBtnWidth : 0;
 	width_delta += mLastInteractionTime->getVisible() ? mLastInteractionTime->getRect().getWidth() : 0;
 
 	S32 height = mAvatarName->getRect().getHeight();
diff --git a/indra/newview/llavatarlistitem.h b/indra/newview/llavatarlistitem.h
index 1272bdf7a9..df8b04126e 100644
--- a/indra/newview/llavatarlistitem.h
+++ b/indra/newview/llavatarlistitem.h
@@ -136,11 +136,11 @@ private:
 	bool mShowInfoBtn;
 	bool mShowProfileBtn;
 
-	static bool	mStaticInitialized; // this variable is introduced to improve code readability
-	static S32	mIconWidth; // icon width + padding
-	static S32  mInfoBtnWidth; //info btn width + padding
-	static S32  mProfileBtnWidth; //profile btn width + padding
-	static S32  mSpeakingIndicatorWidth; //speaking indicator width + padding
+	static bool	sStaticInitialized; // this variable is introduced to improve code readability
+	static S32	sIconWidth; // icon width + padding
+	static S32  sInfoBtnWidth; //info btn width + padding
+	static S32  sProfileBtnWidth; //profile btn width + padding
+	static S32  sSpeakingIndicatorWidth; //speaking indicator width + padding
 };
 
 #endif //LL_LLAVATARLISTITEM_H
-- 
cgit v1.2.3


From 24b1f278247315efcc317394c200651ea7ab11d2 Mon Sep 17 00:00:00 2001
From: Vadim Savchuk <vsavchuk@productengine.com>
Date: Sat, 19 Dec 2009 19:55:04 +0200
Subject: Added "Group Call" verb button to the group list so that you can
 start a call without opening group chat first (EXT-3596).

--HG--
branch : product-engine
---
 indra/newview/llgroupactions.cpp                   | 30 ++++++++++++++++++++++
 indra/newview/llgroupactions.h                     |  5 ++++
 indra/newview/llpanelpeople.cpp                    |  8 ++++++
 indra/newview/llpanelpeople.h                      |  1 +
 .../newview/skins/default/xui/en/panel_people.xml  | 10 ++++++++
 5 files changed, 54 insertions(+)

(limited to 'indra/newview')

diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index ff75d461df..22658b4d65 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -118,6 +118,36 @@ void LLGroupActions::search()
 	LLFloaterReg::showInstance("search", LLSD().with("category", "groups"));
 }
 
+// static
+void LLGroupActions::startCall(const LLUUID& group_id)
+{
+	// create a new group voice session
+	LLGroupData gdata;
+
+	if (!gAgent.getGroupData(group_id, gdata))
+	{
+		llwarns << "Error getting group data" << llendl;
+		return;
+	}
+
+	LLUUID session_id = gIMMgr->addSession(gdata.mName, IM_SESSION_GROUP_START, group_id, true);
+	if (session_id == LLUUID::null)
+	{
+		llwarns << "Error adding session" << llendl;
+		return;
+	}
+
+	// start the call
+	// *TODO: move this to LLIMMgr?
+	LLIMModel::LLIMSession* session = LLIMModel::getInstance()->findIMSession(session_id);
+	if (session && session->mSessionInitialized)
+		gIMMgr->startCall(session_id);
+	else
+		gIMMgr->autoStartCallOnStartup(session_id);
+
+	make_ui_sound("UISndStartIM");
+}
+
 // static
 void LLGroupActions::join(const LLUUID& group_id)
 {
diff --git a/indra/newview/llgroupactions.h b/indra/newview/llgroupactions.h
index 9750b3e3cb..e99df86cd9 100644
--- a/indra/newview/llgroupactions.h
+++ b/indra/newview/llgroupactions.h
@@ -98,6 +98,11 @@ public:
 	/// Returns if the current user is a member of the group
 	static bool isInGroup(const LLUUID& group_id);
 
+	/**
+	 * Start a group voice call.
+	 */
+	static void startCall(const LLUUID& group_id);
+
 	/**
 	 * Returns true if avatar is in group.
 	 *
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index e134840153..e5846c7318 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -564,6 +564,7 @@ BOOL LLPanelPeople::postBuild()
 	buttonSetAction("chat_btn",			boost::bind(&LLPanelPeople::onChatButtonClicked,		this));
 	buttonSetAction("im_btn",			boost::bind(&LLPanelPeople::onImButtonClicked,			this));
 	buttonSetAction("call_btn",			boost::bind(&LLPanelPeople::onCallButtonClicked,		this));
+	buttonSetAction("group_call_btn",	boost::bind(&LLPanelPeople::onGroupCallButtonClicked,	this));
 	buttonSetAction("teleport_btn",		boost::bind(&LLPanelPeople::onTeleportButtonClicked,	this));
 	buttonSetAction("share_btn",		boost::bind(&LLPanelPeople::onShareButtonClicked,		this));
 
@@ -733,6 +734,7 @@ void LLPanelPeople::updateButtons()
 	buttonSetVisible("view_profile_btn",	!group_tab_active);
 	buttonSetVisible("im_btn",				!group_tab_active);
 	buttonSetVisible("call_btn",			!group_tab_active);
+	buttonSetVisible("group_call_btn",		group_tab_active);
 	buttonSetVisible("teleport_btn",		friends_tab_active);
 	buttonSetVisible("share_btn",			nearby_tab_active || friends_tab_active);
 
@@ -781,6 +783,7 @@ void LLPanelPeople::updateButtons()
 
 	bool none_group_selected = item_selected && selected_id.isNull();
 	buttonSetEnabled("group_info_btn", !none_group_selected);
+	buttonSetEnabled("group_call_btn", !none_group_selected);
 	buttonSetEnabled("chat_btn", !none_group_selected);
 }
 
@@ -1272,6 +1275,11 @@ void LLPanelPeople::onCallButtonClicked()
 	}
 }
 
+void LLPanelPeople::onGroupCallButtonClicked()
+{
+	LLGroupActions::startCall(getCurrentItemID());
+}
+
 void LLPanelPeople::onTeleportButtonClicked()
 {
 	LLAvatarActions::offerTeleport(getCurrentItemID());
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index f5cdc0935c..0d2bae1baf 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -100,6 +100,7 @@ private:
 	void					onChatButtonClicked();
 	void					onImButtonClicked();
 	void					onCallButtonClicked();
+	void					onGroupCallButtonClicked();
 	void					onTeleportButtonClicked();
 	void					onShareButtonClicked();
 	void					onMoreButtonClicked();
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 8883c27c47..08a10553a8 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -411,5 +411,15 @@ background_visible="true"
          name="chat_btn"
          tool_tip="Open chat session"
          width="110" />
+        <button
+         follows="bottom|left"
+         top="4"
+         left_pad="2"
+         height="23"
+         label="Group Call"
+         layout="topleft"
+         name="group_call_btn"
+         tool_tip="Call this group"
+         width="110" />
     </panel>
 </panel>
-- 
cgit v1.2.3


From 05898105c88a2fa175bdc3d353461a6f61ad0616 Mon Sep 17 00:00:00 2001
From: Andrew Polunin <apolunin@productengine.com>
Date: Sat, 19 Dec 2009 20:00:46 +0200
Subject: fixed major bug EXT-3586 IM well button shows \"9+\" if number of
 unread IMs is more than 9

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp                             | 2 +-
 indra/newview/skins/default/xui/en/panel_bottomtray.xml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra/newview')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index 21a0381495..bb09f34362 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -140,7 +140,7 @@ private:
 LLSysWellChiclet::Params::Params()
 : button("button")
 , unread_notifications("unread_notifications")
-, max_displayed_count("max_displayed_count", 9)
+, max_displayed_count("max_displayed_count", 99)
 , flash_to_lit_count("flash_to_lit_count", 3)
 , flash_period("flash_period", 0.5F)
 {
diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
index 3e2910458f..5ae808581d 100644
--- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml
@@ -327,6 +327,7 @@ as for parent layout_panel (chiclet_list_panel) to resize bottom tray properly.
          min_width="35"
          user_resize="false">
             <chiclet_im_well
+             max_displayed_count="99"
              flash_period="0.3"
              follows="right"
              height="23"
@@ -356,7 +357,6 @@ image_pressed_selected  "Lit" + "Selected" - there are new messages and the Well
                  image_selected="PushButton_Selected_Press"
                  label_color="Black"
                  left="0"
-                 max_displayed_count="99"
                  name="Unread IM messages"
                  pad_left="0"
                  pad_right="0"
-- 
cgit v1.2.3