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 '[ROLE_NAME]'? 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 >>" + 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="<< 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 >" 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