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')

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')

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')

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')

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')

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')

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/llui/lltabcontainer.cpp                               | 13 ++++++++-----
 indra/llui/lltabcontainer.h                                 |  9 ++++++++-
 .../newview/skins/default/xui/en/widgets/tab_container.xml  | 10 ++++++++--
 3 files changed, 24 insertions(+), 8 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp
index 2d9106923e..83e2e3db50 100644
--- a/indra/llui/lltabcontainer.cpp
+++ b/indra/llui/lltabcontainer.cpp
@@ -120,6 +120,8 @@ LLTabContainer::Params::Params()
 	tab_min_width("tab_min_width"),
 	tab_max_width("tab_max_width"),
 	tab_height("tab_height"),
+	label_pad_bottom("label_pad_bottom"),
+	label_pad_left("label_pad_left"),
 	tab_position("tab_position"),
 	hide_tabs("hide_tabs", false),
 	tab_padding_right("tab_padding_right"),
@@ -145,6 +147,8 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p)
 	mMinTabWidth(0),
 	mMaxTabWidth(p.tab_max_width),
 	mTabHeight(p.tab_height),
+	mLabelPadBottom(p.label_pad_bottom),
+	mLabelPadLeft(p.label_pad_left),
 	mPrevArrowBtn(NULL),
 	mNextArrowBtn(NULL),
 	mIsVertical( p.tab_position == LEFT ),
@@ -906,7 +910,7 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 	
 	if (placeholder)
 	{
-		btn_rect.translate(0, -3); // *TODO: make configurable
+		btn_rect.translate(0, -6); // *TODO: make configurable
 		LLTextBox::Params params;
 		params.name(trimmed_label);
 		params.rect(btn_rect);
@@ -933,6 +937,7 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 			p.image_selected(mMiddleTabParams.tab_left_image_selected);
 			p.scale_image(true);
 			p.font_halign = mFontHalign;
+			p.pad_bottom( mLabelPadBottom );
 			p.tab_stop(false);
 			p.label_shadow(false);
 			if (indent)
@@ -956,8 +961,9 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel)
 			p.tab_stop(false);
 			p.label_shadow(false);
 			// Try to squeeze in a bit more text
-			p.pad_left(4);
+			p.pad_left( mLabelPadLeft );
 			p.pad_right(2);
+			p.pad_bottom( mLabelPadBottom );
 			p.font_halign = mFontHalign;
 			p.follows.flags = FOLLOWS_LEFT;
 			p.follows.flags = FOLLOWS_LEFT;
@@ -1897,6 +1903,3 @@ void LLTabContainer::commitHoveredButton(S32 x, S32 y)
 		}
 	}
 }
-
-
-
diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h
index be9c6c7d06..5d0f194bf9 100644
--- a/indra/llui/lltabcontainer.h
+++ b/indra/llui/lltabcontainer.h
@@ -79,7 +79,9 @@ public:
 		Optional<S32>						tab_width,
 											tab_min_width,
 											tab_max_width,
-											tab_height;
+											tab_height,
+											label_pad_bottom,
+											label_pad_left;
 
 		Optional<bool>						hide_tabs;
 		Optional<S32>						tab_padding_right;
@@ -261,6 +263,11 @@ private:
 	S32								mTotalTabWidth;
 	S32								mTabHeight;
 
+	// Padding under the text labels of tab buttons
+	S32								mLabelPadBottom;
+	// Padding to the left of text labels of tab buttons
+	S32								mLabelPadLeft;
+
 	LLFrameTimer					mDragAndDropDelayTimer;
 	
 	LLFontGL::HAlign                mFontHalign;
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')

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')

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')

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')

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/llui/llradiogroup.cpp                        | 104 ++++++++++++++-------
 indra/llui/llradiogroup.h                          |  47 +++-------
 indra/llui/lluictrlfactory.cpp                     |   9 +-
 indra/llui/lluictrlfactory.h                       |  75 ++++++++-------
 indra/llui/llview.cpp                              |   2 -
 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 ++++----
 12 files changed, 176 insertions(+), 159 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index 86bd2f05ce..74e30cd633 100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -43,15 +43,43 @@
 #include "llui.h"
 #include "llfocusmgr.h"
 #include "lluictrlfactory.h"
+#include "llsdutil.h"
 
 static LLDefaultChildRegistry::Register<LLRadioGroup> r1("radio_group");
-static RadioGroupRegistry::Register<LLRadioCtrl> register_radio_ctrl("radio_item");
 
+/*
+ * An invisible view containing multiple mutually exclusive toggling 
+ * buttons (usually radio buttons).  Automatically handles the mutex
+ * condition by highlighting only one button at a time.
+ */
+class LLRadioCtrl : public LLCheckBoxCtrl 
+{
+public:
+	typedef LLRadioGroup::ItemParams Params;
+	/*virtual*/ ~LLRadioCtrl();
+	/*virtual*/ void setValue(const LLSD& value);
+
+	/*virtual*/ BOOL postBuild();
+
+	LLSD getPayload() { return mPayload; }
 
+	// Ensure label is in an attribute, not the contents
+	static void setupParamsForExport(Params& p, LLView* parent);
+
+protected:
+	LLRadioCtrl(const LLRadioGroup::ItemParams& p);
+	friend class LLUICtrlFactory;
+
+	LLSD mPayload;	// stores data that this item represents in the radio group
+};
+static LLWidgetNameRegistry::StaticRegistrar register_radio_item(&typeid(LLRadioGroup::ItemParams), "radio_item");
 
 LLRadioGroup::Params::Params()
-:	has_border("draw_border")
+:	has_border("draw_border"),
+	items("item") 
 {
+	addSynonym(items, "radio_item");
+
 	name = "radio_group";
 	mouse_opaque = true;
 	follows.flags = FOLLOWS_LEFT | FOLLOWS_TOP;
@@ -76,6 +104,24 @@ LLRadioGroup::LLRadioGroup(const LLRadioGroup::Params& p)
 	}
 }
 
+void LLRadioGroup::initFromParams(const Params& p)
+{
+	LLUICtrl::initFromParams(p);
+	for (LLInitParam::ParamIterator<ItemParams>::const_iterator it = p.items().begin();
+		it != p.items().end();
+		++it)
+	{
+		LLRadioGroup::ItemParams item_params(*it);
+		item_params.font.setIfNotProvided(mFont); // apply radio group font by default
+		item_params.commit_callback.function = boost::bind(&LLRadioGroup::onClickButton, this, _1);
+		item_params.from_xui = p.from_xui;
+
+		LLRadioCtrl* item = LLUICtrlFactory::create<LLRadioCtrl>(item_params, this);
+		mRadioButtons.push_back(item);
+	}
+}
+
+
 LLRadioGroup::~LLRadioGroup()
 {
 }
@@ -141,7 +187,7 @@ void LLRadioGroup::setIndexEnabled(S32 index, BOOL enabled)
 
 BOOL LLRadioGroup::setSelectedIndex(S32 index, BOOL from_event)
 {
-	if (index < 0 || index >= (S32)mRadioButtons.size())
+	if (index < 0 || (S32)mRadioButtons.size() <= index )
 	{
 		return FALSE;
 	}
@@ -170,7 +216,7 @@ BOOL LLRadioGroup::setSelectedIndex(S32 index, BOOL from_event)
 
 	if (!from_event)
 	{
-		setControlValue(getSelectedIndex());
+		setControlValue(getValue());
 	}
 
 	return TRUE;
@@ -235,27 +281,6 @@ BOOL LLRadioGroup::handleKeyHere(KEY key, MASK mask)
 	return handled;
 }
 
-
-// When adding a child button, we need to ensure that the radio
-// group gets a message when the button is clicked.
-
-/*virtual*/
-bool LLRadioGroup::addChild(LLView* view, S32 tab_group)
-{
-	bool res = LLView::addChild(view, tab_group);
-	if (res)
-	{
-		LLRadioCtrl* radio_ctrl = dynamic_cast<LLRadioCtrl*>(view);
-		if (radio_ctrl)
-		{
-			radio_ctrl->setFont(mFont);
-			radio_ctrl->setCommitCallback(boost::bind(&LLRadioGroup::onClickButton, this, _1));
-			mRadioButtons.push_back(radio_ctrl);
-		}
-	}
-	return res;
-}
-
 BOOL LLRadioGroup::handleMouseDown(S32 x, S32 y, MASK mask)
 {
 	// grab focus preemptively, before child button takes mousecapture
@@ -302,13 +327,12 @@ void LLRadioGroup::onClickButton(LLUICtrl* ctrl)
 
 void LLRadioGroup::setValue( const LLSD& value )
 {
-	std::string value_name = value.asString();
 	int idx = 0;
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
 		LLRadioCtrl* radio = *iter;
-		if (radio->getName() == value_name)
+		if (llsd_equals(radio->getPayload(), value))
 		{
 			setSelectedIndex(idx);
 			idx = -1;
@@ -325,7 +349,7 @@ void LLRadioGroup::setValue( const LLSD& value )
 		}
 		else
 		{
-			llwarns << "LLRadioGroup::setValue: value not found: " << value_name << llendl;
+			llwarns << "LLRadioGroup::setValue: value not found: " << value.asString() << llendl;
 		}
 	}
 }
@@ -337,7 +361,7 @@ LLSD LLRadioGroup::getValue() const
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
-		if (idx == index) return LLSD((*iter)->getName());
+		if (idx == index) return LLSD((*iter)->getPayload());
 		++idx;
 	}
 	return LLSD();
@@ -357,11 +381,10 @@ LLUUID	LLRadioGroup::getCurrentID() const
 BOOL	LLRadioGroup::setSelectedByValue(const LLSD& value, BOOL selected)
 {
 	S32 idx = 0;
-	std::string value_string = value.asString();
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
-		if((*iter)->getName() == value_string)
+		if(llsd_equals((*iter)->getPayload(), value))
 		{
 			setSelectedIndex(idx);
 			return TRUE;
@@ -380,11 +403,10 @@ LLSD	LLRadioGroup::getSelectedValue()
 BOOL	LLRadioGroup::isSelected(const LLSD& value) const
 {
 	S32 idx = 0;
-	std::string value_string = value.asString();
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
-		if((*iter)->getName() == value_string)
+		if(llsd_equals((*iter)->getPayload(), value))
 		{
 			if (idx == mSelectedIndex) 
 			{
@@ -406,9 +428,21 @@ BOOL	LLRadioGroup::operateOnAll(EOperation op)
 	return FALSE;
 }
 
-LLRadioCtrl::LLRadioCtrl(const LLRadioCtrl::Params& p)
-	: LLCheckBoxCtrl(p)
+LLRadioGroup::ItemParams::ItemParams()
+:	value("value")
 {
+	addSynonym(value, "initial_value");
+}
+
+LLRadioCtrl::LLRadioCtrl(const LLRadioGroup::ItemParams& p)
+:	LLCheckBoxCtrl(p),
+	mPayload(p.value)
+{
+	// use name as default "Value" for backwards compatibility
+	if (!p.value.isProvided())
+	{
+		mPayload = p.name();
+	}
 }
 
 BOOL LLRadioCtrl::postBuild()
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
index 1e9b5115f8..2edfd7c2ca 100644
--- a/indra/llui/llradiogroup.h
+++ b/indra/llui/llradiogroup.h
@@ -37,35 +37,6 @@
 #include "llcheckboxctrl.h"
 #include "llctrlselectioninterface.h"
 
-
-/*
- * An invisible view containing multiple mutually exclusive toggling 
- * buttons (usually radio buttons).  Automatically handles the mutex
- * condition by highlighting only one button at a time.
- */
-class LLRadioCtrl : public LLCheckBoxCtrl 
-{
-public:
-	struct Params : public LLInitParam::Block<Params, LLCheckBoxCtrl::Params>
-	{};
-
-	/*virtual*/ ~LLRadioCtrl();
-	/*virtual*/ void setValue(const LLSD& value);
-
-	/*virtual*/ BOOL postBuild();
-
-	// Ensure label is in an attribute, not the contents
-	static void setupParamsForExport(Params& p, LLView* parent);
-
-protected:
-	LLRadioCtrl(const Params& p);
-	friend class LLUICtrlFactory;
-};
-
-
-struct RadioGroupRegistry : public LLChildRegistry<RadioGroupRegistry>
-{};
-
 /*
  * An invisible view containing multiple mutually exclusive toggling 
  * buttons (usually radio buttons).  Automatically handles the mutex
@@ -76,25 +47,31 @@ class LLRadioGroup
 {
 public:
 
+	struct ItemParams : public LLInitParam::Block<ItemParams, LLCheckBoxCtrl::Params>
+	{
+		Optional<LLSD>	value;
+		ItemParams();
+	};
+
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
-		Optional<bool> has_border;
+		Optional<bool>						has_border;
+		Multiple<ItemParams, LLInitParam::AtLeast<1> >	items;
 		Params();
 	};
 
-	// my valid children are stored in this registry
-	typedef RadioGroupRegistry child_registry_t;
-
 protected:
 	LLRadioGroup(const Params&);
 	friend class LLUICtrlFactory;
 
 public:
+
+	/*virtual*/ void initFromParams(const Params&);
+
 	virtual ~LLRadioGroup();
 	
 	virtual BOOL postBuild();
 	
-	virtual bool addChild(LLView* view, S32 tab_group = 0);
 	virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
 	
 	virtual BOOL handleKeyHere(KEY key, MASK mask);
@@ -134,7 +111,7 @@ public:
 private:
 	const LLFontGL* mFont;
 	S32 mSelectedIndex;
-	typedef std::vector<LLRadioCtrl*> button_list_t;
+	typedef std::vector<class LLRadioCtrl*> button_list_t;
 	button_list_t mRadioButtons;
 
 	BOOL mHasBorder;
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 3643bf44f7..6a7879c8c2 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -393,7 +393,6 @@ BOOL LLUICtrlFactory::getAttributeColor(LLXMLNodePtr node, const std::string& na
 //static
 void LLUICtrlFactory::setCtrlParent(LLView* view, LLView* parent, S32 tab_group)
 {
-	if (tab_group < 0) tab_group = parent->getLastTabGroup();
 	parent->addChild(view, tab_group);
 }
 
@@ -452,10 +451,4 @@ dummy_widget_creator_func_t* LLUICtrlFactory::getDefaultWidgetFunc(const std::ty
 const std::string* LLUICtrlFactory::getWidgetTag(const std::type_info* widget_type)
 {
 	return LLWidgetNameRegistry::instance().getValue(widget_type);
-}
-
-// static
-void LLUICtrlFactory::connect(LLView* parent, LLView* child)
-{
-	parent->addChild(child);
-}
+}
\ No newline at end of file
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 55d7d745eb..e4bac48fd3 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -180,34 +180,55 @@ public:
 	void popFactoryFunctions();
 
 	template<typename T>
-	static T* create(typename T::Params& params, LLView* parent = NULL)
+	static T* createWidget(typename T::Params& params, LLView* parent = NULL)
 	{
-		//#pragma message("Generating LLUICtrlFactory::create")
-		params.fillFrom(ParamDefaults<typename T::Params, 0>::instance().get());
-		//S32 foo = "test";
+		// Apply layout transformations, usually munging rect
+		T::setupParams(params, parent);
+
+		T* widget = NULL;
 
 		if (!params.validateBlock())
 		{
 			llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl;
+			//return NULL;
 		}
-		T* widget = new T(params);
-		widget->initFromParams(params);
+
+		{
+			LLFastTimer timer(FTM_WIDGET_CONSTRUCTION);
+			widget = new T(params);	
+		}
+		{
+			LLFastTimer timer(FTM_INIT_FROM_PARAMS);
+			widget->initFromParams(params);
+		}
+
 		if (parent)
 		{
-			connect(parent, widget);
+			S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : parent->getLastTabGroup();
+			setCtrlParent(widget, parent, tab_group);
 		}
 		return widget;
 	}
 
-	// fix for gcc template instantiation annoyance
-	static void connect(LLView* parent, LLView* child);
-	
+	template<typename T>
+	static T* create(typename T::Params& params, LLView* parent = NULL)
+	{
+		params.fillFrom(ParamDefaults<typename T::Params, 0>::instance().get());
+
+		T* widget = createWidget<T>(params, parent);
+		if (widget)
+		{
+			widget->postBuild();
+		}
+
+		return widget;
+	}
+
 	LLView* createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, const widget_registry_t&, LLXMLNodePtr output_node );
 
 	template<typename T>
 	static T* createFromFile(const std::string &filename, LLView *parent, const widget_registry_t& registry, LLXMLNodePtr output_node = NULL)
 	{
-		//#pragma message("Generating LLUICtrlFactory::createFromFile")
 		T* widget = NULL;
 
 		std::string skinned_filename = findSkinnedFilename(filename);
@@ -272,7 +293,6 @@ fail:
 	{
 		LLFastTimer timer(FTM_WIDGET_SETUP);
 
-		//#pragma message("Generating LLUICtrlFactory::defaultBuilder")
 		typename T::Params params(getDefaultParams<T>());
 
 		LLXUIParser::instance().readXUI(node, params, LLUICtrlFactory::getInstance()->getCurFileName());
@@ -289,37 +309,16 @@ fail:
 				output_node, output_params, &default_params);
 		}
 
-		// Apply layout transformations, usually munging rect
-		T::setupParams(params, parent);
-
-		if (!params.validateBlock())
-		{
-			llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl;
-		}
-		T* widget;
-		{
-			LLFastTimer timer(FTM_WIDGET_CONSTRUCTION);
-			widget = new T(params);	
-		}
-		{
-			LLFastTimer timer(FTM_INIT_FROM_PARAMS);
-			widget->initFromParams(params);
-		}
+		params.from_xui = true;
 
-		if (parent)
-		{
-			S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : -1;
-			setCtrlParent(widget, parent, tab_group);
-		}
-		
-		typedef typename T::child_registry_t registry_t;
+		T* widget = createWidget<T>(params, parent);
 
-		createChildren(widget, node, registry_t::instance(), output_node);
+		createChildren(widget, node, typename T::child_registry_t::instance(), output_node);
 
-		if (!widget->postBuild())
+		if (widget && !widget->postBuild())
 		{
 			delete widget;
-			return NULL;
+			widget = NULL;
 		}
 
 		return widget;
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 8917e4b813..7932b749a8 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -2494,8 +2494,6 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 	const S32 VPAD = 4;
 	const S32 MIN_WIDGET_HEIGHT = 10;
 	
-	p.from_xui(true);
-
 	// *NOTE:  This will confuse export of floater/panel coordinates unless
 	// the default is also "topleft".  JC
 	if (p.layout().empty() && parent)
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')

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')

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')

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')

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')

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')

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 3a02b9ec882c98009ae6c24913ee8a7a620b0f87 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Tue, 15 Dec 2009 19:33:18 -0800
Subject: added setBlockFromValue so setting a LLRect param in code will set
 the individual left, right, top, bottom values, for example don't call
 setupParams when creating widgets from code moved Multiple param constraints
 into BaseBlock to remove extra scoping

---
 indra/llrender/llfontgl.cpp    | 23 ++++++++++++
 indra/llrender/llfontgl.h      |  1 +
 indra/llui/lllayoutstack.h     |  5 ++-
 indra/llui/llradiogroup.h      |  2 +-
 indra/llui/llsearcheditor.h    | 14 ++++----
 indra/llui/llui.cpp            | 79 +++++++++++++++++++++++++++++-------------
 indra/llui/llui.h              | 12 ++++---
 indra/llui/lluictrlfactory.cpp |  3 ++
 indra/llui/lluictrlfactory.h   |  6 ++--
 indra/llui/lluiimage.cpp       | 22 ++++++++----
 indra/llui/lluiimage.h         |  3 +-
 indra/llui/llview.cpp          |  4 ++-
 indra/llxuixml/llinitparam.h   | 78 +++++++++++++++++++++--------------------
 13 files changed, 163 insertions(+), 89 deletions(-)

(limited to 'indra')

diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index db1f019a81..7ad5f9608f 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -760,6 +760,29 @@ U8 LLFontGL::getStyleFromString(const std::string &style)
 	return ret;
 }
 
+// static
+std::string LLFontGL::getStringFromStyle(U8 style)
+{
+	std::string style_string;
+	if (style & NORMAL)
+	{
+		style_string += "|NORMAL";
+	}
+	if (style & BOLD)
+	{
+		style_string += "|BOLD";
+	}
+	if (style & ITALIC)
+	{
+		style_string += "|ITALIC";
+	}
+	if (style & UNDERLINE)
+	{
+		style_string += "|UNDERLINE";
+	}
+	return style_string;
+}
+
 // static
 std::string LLFontGL::nameFromFont(const LLFontGL* fontp)
 {
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index bb7d8524e7..ea8eee7690 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -144,6 +144,7 @@ public:
 
 	// Takes a string with potentially several flags, i.e. "NORMAL|BOLD|ITALIC"
 	static U8 getStyleFromString(const std::string &style);
+	static std::string getStringFromStyle(U8 style);
 
 	static std::string nameFromFont(const LLFontGL* fontp);
 	static std::string sizeFromFont(const LLFontGL* fontp);
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index abd5436018..c1af428674 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -45,9 +45,8 @@ public:
 	{
 		Optional<std::string>	orientation;
 		Optional<S32>			border_size;
-		Optional<bool>			animate;
-		Optional<bool>			clip;
-		// mMinWidth and mMinHeight are calculated, not set in XML
+		Optional<bool>			animate,
+								clip;
 
 		Params();
 	};
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
index 2edfd7c2ca..b178bb36ca 100644
--- a/indra/llui/llradiogroup.h
+++ b/indra/llui/llradiogroup.h
@@ -56,7 +56,7 @@ public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
 		Optional<bool>						has_border;
-		Multiple<ItemParams, LLInitParam::AtLeast<1> >	items;
+		Multiple<ItemParams, AtLeast<1> >	items;
 		Params();
 	};
 
diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h
index bd2d595174..714aca9337 100644
--- a/indra/llui/llsearcheditor.h
+++ b/indra/llui/llsearcheditor.h
@@ -50,15 +50,17 @@ class LLSearchEditor : public LLUICtrl
 public:
 	struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>
 	{
-		Optional<LLButton::Params> search_button, clear_button;
-		Optional<bool> search_button_visible, clear_button_visible;
+		Optional<LLButton::Params>	search_button, 
+									clear_button;
+		Optional<bool>				search_button_visible, 
+									clear_button_visible;
 		Optional<commit_callback_t> keystroke_callback;
 
 		Params()
-		: search_button("search_button")
-		, search_button_visible("search_button_visible")
-		, clear_button("clear_button")
-		, clear_button_visible("clear_button_visible")
+		:	search_button("search_button"),
+			search_button_visible("search_button_visible"),
+			clear_button("clear_button"), 
+			clear_button_visible("clear_button_visible")
 		{
 			name = "search_editor";
 		}
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 6603887905..67d3ed408b 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1896,17 +1896,26 @@ namespace LLInitParam
 		control("")
 	{}
 
-	LLUIColor TypedParam<LLUIColor>::getValueFromBlock() const
+	void TypedParam<LLUIColor>::setValueFromBlock() const
 	{
 		if (control.isProvided())
 		{
-			return LLUIColorTable::instance().getColor(control);
+			mData.mValue = LLUIColorTable::instance().getColor(control);
 		}
 		else
 		{
-			return LLColor4(red, green, blue, alpha);
+			mData.mValue = LLColor4(red, green, blue, alpha);
 		}
 	}
+	
+	void TypedParam<LLUIColor>::setBlockFromValue()
+	{
+		LLColor4 color = mData.mValue.get();
+		red = color.mV[VRED];
+		green = color.mV[VGREEN];
+		blue = color.mV[VBLUE];
+		alpha = color.mV[VALPHA];
+	}
 
 	void TypeValues<LLUIColor>::declareValues()
 	{
@@ -1932,28 +1941,32 @@ namespace LLInitParam
 		addSynonym(name, "");
 	}
 
-	const LLFontGL* TypedParam<const LLFontGL*>::getValueFromBlock() const
+	void TypedParam<const LLFontGL*>::setValueFromBlock() const
 	{
-		if (name.isProvided())
+		const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
+		if (res_fontp)
 		{
-			const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
-			if (res_fontp)
-			{
-				return res_fontp;
-			}
+			mData.mValue = res_fontp;
+		}
 
-			U8 fontstyle = 0;
-			fontstyle = LLFontGL::getStyleFromString(style());
-			LLFontDescriptor desc(name(), size(), fontstyle);
-			const LLFontGL* fontp = LLFontGL::getFont(desc);
-			if (fontp)
-			{
-				return fontp;
-			}
+		U8 fontstyle = 0;
+		fontstyle = LLFontGL::getStyleFromString(style());
+		LLFontDescriptor desc(name(), size(), fontstyle);
+		const LLFontGL* fontp = LLFontGL::getFont(desc);
+		if (fontp)
+		{
+			mData.mValue = fontp;
+		}		
+	}
+	
+	void TypedParam<const LLFontGL*>::setBlockFromValue()
+	{
+		if (mData.mValue)
+		{
+			name = LLFontGL::nameFromFont(mData.mValue);
+			size = LLFontGL::sizeFromFont(mData.mValue);
+			style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle());
 		}
-		
-		// default to current value
-		return mData.mValue;
 	}
 
 	TypedParam<LLRect>::TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -1966,7 +1979,7 @@ namespace LLInitParam
 		height("height")
 	{}
 
-	LLRect TypedParam<LLRect>::getValueFromBlock() const
+	void TypedParam<LLRect>::setValueFromBlock() const
 	{
 		LLRect rect;
 
@@ -2027,7 +2040,17 @@ namespace LLInitParam
 			rect.mBottom = bottom;
 			rect.mTop = top;
 		}
-		return rect;
+		mData.mValue = rect;
+	}
+	
+	void TypedParam<LLRect>::setBlockFromValue()
+	{
+		left = mData.mValue.mLeft;
+		right = mData.mValue.mRight;
+		bottom = mData.mValue.mBottom;
+		top = mData.mValue.mTop;
+		width.setProvided(false);
+		height.setProvided(false);
 	}
 
 	TypedParam<LLCoordGL>::TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -2037,9 +2060,15 @@ namespace LLInitParam
 	{
 	}
 
-	LLCoordGL TypedParam<LLCoordGL>::getValueFromBlock() const
+	void TypedParam<LLCoordGL>::setValueFromBlock() const
+	{
+		mData.mValue.set(x, y);
+	}
+	
+	void TypedParam<LLCoordGL>::setBlockFromValue()
 	{
-		return LLCoordGL(x, y);
+		x = mData.mValue.mX;
+		y = mData.mValue.mY;
 	}
 
 
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 5ec07f1941..5840e76f5c 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -379,7 +379,8 @@ namespace LLInitParam
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
 
-		LLRect getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	template<>
@@ -401,7 +402,8 @@ namespace LLInitParam
 		Optional<std::string> control;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		LLUIColor getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	// provide a better default for Optional<const LLFontGL*> than NULL
@@ -429,7 +431,8 @@ namespace LLInitParam
 								style;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		const LLFontGL* getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	template<>
@@ -467,7 +470,8 @@ namespace LLInitParam
 						y;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		LLCoordGL getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 }
 
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 6a7879c8c2..625d3c63e5 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -105,9 +105,12 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa
 	}
 }
 
+static LLFastTimer::DeclareTimer FTM_CREATE_CHILDREN("Create XUI Children");
+
 //static 
 void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)
 {
+	LLFastTimer ft(FTM_CREATE_CHILDREN);
 	if (node.isNull()) return;
 
 	for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling())
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index e4bac48fd3..6dab9521bb 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -182,9 +182,6 @@ public:
 	template<typename T>
 	static T* createWidget(typename T::Params& params, LLView* parent = NULL)
 	{
-		// Apply layout transformations, usually munging rect
-		T::setupParams(params, parent);
-
 		T* widget = NULL;
 
 		if (!params.validateBlock())
@@ -309,7 +306,8 @@ fail:
 				output_node, output_params, &default_params);
 		}
 
-		params.from_xui = true;
+		// Apply layout transformations, usually munging rect
+		T::setupParams(params, parent);
 
 		T* widget = createWidget<T>(params, parent);
 
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index f941f391eb..1dfc281d93 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -161,22 +161,32 @@ void LLUIImage::onImageLoaded()
 
 namespace LLInitParam
 {
-	LLUIImage* TypedParam<LLUIImage*>::getValueFromBlock() const
+	void TypedParam<LLUIImage*>::setValueFromBlock() const
 	{
 		// The keyword "none" is specifically requesting a null image
 		// do not default to current value. Used to overwrite template images. 
 		if (name() == "none")
 		{
-			return NULL;
+			mData.mValue = NULL;
 		}
 
 		LLUIImage* imagep =  LLUI::getUIImage(name());
-		if (!imagep)
+		if (imagep)
 		{
-			// default to current value
-			imagep = mData.mValue;
+			mData.mValue = imagep;
+		}
+	}
+	
+	void TypedParam<LLUIImage*>::setBlockFromValue()
+	{
+		if (mData.mValue == NULL)
+		{
+			name = "none";
+		}
+		else
+		{
+			name = mData.mValue->getName();
 		}
-		return imagep;
 	}
 
 	
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
index 5fa9610ab2..bdfc44262d 100644
--- a/indra/llui/lluiimage.h
+++ b/indra/llui/lluiimage.h
@@ -111,7 +111,8 @@ namespace LLInitParam
 		{
 		}
 
-		LLUIImage* getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	// Need custom comparison function for our test app, which only loads
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 7932b749a8..9f6fc1f298 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -2501,6 +2501,8 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		p.layout = parent->getLayout();
 	}
 
+	p.from_xui = true;
+
 	if (parent)
 	{
 		LLRect parent_rect = parent->getLocalRect();
@@ -2516,7 +2518,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		}
 
 		// convert negative or centered coordinates to parent relative values
-		// Note: some of this logic matches the logic in TypedParam<LLRect>::getValueFromBlock()
+		// Note: some of this logic matches the logic in TypedParam<LLRect>::setValueFromBlock()
 
 		if (p.center_horiz)
 		{
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 493ddaa378..7e1e4a3d21 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -1,5 +1,5 @@
 /** 
- * @file llinitparam.h
+f * @file llinitparam.h
  * @brief parameter block abstraction for creating complex objects and 
  * parsing construction parameters from xml and LLSD
  *
@@ -405,6 +405,41 @@ namespace LLInitParam
 	class BaseBlock
 	{
 	public:
+		// "Multiple" constraint types
+		struct AnyAmount
+		{
+			static U32 minCount() { return 0; }
+			static U32 maxCount() { return U32_MAX; }
+		};
+
+		template<U32 MIN_AMOUNT>
+		struct AtLeast
+		{
+			static U32 minCount() { return MIN_AMOUNT; }
+			static U32 maxCount() { return U32_MAX; }
+		};
+
+		template<U32 MAX_AMOUNT>
+		struct AtMost
+		{
+			static U32 minCount() { return 0; }
+			static U32 maxCount() { return MAX_AMOUNT; }
+		};
+
+		template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
+		struct Between
+		{
+			static U32 minCount() { return MIN_AMOUNT; }
+			static U32 maxCount() { return MAX_AMOUNT; }
+		};
+
+		template<U32 EXACT_COUNT>
+		struct Exactly
+		{
+			static U32 minCount() { return EXACT_COUNT; }
+			static U32 maxCount() { return EXACT_COUNT; }
+		};
+
 		// this typedef identifies derived classes as being blocks
 		typedef void baseblock_base_class_t;
 		LOG_CLASS(BaseBlock);
@@ -1365,40 +1400,6 @@ namespace LLInitParam
 		}
 	};
 
-	struct AnyAmount
-	{
-		static U32 minCount() { return 0; }
-		static U32 maxCount() { return U32_MAX; }
-	};
-
-	template<U32 MIN_AMOUNT>
-	struct AtLeast
-	{
-		static U32 minCount() { return MIN_AMOUNT; }
-		static U32 maxCount() { return U32_MAX; }
-	};
-
-	template<U32 MAX_AMOUNT>
-	struct AtMost
-	{
-		static U32 minCount() { return 0; }
-		static U32 maxCount() { return MAX_AMOUNT; }
-	};
-
-	template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
-	struct Between
-	{
-		static U32 minCount() { return MIN_AMOUNT; }
-		static U32 maxCount() { return MAX_AMOUNT; }
-	};
-
-	template<U32 EXACT_COUNT>
-	struct Exactly
-	{
-		static U32 minCount() { return EXACT_COUNT; }
-		static U32 maxCount() { return EXACT_COUNT; }
-	};
-
 	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
 	class Block 
 	:	public BASE_BLOCK
@@ -1491,7 +1492,7 @@ namespace LLInitParam
 
 		};
 
-		template <typename T, typename RANGE = AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
+		template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
 		class Multiple : public TypedParam<T, NAME_VALUE_LOOKUP, true>
 		{
 		public:
@@ -1711,7 +1712,7 @@ namespace LLInitParam
 			{
 				if (block_t::validateBlock(true))
 				{
-					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
+					static_cast<const DERIVED*>(this)->setValueFromBlock();
 					// clear stale keyword associated with old value
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
@@ -1737,6 +1738,7 @@ namespace LLInitParam
 			mData.mValue = val;
 			mData.clearKey();
 			setProvided(flag_as_provided);
+			static_cast<DERIVED*>(this)->setBlockFromValue();
 		}
 
 		void setIfNotProvided(value_assignment_t val, bool flag_as_provided = true)
@@ -1768,7 +1770,7 @@ namespace LLInitParam
 				// go ahead and issue warnings at this point if any param is invalid
 				if(block_t::validateBlock(false))
 				{
-					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
+					static_cast<const DERIVED*>(this)->setValueFromBlock();
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
 				}
-- 
cgit v1.2.3


From a183fb9f5efd5c49a0da7442dd8b7202db6167e7 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Tue, 15 Dec 2009 19:48:02 -0800
Subject: fix for gcc build

---
 indra/llui/lluictrlfactory.cpp | 1 +
 indra/llui/lluictrlfactory.h   | 5 +++--
 2 files changed, 4 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 625d3c63e5..40b22f515a 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -396,6 +396,7 @@ BOOL LLUICtrlFactory::getAttributeColor(LLXMLNodePtr node, const std::string& na
 //static
 void LLUICtrlFactory::setCtrlParent(LLView* view, LLView* parent, S32 tab_group)
 {
+	if (tab_group == S32_MAX) tab_group = parent->getLastTabGroup();
 	parent->addChild(view, tab_group);
 }
 
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 6dab9521bb..9d26a9c9ef 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -201,7 +201,7 @@ public:
 
 		if (parent)
 		{
-			S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : parent->getLastTabGroup();
+			S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : S32_MAX;
 			setCtrlParent(widget, parent, tab_group);
 		}
 		return widget;
@@ -311,7 +311,8 @@ fail:
 
 		T* widget = createWidget<T>(params, parent);
 
-		createChildren(widget, node, typename T::child_registry_t::instance(), output_node);
+		typedef typename T::child_registry_t registry_t;
+		createChildren(widget, node, registry_t::instance(), output_node);
 
 		if (widget && !widget->postBuild())
 		{
-- 
cgit v1.2.3


From 4532611499f9227a0448df0849fe57803fd49099 Mon Sep 17 00:00:00 2001
From: Rick Pasetto <rick@lindenlab.com>
Date: Tue, 15 Dec 2009 19:54:20 -0800
Subject: fix for llui unit test

---
 indra/integration_tests/llui_libtest/llwidgetreg.cpp | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llui_libtest/llwidgetreg.cpp b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
index 316fd810c0..c6e2e79a09 100644
--- a/indra/integration_tests/llui_libtest/llwidgetreg.cpp
+++ b/indra/integration_tests/llui_libtest/llwidgetreg.cpp
@@ -85,7 +85,6 @@ void LLWidgetReg::initClass(bool register_widgets)
 		LLDefaultChildRegistry::Register<LLLayoutStack> layout_stack("layout_stack", &LLLayoutStack::fromXML);
 		LLDefaultChildRegistry::Register<LLProgressBar> progress_bar("progress_bar");
 		LLDefaultChildRegistry::Register<LLRadioGroup> radio_group("radio_group");
-		LLDefaultChildRegistry::Register<LLRadioCtrl> radio_item("radio_item");
 		LLDefaultChildRegistry::Register<LLSearchEditor> search_editor("search_editor");
 		LLDefaultChildRegistry::Register<LLScrollContainer> scroll_container("scroll_container");
 		LLDefaultChildRegistry::Register<LLScrollingPanelList> scrolling_panel_list("scrolling_panel_list");
-- 
cgit v1.2.3


From 46f56f5d528ea3566f00e058250cb06361c2c10e Mon Sep 17 00:00:00 2001
From: Leyla Farazha <leyla@lindenlab.com>
Date: Wed, 16 Dec 2009 09:45:15 -0800
Subject: eof newline

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

(limited to 'indra')

diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 40b22f515a..01715c2792 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -455,4 +455,4 @@ dummy_widget_creator_func_t* LLUICtrlFactory::getDefaultWidgetFunc(const std::ty
 const std::string* LLUICtrlFactory::getWidgetTag(const std::type_info* widget_type)
 {
 	return LLWidgetNameRegistry::instance().getValue(widget_type);
-}
\ No newline at end of file
+}
-- 
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')

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 d2ba39861475ce716ad7fd4a176553dd1dc056ca Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Wed, 16 Dec 2009 14:40:11 -0800
Subject: EXT-3522 Radio group layout not top-left based (was Sell Land floater
 missing sale of object) Most radio button layouts were broken because the
 radio item generation code wasn't fixing up the rectangles.  This may not be
 the right fix, I need to talk to Richard.

---
 indra/llui/llradiogroup.cpp | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'indra')

diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index 74e30cd633..366290fd70 100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -116,6 +116,10 @@ void LLRadioGroup::initFromParams(const Params& p)
 		item_params.commit_callback.function = boost::bind(&LLRadioGroup::onClickButton, this, _1);
 		item_params.from_xui = p.from_xui;
 
+		// *HACK: Because we are explicitly building our own children,
+		// need to fix-up layout for topleft
+		LLRadioCtrl::setupParams(item_params, this);
+
 		LLRadioCtrl* item = LLUICtrlFactory::create<LLRadioCtrl>(item_params, this);
 		mRadioButtons.push_back(item);
 	}
-- 
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')

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')

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 0be35a9fdb7fced0787653cb6f4aa45c2bf20a50 Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Wed, 16 Dec 2009 16:03:37 -0800
Subject: Backed out changeset: f7fa81994ec8, 6611 (f7fa81994ec8) EXT-3522
 Radio group layout not top-left based (was Sell Land floater missing sa

---
 indra/llui/llradiogroup.cpp | 4 ----
 1 file changed, 4 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index 366290fd70..74e30cd633 100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -116,10 +116,6 @@ void LLRadioGroup::initFromParams(const Params& p)
 		item_params.commit_callback.function = boost::bind(&LLRadioGroup::onClickButton, this, _1);
 		item_params.from_xui = p.from_xui;
 
-		// *HACK: Because we are explicitly building our own children,
-		// need to fix-up layout for topleft
-		LLRadioCtrl::setupParams(item_params, this);
-
 		LLRadioCtrl* item = LLUICtrlFactory::create<LLRadioCtrl>(item_params, this);
 		mRadioButtons.push_back(item);
 	}
-- 
cgit v1.2.3


From e8fe81c4fcbec173606b5ad635e0b774e4d8b24b Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Wed, 16 Dec 2009 16:04:09 -0800
Subject: Backed out changeset: cfa60aef8061, added setBlockFromValue so
 setting a LLRect param in code will set the individua

---
 indra/llrender/llfontgl.cpp    | 23 ------------
 indra/llrender/llfontgl.h      |  1 -
 indra/llui/lllayoutstack.h     |  5 +--
 indra/llui/llradiogroup.h      |  2 +-
 indra/llui/llsearcheditor.h    | 14 ++++----
 indra/llui/llui.cpp            | 79 +++++++++++++-----------------------------
 indra/llui/llui.h              | 12 +++----
 indra/llui/lluictrlfactory.cpp |  3 --
 indra/llui/lluictrlfactory.h   |  6 ++--
 indra/llui/lluiimage.cpp       | 22 ++++--------
 indra/llui/lluiimage.h         |  3 +-
 indra/llui/llview.cpp          |  4 +--
 indra/llxuixml/llinitparam.h   | 78 ++++++++++++++++++++---------------------
 13 files changed, 89 insertions(+), 163 deletions(-)

(limited to 'indra')

diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index 7ad5f9608f..db1f019a81 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -760,29 +760,6 @@ U8 LLFontGL::getStyleFromString(const std::string &style)
 	return ret;
 }
 
-// static
-std::string LLFontGL::getStringFromStyle(U8 style)
-{
-	std::string style_string;
-	if (style & NORMAL)
-	{
-		style_string += "|NORMAL";
-	}
-	if (style & BOLD)
-	{
-		style_string += "|BOLD";
-	}
-	if (style & ITALIC)
-	{
-		style_string += "|ITALIC";
-	}
-	if (style & UNDERLINE)
-	{
-		style_string += "|UNDERLINE";
-	}
-	return style_string;
-}
-
 // static
 std::string LLFontGL::nameFromFont(const LLFontGL* fontp)
 {
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index ea8eee7690..bb7d8524e7 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -144,7 +144,6 @@ public:
 
 	// Takes a string with potentially several flags, i.e. "NORMAL|BOLD|ITALIC"
 	static U8 getStyleFromString(const std::string &style);
-	static std::string getStringFromStyle(U8 style);
 
 	static std::string nameFromFont(const LLFontGL* fontp);
 	static std::string sizeFromFont(const LLFontGL* fontp);
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index c1af428674..abd5436018 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -45,8 +45,9 @@ public:
 	{
 		Optional<std::string>	orientation;
 		Optional<S32>			border_size;
-		Optional<bool>			animate,
-								clip;
+		Optional<bool>			animate;
+		Optional<bool>			clip;
+		// mMinWidth and mMinHeight are calculated, not set in XML
 
 		Params();
 	};
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
index b178bb36ca..2edfd7c2ca 100644
--- a/indra/llui/llradiogroup.h
+++ b/indra/llui/llradiogroup.h
@@ -56,7 +56,7 @@ public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
 		Optional<bool>						has_border;
-		Multiple<ItemParams, AtLeast<1> >	items;
+		Multiple<ItemParams, LLInitParam::AtLeast<1> >	items;
 		Params();
 	};
 
diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h
index 714aca9337..bd2d595174 100644
--- a/indra/llui/llsearcheditor.h
+++ b/indra/llui/llsearcheditor.h
@@ -50,17 +50,15 @@ class LLSearchEditor : public LLUICtrl
 public:
 	struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>
 	{
-		Optional<LLButton::Params>	search_button, 
-									clear_button;
-		Optional<bool>				search_button_visible, 
-									clear_button_visible;
+		Optional<LLButton::Params> search_button, clear_button;
+		Optional<bool> search_button_visible, clear_button_visible;
 		Optional<commit_callback_t> keystroke_callback;
 
 		Params()
-		:	search_button("search_button"),
-			search_button_visible("search_button_visible"),
-			clear_button("clear_button"), 
-			clear_button_visible("clear_button_visible")
+		: search_button("search_button")
+		, search_button_visible("search_button_visible")
+		, clear_button("clear_button")
+		, clear_button_visible("clear_button_visible")
 		{
 			name = "search_editor";
 		}
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 67d3ed408b..6603887905 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1896,26 +1896,17 @@ namespace LLInitParam
 		control("")
 	{}
 
-	void TypedParam<LLUIColor>::setValueFromBlock() const
+	LLUIColor TypedParam<LLUIColor>::getValueFromBlock() const
 	{
 		if (control.isProvided())
 		{
-			mData.mValue = LLUIColorTable::instance().getColor(control);
+			return LLUIColorTable::instance().getColor(control);
 		}
 		else
 		{
-			mData.mValue = LLColor4(red, green, blue, alpha);
+			return LLColor4(red, green, blue, alpha);
 		}
 	}
-	
-	void TypedParam<LLUIColor>::setBlockFromValue()
-	{
-		LLColor4 color = mData.mValue.get();
-		red = color.mV[VRED];
-		green = color.mV[VGREEN];
-		blue = color.mV[VBLUE];
-		alpha = color.mV[VALPHA];
-	}
 
 	void TypeValues<LLUIColor>::declareValues()
 	{
@@ -1941,32 +1932,28 @@ namespace LLInitParam
 		addSynonym(name, "");
 	}
 
-	void TypedParam<const LLFontGL*>::setValueFromBlock() const
+	const LLFontGL* TypedParam<const LLFontGL*>::getValueFromBlock() const
 	{
-		const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
-		if (res_fontp)
+		if (name.isProvided())
 		{
-			mData.mValue = res_fontp;
-		}
+			const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
+			if (res_fontp)
+			{
+				return res_fontp;
+			}
 
-		U8 fontstyle = 0;
-		fontstyle = LLFontGL::getStyleFromString(style());
-		LLFontDescriptor desc(name(), size(), fontstyle);
-		const LLFontGL* fontp = LLFontGL::getFont(desc);
-		if (fontp)
-		{
-			mData.mValue = fontp;
-		}		
-	}
-	
-	void TypedParam<const LLFontGL*>::setBlockFromValue()
-	{
-		if (mData.mValue)
-		{
-			name = LLFontGL::nameFromFont(mData.mValue);
-			size = LLFontGL::sizeFromFont(mData.mValue);
-			style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle());
+			U8 fontstyle = 0;
+			fontstyle = LLFontGL::getStyleFromString(style());
+			LLFontDescriptor desc(name(), size(), fontstyle);
+			const LLFontGL* fontp = LLFontGL::getFont(desc);
+			if (fontp)
+			{
+				return fontp;
+			}
 		}
+		
+		// default to current value
+		return mData.mValue;
 	}
 
 	TypedParam<LLRect>::TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -1979,7 +1966,7 @@ namespace LLInitParam
 		height("height")
 	{}
 
-	void TypedParam<LLRect>::setValueFromBlock() const
+	LLRect TypedParam<LLRect>::getValueFromBlock() const
 	{
 		LLRect rect;
 
@@ -2040,17 +2027,7 @@ namespace LLInitParam
 			rect.mBottom = bottom;
 			rect.mTop = top;
 		}
-		mData.mValue = rect;
-	}
-	
-	void TypedParam<LLRect>::setBlockFromValue()
-	{
-		left = mData.mValue.mLeft;
-		right = mData.mValue.mRight;
-		bottom = mData.mValue.mBottom;
-		top = mData.mValue.mTop;
-		width.setProvided(false);
-		height.setProvided(false);
+		return rect;
 	}
 
 	TypedParam<LLCoordGL>::TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -2060,15 +2037,9 @@ namespace LLInitParam
 	{
 	}
 
-	void TypedParam<LLCoordGL>::setValueFromBlock() const
-	{
-		mData.mValue.set(x, y);
-	}
-	
-	void TypedParam<LLCoordGL>::setBlockFromValue()
+	LLCoordGL TypedParam<LLCoordGL>::getValueFromBlock() const
 	{
-		x = mData.mValue.mX;
-		y = mData.mValue.mY;
+		return LLCoordGL(x, y);
 	}
 
 
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 5840e76f5c..5ec07f1941 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -379,8 +379,7 @@ namespace LLInitParam
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
 
-		void setValueFromBlock() const;
-		void setBlockFromValue();
+		LLRect getValueFromBlock() const;
 	};
 
 	template<>
@@ -402,8 +401,7 @@ namespace LLInitParam
 		Optional<std::string> control;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		void setValueFromBlock() const;
-		void setBlockFromValue();
+		LLUIColor getValueFromBlock() const;
 	};
 
 	// provide a better default for Optional<const LLFontGL*> than NULL
@@ -431,8 +429,7 @@ namespace LLInitParam
 								style;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		void setValueFromBlock() const;
-		void setBlockFromValue();
+		const LLFontGL* getValueFromBlock() const;
 	};
 
 	template<>
@@ -470,8 +467,7 @@ namespace LLInitParam
 						y;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		void setValueFromBlock() const;
-		void setBlockFromValue();
+		LLCoordGL getValueFromBlock() const;
 	};
 }
 
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 625d3c63e5..6a7879c8c2 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -105,12 +105,9 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa
 	}
 }
 
-static LLFastTimer::DeclareTimer FTM_CREATE_CHILDREN("Create XUI Children");
-
 //static 
 void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)
 {
-	LLFastTimer ft(FTM_CREATE_CHILDREN);
 	if (node.isNull()) return;
 
 	for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling())
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index 6dab9521bb..e4bac48fd3 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -182,6 +182,9 @@ public:
 	template<typename T>
 	static T* createWidget(typename T::Params& params, LLView* parent = NULL)
 	{
+		// Apply layout transformations, usually munging rect
+		T::setupParams(params, parent);
+
 		T* widget = NULL;
 
 		if (!params.validateBlock())
@@ -306,8 +309,7 @@ fail:
 				output_node, output_params, &default_params);
 		}
 
-		// Apply layout transformations, usually munging rect
-		T::setupParams(params, parent);
+		params.from_xui = true;
 
 		T* widget = createWidget<T>(params, parent);
 
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index 1dfc281d93..f941f391eb 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -161,32 +161,22 @@ void LLUIImage::onImageLoaded()
 
 namespace LLInitParam
 {
-	void TypedParam<LLUIImage*>::setValueFromBlock() const
+	LLUIImage* TypedParam<LLUIImage*>::getValueFromBlock() const
 	{
 		// The keyword "none" is specifically requesting a null image
 		// do not default to current value. Used to overwrite template images. 
 		if (name() == "none")
 		{
-			mData.mValue = NULL;
+			return NULL;
 		}
 
 		LLUIImage* imagep =  LLUI::getUIImage(name());
-		if (imagep)
+		if (!imagep)
 		{
-			mData.mValue = imagep;
-		}
-	}
-	
-	void TypedParam<LLUIImage*>::setBlockFromValue()
-	{
-		if (mData.mValue == NULL)
-		{
-			name = "none";
-		}
-		else
-		{
-			name = mData.mValue->getName();
+			// default to current value
+			imagep = mData.mValue;
 		}
+		return imagep;
 	}
 
 	
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
index bdfc44262d..5fa9610ab2 100644
--- a/indra/llui/lluiimage.h
+++ b/indra/llui/lluiimage.h
@@ -111,8 +111,7 @@ namespace LLInitParam
 		{
 		}
 
-		void setValueFromBlock() const;
-		void setBlockFromValue();
+		LLUIImage* getValueFromBlock() const;
 	};
 
 	// Need custom comparison function for our test app, which only loads
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 9f6fc1f298..7932b749a8 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -2501,8 +2501,6 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		p.layout = parent->getLayout();
 	}
 
-	p.from_xui = true;
-
 	if (parent)
 	{
 		LLRect parent_rect = parent->getLocalRect();
@@ -2518,7 +2516,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		}
 
 		// convert negative or centered coordinates to parent relative values
-		// Note: some of this logic matches the logic in TypedParam<LLRect>::setValueFromBlock()
+		// Note: some of this logic matches the logic in TypedParam<LLRect>::getValueFromBlock()
 
 		if (p.center_horiz)
 		{
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 7e1e4a3d21..493ddaa378 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -1,5 +1,5 @@
 /** 
-f * @file llinitparam.h
+ * @file llinitparam.h
  * @brief parameter block abstraction for creating complex objects and 
  * parsing construction parameters from xml and LLSD
  *
@@ -405,41 +405,6 @@ namespace LLInitParam
 	class BaseBlock
 	{
 	public:
-		// "Multiple" constraint types
-		struct AnyAmount
-		{
-			static U32 minCount() { return 0; }
-			static U32 maxCount() { return U32_MAX; }
-		};
-
-		template<U32 MIN_AMOUNT>
-		struct AtLeast
-		{
-			static U32 minCount() { return MIN_AMOUNT; }
-			static U32 maxCount() { return U32_MAX; }
-		};
-
-		template<U32 MAX_AMOUNT>
-		struct AtMost
-		{
-			static U32 minCount() { return 0; }
-			static U32 maxCount() { return MAX_AMOUNT; }
-		};
-
-		template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
-		struct Between
-		{
-			static U32 minCount() { return MIN_AMOUNT; }
-			static U32 maxCount() { return MAX_AMOUNT; }
-		};
-
-		template<U32 EXACT_COUNT>
-		struct Exactly
-		{
-			static U32 minCount() { return EXACT_COUNT; }
-			static U32 maxCount() { return EXACT_COUNT; }
-		};
-
 		// this typedef identifies derived classes as being blocks
 		typedef void baseblock_base_class_t;
 		LOG_CLASS(BaseBlock);
@@ -1400,6 +1365,40 @@ namespace LLInitParam
 		}
 	};
 
+	struct AnyAmount
+	{
+		static U32 minCount() { return 0; }
+		static U32 maxCount() { return U32_MAX; }
+	};
+
+	template<U32 MIN_AMOUNT>
+	struct AtLeast
+	{
+		static U32 minCount() { return MIN_AMOUNT; }
+		static U32 maxCount() { return U32_MAX; }
+	};
+
+	template<U32 MAX_AMOUNT>
+	struct AtMost
+	{
+		static U32 minCount() { return 0; }
+		static U32 maxCount() { return MAX_AMOUNT; }
+	};
+
+	template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
+	struct Between
+	{
+		static U32 minCount() { return MIN_AMOUNT; }
+		static U32 maxCount() { return MAX_AMOUNT; }
+	};
+
+	template<U32 EXACT_COUNT>
+	struct Exactly
+	{
+		static U32 minCount() { return EXACT_COUNT; }
+		static U32 maxCount() { return EXACT_COUNT; }
+	};
+
 	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
 	class Block 
 	:	public BASE_BLOCK
@@ -1492,7 +1491,7 @@ namespace LLInitParam
 
 		};
 
-		template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
+		template <typename T, typename RANGE = AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
 		class Multiple : public TypedParam<T, NAME_VALUE_LOOKUP, true>
 		{
 		public:
@@ -1712,7 +1711,7 @@ namespace LLInitParam
 			{
 				if (block_t::validateBlock(true))
 				{
-					static_cast<const DERIVED*>(this)->setValueFromBlock();
+					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
 					// clear stale keyword associated with old value
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
@@ -1738,7 +1737,6 @@ namespace LLInitParam
 			mData.mValue = val;
 			mData.clearKey();
 			setProvided(flag_as_provided);
-			static_cast<DERIVED*>(this)->setBlockFromValue();
 		}
 
 		void setIfNotProvided(value_assignment_t val, bool flag_as_provided = true)
@@ -1770,7 +1768,7 @@ namespace LLInitParam
 				// go ahead and issue warnings at this point if any param is invalid
 				if(block_t::validateBlock(false))
 				{
-					static_cast<const DERIVED*>(this)->setValueFromBlock();
+					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
 				}
-- 
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')

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 f452c01915be011814d92dcc1a398f450b6ce9c2 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 09:54:44 -0800
Subject: EXT-3087 - Crash when avatar icon truncated in interactive
 notifications

reviewed by Mani
---
 indra/llui/lltextbase.cpp | 8 ++++++++
 1 file changed, 8 insertions(+)

(limited to 'indra')

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 1f120a1483..6c983fd92e 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1138,6 +1138,8 @@ void LLTextBase::reflow(S32 start_index)
 			line_height = llmax(line_height, segment_height);
 			remaining_pixels -= segment_width;
 
+			// getNumChars() and getDimensions() should return consistent results
+			llassert_always(remaining_pixels >= 0);
 			seg_offset += character_count;
 
 			S32 last_segment_char_on_line = segment->getStart() + seg_offset;
@@ -2464,6 +2466,12 @@ S32	LLNormalTextSegment::getNumChars(S32 num_pixels, S32 segment_offset, S32 lin
 {
 	LLWString text = mEditor.getWText();
 
+	LLUIImagePtr image = mStyle->getImage();
+	if( image.notNull())
+	{
+		num_pixels -= image->getWidth();
+	}
+
 	// search for newline and if found, truncate there
 	S32 last_char = mStart + segment_offset;
 	for (; last_char != mEnd; ++last_char)
-- 
cgit v1.2.3


From 9ff869a6b287a2b4b8c94219584d1c7b66ebb399 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 10:01:55 -0800
Subject: Backed out changeset: 4d482c1ed041

---
 indra/llrender/llfontgl.cpp    | 23 ++++++++++++
 indra/llrender/llfontgl.h      |  1 +
 indra/llui/lllayoutstack.h     |  5 ++-
 indra/llui/llradiogroup.h      |  2 +-
 indra/llui/llsearcheditor.h    | 14 ++++----
 indra/llui/llui.cpp            | 79 +++++++++++++++++++++++++++++-------------
 indra/llui/llui.h              | 12 ++++---
 indra/llui/lluictrlfactory.cpp |  3 ++
 indra/llui/lluictrlfactory.h   |  6 ++--
 indra/llui/lluiimage.cpp       | 22 ++++++++----
 indra/llui/lluiimage.h         |  3 +-
 indra/llui/llview.cpp          |  4 ++-
 indra/llxuixml/llinitparam.h   | 78 +++++++++++++++++++++--------------------
 13 files changed, 163 insertions(+), 89 deletions(-)

(limited to 'indra')

diff --git a/indra/llrender/llfontgl.cpp b/indra/llrender/llfontgl.cpp
index db1f019a81..7ad5f9608f 100644
--- a/indra/llrender/llfontgl.cpp
+++ b/indra/llrender/llfontgl.cpp
@@ -760,6 +760,29 @@ U8 LLFontGL::getStyleFromString(const std::string &style)
 	return ret;
 }
 
+// static
+std::string LLFontGL::getStringFromStyle(U8 style)
+{
+	std::string style_string;
+	if (style & NORMAL)
+	{
+		style_string += "|NORMAL";
+	}
+	if (style & BOLD)
+	{
+		style_string += "|BOLD";
+	}
+	if (style & ITALIC)
+	{
+		style_string += "|ITALIC";
+	}
+	if (style & UNDERLINE)
+	{
+		style_string += "|UNDERLINE";
+	}
+	return style_string;
+}
+
 // static
 std::string LLFontGL::nameFromFont(const LLFontGL* fontp)
 {
diff --git a/indra/llrender/llfontgl.h b/indra/llrender/llfontgl.h
index bb7d8524e7..ea8eee7690 100644
--- a/indra/llrender/llfontgl.h
+++ b/indra/llrender/llfontgl.h
@@ -144,6 +144,7 @@ public:
 
 	// Takes a string with potentially several flags, i.e. "NORMAL|BOLD|ITALIC"
 	static U8 getStyleFromString(const std::string &style);
+	static std::string getStringFromStyle(U8 style);
 
 	static std::string nameFromFont(const LLFontGL* fontp);
 	static std::string sizeFromFont(const LLFontGL* fontp);
diff --git a/indra/llui/lllayoutstack.h b/indra/llui/lllayoutstack.h
index abd5436018..c1af428674 100644
--- a/indra/llui/lllayoutstack.h
+++ b/indra/llui/lllayoutstack.h
@@ -45,9 +45,8 @@ public:
 	{
 		Optional<std::string>	orientation;
 		Optional<S32>			border_size;
-		Optional<bool>			animate;
-		Optional<bool>			clip;
-		// mMinWidth and mMinHeight are calculated, not set in XML
+		Optional<bool>			animate,
+								clip;
 
 		Params();
 	};
diff --git a/indra/llui/llradiogroup.h b/indra/llui/llradiogroup.h
index 2edfd7c2ca..b178bb36ca 100644
--- a/indra/llui/llradiogroup.h
+++ b/indra/llui/llradiogroup.h
@@ -56,7 +56,7 @@ public:
 	struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
 	{
 		Optional<bool>						has_border;
-		Multiple<ItemParams, LLInitParam::AtLeast<1> >	items;
+		Multiple<ItemParams, AtLeast<1> >	items;
 		Params();
 	};
 
diff --git a/indra/llui/llsearcheditor.h b/indra/llui/llsearcheditor.h
index bd2d595174..714aca9337 100644
--- a/indra/llui/llsearcheditor.h
+++ b/indra/llui/llsearcheditor.h
@@ -50,15 +50,17 @@ class LLSearchEditor : public LLUICtrl
 public:
 	struct Params : public LLInitParam::Block<Params, LLLineEditor::Params>
 	{
-		Optional<LLButton::Params> search_button, clear_button;
-		Optional<bool> search_button_visible, clear_button_visible;
+		Optional<LLButton::Params>	search_button, 
+									clear_button;
+		Optional<bool>				search_button_visible, 
+									clear_button_visible;
 		Optional<commit_callback_t> keystroke_callback;
 
 		Params()
-		: search_button("search_button")
-		, search_button_visible("search_button_visible")
-		, clear_button("clear_button")
-		, clear_button_visible("clear_button_visible")
+		:	search_button("search_button"),
+			search_button_visible("search_button_visible"),
+			clear_button("clear_button"), 
+			clear_button_visible("clear_button_visible")
 		{
 			name = "search_editor";
 		}
diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 6603887905..67d3ed408b 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1896,17 +1896,26 @@ namespace LLInitParam
 		control("")
 	{}
 
-	LLUIColor TypedParam<LLUIColor>::getValueFromBlock() const
+	void TypedParam<LLUIColor>::setValueFromBlock() const
 	{
 		if (control.isProvided())
 		{
-			return LLUIColorTable::instance().getColor(control);
+			mData.mValue = LLUIColorTable::instance().getColor(control);
 		}
 		else
 		{
-			return LLColor4(red, green, blue, alpha);
+			mData.mValue = LLColor4(red, green, blue, alpha);
 		}
 	}
+	
+	void TypedParam<LLUIColor>::setBlockFromValue()
+	{
+		LLColor4 color = mData.mValue.get();
+		red = color.mV[VRED];
+		green = color.mV[VGREEN];
+		blue = color.mV[VBLUE];
+		alpha = color.mV[VALPHA];
+	}
 
 	void TypeValues<LLUIColor>::declareValues()
 	{
@@ -1932,28 +1941,32 @@ namespace LLInitParam
 		addSynonym(name, "");
 	}
 
-	const LLFontGL* TypedParam<const LLFontGL*>::getValueFromBlock() const
+	void TypedParam<const LLFontGL*>::setValueFromBlock() const
 	{
-		if (name.isProvided())
+		const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
+		if (res_fontp)
 		{
-			const LLFontGL* res_fontp = LLFontGL::getFontByName(name);
-			if (res_fontp)
-			{
-				return res_fontp;
-			}
+			mData.mValue = res_fontp;
+		}
 
-			U8 fontstyle = 0;
-			fontstyle = LLFontGL::getStyleFromString(style());
-			LLFontDescriptor desc(name(), size(), fontstyle);
-			const LLFontGL* fontp = LLFontGL::getFont(desc);
-			if (fontp)
-			{
-				return fontp;
-			}
+		U8 fontstyle = 0;
+		fontstyle = LLFontGL::getStyleFromString(style());
+		LLFontDescriptor desc(name(), size(), fontstyle);
+		const LLFontGL* fontp = LLFontGL::getFont(desc);
+		if (fontp)
+		{
+			mData.mValue = fontp;
+		}		
+	}
+	
+	void TypedParam<const LLFontGL*>::setBlockFromValue()
+	{
+		if (mData.mValue)
+		{
+			name = LLFontGL::nameFromFont(mData.mValue);
+			size = LLFontGL::sizeFromFont(mData.mValue);
+			style = LLFontGL::getStringFromStyle(mData.mValue->getFontDesc().getStyle());
 		}
-		
-		// default to current value
-		return mData.mValue;
 	}
 
 	TypedParam<LLRect>::TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -1966,7 +1979,7 @@ namespace LLInitParam
 		height("height")
 	{}
 
-	LLRect TypedParam<LLRect>::getValueFromBlock() const
+	void TypedParam<LLRect>::setValueFromBlock() const
 	{
 		LLRect rect;
 
@@ -2027,7 +2040,17 @@ namespace LLInitParam
 			rect.mBottom = bottom;
 			rect.mTop = top;
 		}
-		return rect;
+		mData.mValue = rect;
+	}
+	
+	void TypedParam<LLRect>::setBlockFromValue()
+	{
+		left = mData.mValue.mLeft;
+		right = mData.mValue.mRight;
+		bottom = mData.mValue.mBottom;
+		top = mData.mValue.mTop;
+		width.setProvided(false);
+		height.setProvided(false);
 	}
 
 	TypedParam<LLCoordGL>::TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count)
@@ -2037,9 +2060,15 @@ namespace LLInitParam
 	{
 	}
 
-	LLCoordGL TypedParam<LLCoordGL>::getValueFromBlock() const
+	void TypedParam<LLCoordGL>::setValueFromBlock() const
+	{
+		mData.mValue.set(x, y);
+	}
+	
+	void TypedParam<LLCoordGL>::setBlockFromValue()
 	{
-		return LLCoordGL(x, y);
+		x = mData.mValue.mX;
+		y = mData.mValue.mY;
 	}
 
 
diff --git a/indra/llui/llui.h b/indra/llui/llui.h
index 5ec07f1941..5840e76f5c 100644
--- a/indra/llui/llui.h
+++ b/indra/llui/llui.h
@@ -379,7 +379,8 @@ namespace LLInitParam
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLRect& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
 
-		LLRect getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	template<>
@@ -401,7 +402,8 @@ namespace LLInitParam
 		Optional<std::string> control;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLUIColor& value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		LLUIColor getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	// provide a better default for Optional<const LLFontGL*> than NULL
@@ -429,7 +431,8 @@ namespace LLInitParam
 								style;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, const LLFontGL* const value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		const LLFontGL* getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	template<>
@@ -467,7 +470,8 @@ namespace LLInitParam
 						y;
 
 		TypedParam(BlockDescriptor& descriptor, const char* name, LLCoordGL value, ParamDescriptor::validation_func_t func, S32 min_count, S32 max_count);
-		LLCoordGL getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 }
 
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 6a7879c8c2..625d3c63e5 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -105,9 +105,12 @@ void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitPa
 	}
 }
 
+static LLFastTimer::DeclareTimer FTM_CREATE_CHILDREN("Create XUI Children");
+
 //static 
 void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)
 {
+	LLFastTimer ft(FTM_CREATE_CHILDREN);
 	if (node.isNull()) return;
 
 	for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling())
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index e4bac48fd3..6dab9521bb 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -182,9 +182,6 @@ public:
 	template<typename T>
 	static T* createWidget(typename T::Params& params, LLView* parent = NULL)
 	{
-		// Apply layout transformations, usually munging rect
-		T::setupParams(params, parent);
-
 		T* widget = NULL;
 
 		if (!params.validateBlock())
@@ -309,7 +306,8 @@ fail:
 				output_node, output_params, &default_params);
 		}
 
-		params.from_xui = true;
+		// Apply layout transformations, usually munging rect
+		T::setupParams(params, parent);
 
 		T* widget = createWidget<T>(params, parent);
 
diff --git a/indra/llui/lluiimage.cpp b/indra/llui/lluiimage.cpp
index f941f391eb..1dfc281d93 100644
--- a/indra/llui/lluiimage.cpp
+++ b/indra/llui/lluiimage.cpp
@@ -161,22 +161,32 @@ void LLUIImage::onImageLoaded()
 
 namespace LLInitParam
 {
-	LLUIImage* TypedParam<LLUIImage*>::getValueFromBlock() const
+	void TypedParam<LLUIImage*>::setValueFromBlock() const
 	{
 		// The keyword "none" is specifically requesting a null image
 		// do not default to current value. Used to overwrite template images. 
 		if (name() == "none")
 		{
-			return NULL;
+			mData.mValue = NULL;
 		}
 
 		LLUIImage* imagep =  LLUI::getUIImage(name());
-		if (!imagep)
+		if (imagep)
 		{
-			// default to current value
-			imagep = mData.mValue;
+			mData.mValue = imagep;
+		}
+	}
+	
+	void TypedParam<LLUIImage*>::setBlockFromValue()
+	{
+		if (mData.mValue == NULL)
+		{
+			name = "none";
+		}
+		else
+		{
+			name = mData.mValue->getName();
 		}
-		return imagep;
 	}
 
 	
diff --git a/indra/llui/lluiimage.h b/indra/llui/lluiimage.h
index 5fa9610ab2..bdfc44262d 100644
--- a/indra/llui/lluiimage.h
+++ b/indra/llui/lluiimage.h
@@ -111,7 +111,8 @@ namespace LLInitParam
 		{
 		}
 
-		LLUIImage* getValueFromBlock() const;
+		void setValueFromBlock() const;
+		void setBlockFromValue();
 	};
 
 	// Need custom comparison function for our test app, which only loads
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 7932b749a8..9f6fc1f298 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -2501,6 +2501,8 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		p.layout = parent->getLayout();
 	}
 
+	p.from_xui = true;
+
 	if (parent)
 	{
 		LLRect parent_rect = parent->getLocalRect();
@@ -2516,7 +2518,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		}
 
 		// convert negative or centered coordinates to parent relative values
-		// Note: some of this logic matches the logic in TypedParam<LLRect>::getValueFromBlock()
+		// Note: some of this logic matches the logic in TypedParam<LLRect>::setValueFromBlock()
 
 		if (p.center_horiz)
 		{
diff --git a/indra/llxuixml/llinitparam.h b/indra/llxuixml/llinitparam.h
index 493ddaa378..7e1e4a3d21 100644
--- a/indra/llxuixml/llinitparam.h
+++ b/indra/llxuixml/llinitparam.h
@@ -1,5 +1,5 @@
 /** 
- * @file llinitparam.h
+f * @file llinitparam.h
  * @brief parameter block abstraction for creating complex objects and 
  * parsing construction parameters from xml and LLSD
  *
@@ -405,6 +405,41 @@ namespace LLInitParam
 	class BaseBlock
 	{
 	public:
+		// "Multiple" constraint types
+		struct AnyAmount
+		{
+			static U32 minCount() { return 0; }
+			static U32 maxCount() { return U32_MAX; }
+		};
+
+		template<U32 MIN_AMOUNT>
+		struct AtLeast
+		{
+			static U32 minCount() { return MIN_AMOUNT; }
+			static U32 maxCount() { return U32_MAX; }
+		};
+
+		template<U32 MAX_AMOUNT>
+		struct AtMost
+		{
+			static U32 minCount() { return 0; }
+			static U32 maxCount() { return MAX_AMOUNT; }
+		};
+
+		template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
+		struct Between
+		{
+			static U32 minCount() { return MIN_AMOUNT; }
+			static U32 maxCount() { return MAX_AMOUNT; }
+		};
+
+		template<U32 EXACT_COUNT>
+		struct Exactly
+		{
+			static U32 minCount() { return EXACT_COUNT; }
+			static U32 maxCount() { return EXACT_COUNT; }
+		};
+
 		// this typedef identifies derived classes as being blocks
 		typedef void baseblock_base_class_t;
 		LOG_CLASS(BaseBlock);
@@ -1365,40 +1400,6 @@ namespace LLInitParam
 		}
 	};
 
-	struct AnyAmount
-	{
-		static U32 minCount() { return 0; }
-		static U32 maxCount() { return U32_MAX; }
-	};
-
-	template<U32 MIN_AMOUNT>
-	struct AtLeast
-	{
-		static U32 minCount() { return MIN_AMOUNT; }
-		static U32 maxCount() { return U32_MAX; }
-	};
-
-	template<U32 MAX_AMOUNT>
-	struct AtMost
-	{
-		static U32 minCount() { return 0; }
-		static U32 maxCount() { return MAX_AMOUNT; }
-	};
-
-	template<U32 MIN_AMOUNT, U32 MAX_AMOUNT>
-	struct Between
-	{
-		static U32 minCount() { return MIN_AMOUNT; }
-		static U32 maxCount() { return MAX_AMOUNT; }
-	};
-
-	template<U32 EXACT_COUNT>
-	struct Exactly
-	{
-		static U32 minCount() { return EXACT_COUNT; }
-		static U32 maxCount() { return EXACT_COUNT; }
-	};
-
 	template <typename DERIVED_BLOCK, typename BASE_BLOCK = BaseBlock>
 	class Block 
 	:	public BASE_BLOCK
@@ -1491,7 +1492,7 @@ namespace LLInitParam
 
 		};
 
-		template <typename T, typename RANGE = AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
+		template <typename T, typename RANGE = BaseBlock::AnyAmount, typename NAME_VALUE_LOOKUP = TypeValues<T> >
 		class Multiple : public TypedParam<T, NAME_VALUE_LOOKUP, true>
 		{
 		public:
@@ -1711,7 +1712,7 @@ namespace LLInitParam
 			{
 				if (block_t::validateBlock(true))
 				{
-					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
+					static_cast<const DERIVED*>(this)->setValueFromBlock();
 					// clear stale keyword associated with old value
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
@@ -1737,6 +1738,7 @@ namespace LLInitParam
 			mData.mValue = val;
 			mData.clearKey();
 			setProvided(flag_as_provided);
+			static_cast<DERIVED*>(this)->setBlockFromValue();
 		}
 
 		void setIfNotProvided(value_assignment_t val, bool flag_as_provided = true)
@@ -1768,7 +1770,7 @@ namespace LLInitParam
 				// go ahead and issue warnings at this point if any param is invalid
 				if(block_t::validateBlock(false))
 				{
-					mData.mValue = static_cast<const DERIVED*>(this)->getValueFromBlock();
+					static_cast<const DERIVED*>(this)->setValueFromBlock();
 					mData.clearKey();
 					mData.mLastParamVersion = BaseBlock::getLastChangeVersion();
 				}
-- 
cgit v1.2.3


From 9abe9bf5dffeade7adbae99b3d5f7c9030fba0e5 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:44:01 -0800
Subject: clamp instead of assert when running out of room during reflow

---
 indra/llui/lltextbase.cpp | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'indra')

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 6c983fd92e..4426bf5ddd 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1137,6 +1137,10 @@ void LLTextBase::reflow(S32 start_index)
 			// grow line height as necessary based on reported height of this segment
 			line_height = llmax(line_height, segment_height);
 			remaining_pixels -= segment_width;
+			if (remaining_pixels < 0)
+			{
+				remaining_pixels = 0;
+			}
 
 			// getNumChars() and getDimensions() should return consistent results
 			llassert_always(remaining_pixels >= 0);
-- 
cgit v1.2.3


From 49a037048ca733f0a84186e3cfb0f6f0b0b55df8 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:44:37 -0800
Subject: oops, forgot to remove assert

---
 indra/llui/lltextbase.cpp | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp
index 4426bf5ddd..cb0907a771 100644
--- a/indra/llui/lltextbase.cpp
+++ b/indra/llui/lltextbase.cpp
@@ -1139,11 +1139,10 @@ void LLTextBase::reflow(S32 start_index)
 			remaining_pixels -= segment_width;
 			if (remaining_pixels < 0)
 			{
+				// getNumChars() and getDimensions() should return consistent results
 				remaining_pixels = 0;
 			}
 
-			// getNumChars() and getDimensions() should return consistent results
-			llassert_always(remaining_pixels >= 0);
 			seg_offset += character_count;
 
 			S32 last_segment_char_on_line = segment->getStart() + seg_offset;
-- 
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')

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')

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 c89bb9848f302a9a06cdec4c6100da3fcc99ac0d Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:48:33 -0800
Subject: fix for bad xui warnings when loading font from legacy "resource"
 name

---
 indra/llui/llui.cpp | 1 +
 1 file changed, 1 insertion(+)

(limited to 'indra')

diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp
index 67d3ed408b..1ea6b66a93 100644
--- a/indra/llui/llui.cpp
+++ b/indra/llui/llui.cpp
@@ -1947,6 +1947,7 @@ namespace LLInitParam
 		if (res_fontp)
 		{
 			mData.mValue = res_fontp;
+			return;
 		}
 
 		U8 fontstyle = 0;
-- 
cgit v1.2.3


From 7a3034f738b0b2523ca919789fe4e7241faa1359 Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:48:57 -0800
Subject: replaced llsd_equals with string based llsd comparison for more
 consistent support

---
 indra/llui/llradiogroup.cpp | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp
index 74e30cd633..997b9c13f8 100644
--- a/indra/llui/llradiogroup.cpp
+++ b/indra/llui/llradiogroup.cpp
@@ -112,6 +112,7 @@ void LLRadioGroup::initFromParams(const Params& p)
 		++it)
 	{
 		LLRadioGroup::ItemParams item_params(*it);
+
 		item_params.font.setIfNotProvided(mFont); // apply radio group font by default
 		item_params.commit_callback.function = boost::bind(&LLRadioGroup::onClickButton, this, _1);
 		item_params.from_xui = p.from_xui;
@@ -332,7 +333,7 @@ void LLRadioGroup::setValue( const LLSD& value )
 		 iter != mRadioButtons.end(); ++iter)
 	{
 		LLRadioCtrl* radio = *iter;
-		if (llsd_equals(radio->getPayload(), value))
+		if (radio->getPayload().asString() == value.asString())
 		{
 			setSelectedIndex(idx);
 			idx = -1;
@@ -384,7 +385,7 @@ BOOL	LLRadioGroup::setSelectedByValue(const LLSD& value, BOOL selected)
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
-		if(llsd_equals((*iter)->getPayload(), value))
+		if((*iter)->getPayload().asString() == value.asString())
 		{
 			setSelectedIndex(idx);
 			return TRUE;
@@ -406,7 +407,7 @@ BOOL	LLRadioGroup::isSelected(const LLSD& value) const
 	for (button_list_t::const_iterator iter = mRadioButtons.begin();
 		 iter != mRadioButtons.end(); ++iter)
 	{
-		if(llsd_equals((*iter)->getPayload(), value))
+		if((*iter)->getPayload().asString() == value.asString())
 		{
 			if (idx == mSelectedIndex) 
 			{
-- 
cgit v1.2.3


From c84b6a28a0f99961d115f41d7238869dc92e728c Mon Sep 17 00:00:00 2001
From: richard <none@none>
Date: Thu, 17 Dec 2009 11:49:41 -0800
Subject: made setupParams do coordinate flipping and negative coordinate magic
 only for XUI-based params

---
 indra/llui/llfloater.cpp     |  1 +
 indra/llui/lllayoutstack.cpp |  1 +
 indra/llui/llpanel.cpp       |  1 +
 indra/llui/lluictrlfactory.h | 25 ++++---------------------
 indra/llui/llview.cpp        |  7 +++----
 5 files changed, 10 insertions(+), 25 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp
index 5fd707fea3..f7fd2dbdfe 100644
--- a/indra/llui/llfloater.cpp
+++ b/indra/llui/llfloater.cpp
@@ -2716,6 +2716,7 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o
 		params.rect.left.set(0);
 	}
 
+	params.from_xui = true;
 	setupParams(params, parent);
  	initFromParams(params);
 	
diff --git a/indra/llui/lllayoutstack.cpp b/indra/llui/lllayoutstack.cpp
index 1fb618adee..5e15fa3919 100644
--- a/indra/llui/lllayoutstack.cpp
+++ b/indra/llui/lllayoutstack.cpp
@@ -246,6 +246,7 @@ LLView* LLLayoutStack::fromXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o
 			output_node, output_params, &default_params);
 	}
 
+	p.from_xui = true;
 	setupParams(p, parent);
 	LLLayoutStack* layout_stackp = LLUICtrlFactory::create<LLLayoutStack>(p);
 
diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp
index de2b43bf13..738a96f730 100644
--- a/indra/llui/llpanel.cpp
+++ b/indra/llui/llpanel.cpp
@@ -541,6 +541,7 @@ BOOL LLPanel::initPanelXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr outpu
 				output_node, output_params, &default_params);
 		}
 		
+		params.from_xui = true;
 		setupParams(params, parent);
 		{
 			LLFastTimer timer(FTM_PANEL_CONSTRUCTION);
diff --git a/indra/llui/lluictrlfactory.h b/indra/llui/lluictrlfactory.h
index cad62c27de..6788f29ba9 100644
--- a/indra/llui/lluictrlfactory.h
+++ b/indra/llui/lluictrlfactory.h
@@ -184,6 +184,8 @@ public:
 	{
 		T* widget = NULL;
 
+		T::setupParams(params, parent);
+
 		if (!params.validateBlock())
 		{
 			llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl;
@@ -307,27 +309,8 @@ fail:
 		}
 
 		// Apply layout transformations, usually munging rect
-		T::setupParams(params, parent);
-
-		if (!params.validateBlock())
-		{
-			llwarns << getInstance()->getCurFileName() << ": Invalid parameter block for " << typeid(T).name() << llendl;
-		}
-		T* widget;
-		{
-			LLFastTimer timer(FTM_WIDGET_CONSTRUCTION);
-			widget = new T(params);	
-		}
-		{
-			LLFastTimer timer(FTM_INIT_FROM_PARAMS);
-			widget->initFromParams(params);
-		}
-
-		if (parent)
-		{
-			S32 tab_group = params.tab_group.isProvided() ? params.tab_group() : -1;
-			setCtrlParent(widget, parent, tab_group);
-		}
+		params.from_xui = true;
+		T* widget = createWidget<T>(params, parent);
 
 		typedef typename T::child_registry_t registry_t;
 
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp
index 9f6fc1f298..a8d8626e49 100644
--- a/indra/llui/llview.cpp
+++ b/indra/llui/llview.cpp
@@ -2501,7 +2501,6 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		p.layout = parent->getLayout();
 	}
 
-	p.from_xui = true;
 
 	if (parent)
 	{
@@ -2510,7 +2509,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 		LLRect last_rect = parent->getLocalRect();
 
 		bool layout_topleft = (p.layout() == "topleft");
-		if (layout_topleft)
+		if (layout_topleft && p.from_xui)
 		{
 			//invert top to bottom
 			if (p.rect.top.isProvided()) p.rect.top = parent_rect.getHeight() - p.rect.top;
@@ -2536,7 +2535,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 				p.rect.right.setProvided(false); // recalculate the right
 			}
 		}
-		else
+		else if (p.from_xui) // only do negative coordinate magic for XUI
 		{
 			if (p.rect.left < 0) p.rect.left = p.rect.left + parent_rect.getWidth();
 			if (p.rect.right < 0) p.rect.right = p.rect.right + parent_rect.getWidth();
@@ -2557,7 +2556,7 @@ void LLView::setupParams(LLView::Params& p, LLView* parent)
 				p.rect.top.setProvided(false); // recalculate the top
 			}
 		}
-		else
+		else if (p.from_xui)
 		{
 			if (p.rect.bottom < 0) p.rect.bottom = p.rect.bottom + parent_rect.getHeight();
 			if (p.rect.top < 0) p.rect.top = p.rect.top + parent_rect.getHeight();
-- 
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')

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 25861bb3742653931f23bc2265047d005f1b7750 Mon Sep 17 00:00:00 2001
From: Tofu Linden <tofu.linden@lindenlab.com>
Date: Thu, 17 Dec 2009 14:15:50 -0800
Subject: add newline to unbreak linux build.  probably.

---
 indra/llui/lluictrlfactory.cpp | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index 40b22f515a..27237800d4 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -455,4 +455,5 @@ dummy_widget_creator_func_t* LLUICtrlFactory::getDefaultWidgetFunc(const std::ty
 const std::string* LLUICtrlFactory::getWidgetTag(const std::type_info* widget_type)
 {
 	return LLWidgetNameRegistry::instance().getValue(widget_type);
-}
\ No newline at end of file
+}
+
-- 
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')

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 78d48def6ba2e7c80f1da8949079a94d2d7374af Mon Sep 17 00:00:00 2001
From: Sergey Borushevsky <sborushevsky@productengine.com>
Date: Fri, 18 Dec 2009 00:45:35 +0200
Subject: Fixed normal bug EXT-637 (Please, add tooltips with a full names of
 the landmraks in the Favor bar / Overflow menu) Fixed problem with
 overlapping of tool tip by menu.

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

(limited to 'indra')

diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index dfa775c292..03a6b193dc 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -438,6 +438,12 @@ void init_menus()
 	// menu holder appears on top of menu bar so you can see the menu title
 	// flash when an item is triggered (the flash occurs in the holder)
 	gViewerWindow->getRootView()->addChild(gMenuHolder);
+
+	// This removes tool tip view from main view and adds it
+	// to root view in front of menu holder.
+	// Otherwise tool tips for menu items would be overlapped by menu, since
+	// main view is behind of menu holder now.
+	gViewerWindow->getRootView()->addChild(gToolTipView);
    
     gViewerWindow->setMenuBackgroundColor(false, 
         LLViewerLogin::getInstance()->isInProductionGrid());
-- 
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')

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')

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')

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/llui/llmenugl.cpp               |  2 +-
 indra/newview/llfloaterpreference.cpp |  5 +----
 indra/newview/llviewercontrol.cpp     | 19 -------------------
 3 files changed, 2 insertions(+), 24 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index fd5c2b7fef..c42ae040d6 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -97,7 +97,7 @@ const U32 SEPARATOR_HEIGHT_PIXELS = 8;
 const S32 TEAROFF_SEPARATOR_HEIGHT_PIXELS = 10;
 const S32 MENU_ITEM_PADDING = 4;
 
-const std::string BOOLEAN_TRUE_PREFIX( "X" );
+const std::string BOOLEAN_TRUE_PREFIX( "\xE2\x9C\x94" ); // U+2714 HEAVY CHECK MARK
 const std::string BRANCH_SUFFIX( ">" );
 const std::string ARROW_UP  ("^^^^^^^");
 const std::string ARROW_DOWN("vvvvvvv");
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')

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')

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')

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 688e66fe299ba4f4afe080d907a4eff9cc77f6dd Mon Sep 17 00:00:00 2001
From: Paul Guslisty <pguslisty@productengine.com>
Date: Fri, 18 Dec 2009 12:33:25 +0200
Subject: Fixed normal bug EXT - 3288 (Tool-tips are missing on whole Places
 panel)

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/panel_landmark_info.xml b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
index 68e58b27ec..9f06e64560 100644
--- a/indra/newview/skins/default/xui/en/panel_landmark_info.xml
+++ b/indra/newview/skins/default/xui/en/panel_landmark_info.xml
@@ -60,6 +60,7 @@
      layout="topleft"
      left="10"
      name="back_btn"
+     tool_tip="Back"
      tab_stop="false"
      top="0"
      width="23" />
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..87256f337c 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -145,6 +145,7 @@
      layout="topleft"
      left="10"
      name="back_btn"
+     tool_tip="Back"
      tab_stop="false"
      top="0"
      width="23" />
diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml
index d4a6c7f3b3..51ff7b1ce1 100644
--- a/indra/newview/skins/default/xui/en/panel_places.xml
+++ b/indra/newview/skins/default/xui/en/panel_places.xml
@@ -97,6 +97,7 @@ background_visible="true"
          layout="topleft"
          left_pad="5"
          name="edit_btn"
+         tool_tip="Edit landmark information"
          top="0"
          width="70" />
         <button
@@ -107,6 +108,7 @@ background_visible="true"
          image_unselected="ForwardArrow_Off"
          layout="topleft"
          name="overflow_btn"
+         tool_tip="Show additional options"
          right="-10"
          top="0"
          width="18" />
diff --git a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
index 3384852f27..4f40e00815 100644
--- a/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
+++ b/indra/newview/skins/default/xui/en/panel_teleport_history_item.xml
@@ -55,6 +55,7 @@
      left_pad="5"
      right="-3"
      name="profile_btn"
+     tool_tip="Show item info"
      top="1"
      visible="false"
      width="20" />
-- 
cgit v1.2.3


From 5f237f8559da76d3c2fd6251b324360fcf25515f Mon Sep 17 00:00:00 2001
From: Eugene Mutavchi <emutavchi@productengine.com>
Date: Fri, 18 Dec 2009 14:01:18 +0200
Subject: Implemented major sub-task EXT-3525 (Context menu for Notifications
 well)

--HG--
branch : product-engine
---
 indra/newview/llchiclet.cpp                        | 62 ++++++++++++++++++++++
 indra/newview/llchiclet.h                          | 29 +++++++++-
 indra/newview/llsyswellwindow.cpp                  | 17 ++++++
 indra/newview/llsyswellwindow.h                    |  3 ++
 .../xui/en/menu_notification_well_button.xml       | 16 ++++++
 5 files changed, 126 insertions(+), 1 deletion(-)
 create mode 100644 indra/newview/skins/default/xui/en/menu_notification_well_button.xml

(limited to 'indra')

diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp
index c6fe076911..5695f7cac1 100644
--- a/indra/newview/llchiclet.cpp
+++ b/indra/newview/llchiclet.cpp
@@ -154,6 +154,7 @@ LLSysWellChiclet::LLSysWellChiclet(const Params& p)
 , mMaxDisplayedCount(p.max_displayed_count)
 , mIsNewMessagesState(false)
 , mFlashToLitTimer(NULL)
+, mContextMenu(NULL)
 {
 	LLButton::Params button_params = p.button;
 	mButton = LLUICtrlFactory::create<LLButton>(button_params);
@@ -229,6 +230,21 @@ void LLSysWellChiclet::setNewMessagesState(bool new_messages)
 	mIsNewMessagesState = new_messages;
 }
 
+// virtual
+BOOL LLSysWellChiclet::handleRightMouseDown(S32 x, S32 y, MASK mask)
+{
+	if(!mContextMenu)
+	{
+		createMenu();
+	}
+	if (mContextMenu)
+	{
+		mContextMenu->show(x, y);
+		LLMenuGL::showPopup(this, mContextMenu, x, y);
+	}
+	return TRUE;
+}
+
 /************************************************************************/
 /*               LLIMWellChiclet implementation                         */
 /************************************************************************/
@@ -248,6 +264,11 @@ LLIMWellChiclet::~LLIMWellChiclet()
 	LLIMMgr::getInstance()->removeSessionObserver(this);
 }
 
+void LLIMWellChiclet::createMenu()
+{
+	// TODO: implement context menu for IM well
+}
+
 void LLIMWellChiclet::messageCountChanged(const LLSD& session_data)
 {
 	setCounter(LLBottomTray::getInstance()->getTotalUnreadIMCount());
@@ -281,6 +302,47 @@ void LLNotificationChiclet::connectCounterUpdatersToSignal(const std::string& no
 	}
 }
 
+void LLNotificationChiclet::onMenuItemClicked(const LLSD& user_data)
+{
+	std::string action = user_data.asString();
+	if("close all" == action)
+	{
+		LLNotificationWellWindow::getInstance()->closeAll();
+	}
+}
+
+bool LLNotificationChiclet::enableMenuItem(const LLSD& user_data)
+{
+	std::string item = user_data.asString();
+	if (item == "can close all")
+	{
+		return mUreadSystemNotifications != 0;
+	}
+	return true;
+}
+
+void LLNotificationChiclet::createMenu()
+{
+	if(mContextMenu)
+	{
+		llwarns << "Menu already exists" << llendl;
+		return;
+	}
+
+	LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar;
+	registrar.add("NotificationWellChicletMenu.Action",
+		boost::bind(&LLNotificationChiclet::onMenuItemClicked, this, _2));
+
+	LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
+	enable_registrar.add("NotificationWellChicletMenu.EnableItem",
+		boost::bind(&LLNotificationChiclet::enableMenuItem, this, _2));
+
+	mContextMenu = LLUICtrlFactory::getInstance()->createFromFile<LLContextMenu>
+		("menu_notification_well_button.xml",
+		 LLMenuGL::sMenuContainer,
+		 LLViewerMenuHolderGL::child_registry_t::instance());
+}
+
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h
index b3341f78a8..d8f641d0f9 100644
--- a/indra/newview/llchiclet.h
+++ b/indra/newview/llchiclet.h
@@ -806,6 +806,13 @@ protected:
 	 */
 	void changeLitState();
 
+	/**
+	 * Displays menu.
+	 */
+	virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask);
+
+	virtual void createMenu() = 0;
+
 protected:
 	class FlashToLitTimer;
 	LLButton* mButton;
@@ -814,7 +821,7 @@ protected:
 	bool mIsNewMessagesState;
 
 	FlashToLitTimer* mFlashToLitTimer;
-
+	LLContextMenu* mContextMenu;
 };
 
 /**
@@ -834,6 +841,11 @@ public:
 protected:
 	LLIMWellChiclet(const Params& p);
 
+	/**
+	 * Creates menu.
+	 */
+	/*virtual*/ void createMenu();
+
 	/**
 	 * Handles changes in a session (message was added, messages were read, etc.)
 	 *
@@ -854,6 +866,21 @@ class LLNotificationChiclet : public LLSysWellChiclet
 protected:
 	LLNotificationChiclet(const Params& p);
 
+	/**
+	 * Processes clicks on chiclet menu.
+	 */
+	void onMenuItemClicked(const LLSD& user_data);
+
+	/**
+	 * Enables chiclet menu items.
+	 */
+	bool enableMenuItem(const LLSD& user_data);
+
+	/**
+	 * Creates menu.
+	 */
+	/*virtual*/ void createMenu();
+
 	// connect counter updaters to the corresponding signals
 	void connectCounterUpdatersToSignal(const std::string& notification_type);
 
diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp
index 3769ddb1cc..7bff06e9a3 100644
--- a/indra/newview/llsyswellwindow.cpp
+++ b/indra/newview/llsyswellwindow.cpp
@@ -610,6 +610,23 @@ void LLNotificationWellWindow::addItem(LLSysWellItem::Params p)
 	}
 }
 
+void LLNotificationWellWindow::closeAll()
+{
+	// Need to clear notification channel, to add storable toasts into the list.
+	clearScreenChannels();
+	std::vector<LLPanel*> items;
+	mMessageList->getItems(items);
+	for (std::vector<LLPanel*>::iterator
+			 iter = items.begin(),
+			 iter_end = items.end();
+		 iter != iter_end; ++iter)
+	{
+		LLSysWellItem* sys_well_item = dynamic_cast<LLSysWellItem*>(*iter);
+		if (sys_well_item)
+			onItemClose(sys_well_item);
+	}
+}
+
 //////////////////////////////////////////////////////////////////////////
 // PRIVATE METHODS
 void LLNotificationWellWindow::initChannel() 
diff --git a/indra/newview/llsyswellwindow.h b/indra/newview/llsyswellwindow.h
index 736b1b9fb4..5f2c2ba501 100644
--- a/indra/newview/llsyswellwindow.h
+++ b/indra/newview/llsyswellwindow.h
@@ -147,6 +147,9 @@ public:
 	// Operating with items
 	void addItem(LLSysWellItem::Params p);
 
+	// Closes all notifications and removes them from the Notification Well
+	void closeAll();
+
 protected:
 	/*virtual*/ const std::string& getAnchorViewName() { return NOTIFICATION_WELL_ANCHOR_NAME; }
 
diff --git a/indra/newview/skins/default/xui/en/menu_notification_well_button.xml b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
new file mode 100644
index 0000000000..263ac40f4e
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_notification_well_button.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<context_menu
+ layout="topleft"
+ name="Notification Well Button Context Menu">
+    <menu_item_call
+     label="Close All"
+     layout="topleft"
+     name="Close All">
+        <menu_item_call.on_click
+         function="NotificationWellChicletMenu.Action"
+         parameter="close all" />
+        <menu_item_call.on_enable
+         function="NotificationWellChicletMenu.EnableItem"
+         parameter="can close all" />
+    </menu_item_call>
+</context_menu>
-- 
cgit v1.2.3


From 3bf89afebec3c535604789f0e2997598ac43bbe6 Mon Sep 17 00:00:00 2001
From: Yuri Chebotarev <ychebotarev@productengine.com>
Date: Fri, 18 Dec 2009 14:36:22 +0200
Subject: fix Task EXT-1190 Accordion should support keyboard accessability

--HG--
branch : product-engine
---
 indra/llui/llflatlistview.cpp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp
index 64a4824a17..09124c3013 100644
--- a/indra/llui/llflatlistview.cpp
+++ b/indra/llui/llflatlistview.cpp
@@ -530,7 +530,8 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)
 			if ( !selectNextItemPair(true, reset_selection) && reset_selection)
 			{
 				// If case we are in accordion tab notify parent to go to the previous accordion
-				notifyParent(LLSD().with("action","select_prev"));
+				if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed
+					resetSelection();
 			}
 			break;
 		}
@@ -539,7 +540,8 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask)
 			if ( !selectNextItemPair(false, reset_selection) && reset_selection)
 			{
 				// If case we are in accordion tab notify parent to go to the next accordion
-				notifyParent(LLSD().with("action","select_next"));
+				if( notifyParent(LLSD().with("action","select_next")) > 0 ) //message was processed
+					resetSelection();
 			}
 			break;
 		}
-- 
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')

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')

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')

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')

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/llui/llmenugl.cpp                                      | 2 +-
 indra/newview/skins/default/xui/en/menu_participant_list.xml | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp
index fd5c2b7fef..e7b2e8476b 100644
--- a/indra/llui/llmenugl.cpp
+++ b/indra/llui/llmenugl.cpp
@@ -3905,7 +3905,7 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu)
 	
 	item = LLUICtrlFactory::create<LLContextMenuBranch>(p);
 	LLMenuGL::sMenuContainer->addChild(item->getBranch());
-	item->setFont( LLFontGL::getFontSansSerifSmall() );
+	item->setFont( LLFontGL::getFontSansSerif() );
 
 	return append( item );
 }
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')

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')

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')

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')

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')

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')

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')

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')

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')

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')

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 35862b86bd4144b11fbd30eb6e175e89509c71ed Mon Sep 17 00:00:00 2001
From: James Cook <james@lindenlab.com>
Date: Fri, 18 Dec 2009 08:43:00 -0800
Subject: Remove inline llwarns to cut out some linker bloat.

---
 indra/llmath/xform.cpp |  5 +++++
 indra/llmath/xform.h   | 30 ++++++++++++++++++------------
 2 files changed, 23 insertions(+), 12 deletions(-)

(limited to 'indra')

diff --git a/indra/llmath/xform.cpp b/indra/llmath/xform.cpp
index ce6f756ab9..7a8b0cf6a3 100644
--- a/indra/llmath/xform.cpp
+++ b/indra/llmath/xform.cpp
@@ -42,6 +42,11 @@ LLXform::~LLXform()
 {
 }
 
+// Link optimization - don't inline these llwarns
+void LLXform::warn(const char* const msg)
+{
+	llwarns << msg << llendl;
+}
 
 LLXform* LLXform::getRoot() const
 {
diff --git a/indra/llmath/xform.h b/indra/llmath/xform.h
index 5b7b1900bc..c4edd46279 100644
--- a/indra/llmath/xform.h
+++ b/indra/llmath/xform.h
@@ -107,6 +107,12 @@ public:
 	inline void setRotation(const LLQuaternion& rot);
 	inline void setRotation(const F32 x, const F32 y, const F32 z);
 	inline void setRotation(const F32 x, const F32 y, const F32 z, const F32 s);
+
+	// Above functions must be inline for speed, but also
+	// need to emit warnings.  llwarns causes inline LLError::CallSite
+	// static objects that make more work for the linker.
+	// Avoid inline llwarns by calling this function.
+	void warn(const char* const msg);
 	
 	void 		setChanged(const U32 bits)					{ mChanged |= bits; }
 	BOOL		isChanged() const							{ return mChanged; }
@@ -173,7 +179,7 @@ BOOL LLXform::setParent(LLXform* parent)
 		{
 			if (cur_par == this)
 			{
-				//llwarns << "LLXform::setParent Creating loop when setting parent!" << llendl;
+				//warn("LLXform::setParent Creating loop when setting parent!");
 				return FALSE;
 			}
 			cur_par = cur_par->mParent;
@@ -191,7 +197,7 @@ void LLXform::setPosition(const LLVector3& pos)
 	else
 	{
 		mPosition.clearVec();
-		llwarns << "Non Finite in LLXform::setPosition(LLVector3)" << llendl;
+		warn("Non Finite in LLXform::setPosition(LLVector3)");
 	}
 }
 
@@ -203,7 +209,7 @@ void LLXform::setPosition(const F32 x, const F32 y, const F32 z)
 	else
 	{
 		mPosition.clearVec();
-		llwarns << "Non Finite in LLXform::setPosition(F32,F32,F32)" << llendl;
+		warn("Non Finite in LLXform::setPosition(F32,F32,F32)");
 	}
 }
 
@@ -215,7 +221,7 @@ void LLXform::setPositionX(const F32 x)
 	else
 	{
 		mPosition.mV[VX] = 0.f;
-		llwarns << "Non Finite in LLXform::setPositionX" << llendl;
+		warn("Non Finite in LLXform::setPositionX");
 	}
 }
 
@@ -227,7 +233,7 @@ void LLXform::setPositionY(const F32 y)
 	else
 	{
 		mPosition.mV[VY] = 0.f;
-		llwarns << "Non Finite in LLXform::setPositionY" << llendl;
+		warn("Non Finite in LLXform::setPositionY");
 	}
 }
 
@@ -239,7 +245,7 @@ void LLXform::setPositionZ(const F32 z)
 	else
 	{
 		mPosition.mV[VZ] = 0.f;
-		llwarns << "Non Finite in LLXform::setPositionZ" << llendl;
+		warn("Non Finite in LLXform::setPositionZ");
 	}
 }
 
@@ -249,7 +255,7 @@ void LLXform::addPosition(const LLVector3& pos)
 	if (pos.isFinite())
 		mPosition += pos; 
 	else
-		llwarns << "Non Finite in LLXform::addPosition" << llendl;
+		warn("Non Finite in LLXform::addPosition");
 }
 
 void LLXform::setScale(const LLVector3& scale)
@@ -260,7 +266,7 @@ void LLXform::setScale(const LLVector3& scale)
 	else
 	{
 		mScale.setVec(1.f, 1.f, 1.f);
-		llwarns << "Non Finite in LLXform::setScale" << llendl;
+		warn("Non Finite in LLXform::setScale");
 	}
 }
 void LLXform::setScale(const F32 x, const F32 y, const F32 z)
@@ -271,7 +277,7 @@ void LLXform::setScale(const F32 x, const F32 y, const F32 z)
 	else
 	{
 		mScale.setVec(1.f, 1.f, 1.f);
-		llwarns << "Non Finite in LLXform::setScale" << llendl;
+		warn("Non Finite in LLXform::setScale");
 	}
 }
 void LLXform::setRotation(const LLQuaternion& rot)
@@ -282,7 +288,7 @@ void LLXform::setRotation(const LLQuaternion& rot)
 	else
 	{
 		mRotation.loadIdentity();
-		llwarns << "Non Finite in LLXform::setRotation" << llendl;
+		warn("Non Finite in LLXform::setRotation");
 	}
 }
 void LLXform::setRotation(const F32 x, const F32 y, const F32 z) 
@@ -295,7 +301,7 @@ void LLXform::setRotation(const F32 x, const F32 y, const F32 z)
 	else
 	{
 		mRotation.loadIdentity();
-		llwarns << "Non Finite in LLXform::setRotation" << llendl;
+		warn("Non Finite in LLXform::setRotation");
 	}
 }
 void LLXform::setRotation(const F32 x, const F32 y, const F32 z, const F32 s) 
@@ -308,7 +314,7 @@ void LLXform::setRotation(const F32 x, const F32 y, const F32 z, const F32 s)
 	else
 	{
 		mRotation.loadIdentity();
-		llwarns << "Non Finite in LLXform::setRotation" << llendl;
+		warn("Non Finite in LLXform::setRotation");
 	}
 }
 
-- 
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')

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')

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')

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')

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
---
 indra/llui/llmultisliderctrl.cpp                   |   4 +-
 .../default/xui/en/floater_day_cycle_options.xml   | 108 ++++++---------------
 2 files changed, 32 insertions(+), 80 deletions(-)

(limited to 'indra')

diff --git a/indra/llui/llmultisliderctrl.cpp b/indra/llui/llmultisliderctrl.cpp
index 87938c19d4..7323323d8c 100644
--- a/indra/llui/llmultisliderctrl.cpp
+++ b/indra/llui/llmultisliderctrl.cpp
@@ -328,7 +328,7 @@ void LLMultiSliderCtrl::updateText()
 // static
 void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)
 {
-	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl);
+	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
 	if (!ctrl)
 		return;
 	
@@ -369,7 +369,7 @@ void LLMultiSliderCtrl::onEditorCommit( LLUICtrl* ctrl, const LLSD& userdata)
 // static
 void LLMultiSliderCtrl::onSliderCommit(LLUICtrl* ctrl, const LLSD& userdata)
 {
-	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl);
+	LLMultiSliderCtrl* self = dynamic_cast<LLMultiSliderCtrl*>(ctrl->getParent());
 	if (!self)
 		return;
 	
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')

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')

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')

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')

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')

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')

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')

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