From 34398aac4b269a8c5d531fd45e48ece366f58b07 Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 27 Oct 2009 15:00:36 -0700 Subject: Use consistent LLPointer return values for buttons. Reviewed with Richard. --- indra/llui/llbutton.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 7fc4997133..5e2aea2b74 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -241,8 +241,8 @@ public: void setForcePressedState(BOOL b) { mForcePressedState = b; } protected: - const LLPointer& getImageUnselected() const { return mImageUnselected; } - const LLPointer& getImageSelected() const { return mImageSelected; } + LLPointer getImageUnselected() const { return mImageUnselected; } + LLPointer getImageSelected() const { return mImageSelected; } LLFrameTimer mMouseDownTimer; -- cgit v1.2.3 From e018ecf4696aa17c7696c2b8f8bed2ac2d149eae Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 27 Oct 2009 15:01:09 -0700 Subject: EXT-1352 First pass background images for floaters and panels, including pretty header. Reviewed with Leyla. --- indra/llui/lldraghandle.cpp | 9 ++-- indra/llui/llfloater.cpp | 52 +++++++++++---------- indra/llui/llpanel.cpp | 40 +++++++++++----- indra/llui/llpanel.h | 30 +++++++----- indra/newview/app_settings/settings.xml | 14 +++--- indra/newview/skins/default/textures/textures.xml | 6 ++- .../default/textures/windows/Window_Background.png | Bin 950 -> 509 bytes .../default/textures/windows/Window_Foreground.png | Bin 959 -> 508 bytes .../skins/default/xui/en/widgets/floater.xml | 3 ++ .../newview/skins/default/xui/en/widgets/panel.xml | 6 ++- 10 files changed, 99 insertions(+), 61 deletions(-) diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index 8eccd709ce..d9b98b1c28 100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp @@ -49,9 +49,9 @@ #include "lluictrlfactory.h" const S32 LEADING_PAD = 5; -const S32 TITLE_PAD = 8; +const S32 TITLE_HPAD = 8; const S32 BORDER_PAD = 1; -const S32 LEFT_PAD = BORDER_PAD + TITLE_PAD + LEADING_PAD; +const S32 LEFT_PAD = BORDER_PAD + TITLE_HPAD + LEADING_PAD; const S32 RIGHT_PAD = BORDER_PAD + 32; // HACK: space for close btn and minimize btn S32 LLDragHandle::sSnapMargin = 5; @@ -240,19 +240,20 @@ void LLDragHandleLeft::draw() void LLDragHandleTop::reshapeTitleBox() { + static LLUICachedControl title_vpad("UIFloaterTitleVPad", 0); if( ! mTitleBox) { return; } const LLFontGL* font = LLFontGL::getFontSansSerif(); - S32 title_width = font->getWidth( mTitleBox->getText() ) + TITLE_PAD; + S32 title_width = font->getWidth( mTitleBox->getText() ) + TITLE_HPAD; if (getMaxTitleWidth() > 0) title_width = llmin(title_width, getMaxTitleWidth()); S32 title_height = llround(font->getLineHeight()); LLRect title_rect; title_rect.setLeftTopAndSize( LEFT_PAD, - getRect().getHeight() - BORDER_PAD, + getRect().getHeight() - title_vpad, getRect().getWidth() - LEFT_PAD - RIGHT_PAD, title_height); diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 021e2e94ac..f80e8df79f 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -219,7 +219,7 @@ void LLFloater::initClass() static LLWidgetNameRegistry::StaticRegistrar sRegisterFloaterParams(&typeid(LLFloater::Params), "floater"); LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) -: LLPanel(), +: LLPanel(p), mDragHandle(NULL), mTitle(p.title), mShortTitle(p.short_title), @@ -1548,26 +1548,42 @@ void LLFloater::draw() shadow_color % alpha, llround(shadow_offset)); - // No transparent windows in simple UI + LLUIImage* image = NULL; + LLColor4 color; if (isBackgroundOpaque()) { - gl_rect_2d( left, top, right, bottom, getBackgroundColor() % alpha ); + // NOTE: image may not be set + image = getBackgroundImage(); + color = getBackgroundColor(); } else { - gl_rect_2d( left, top, right, bottom, getTransparentColor() % alpha ); + image = getTransparentImage(); + color = getTransparentColor(); } - if(hasFocus() - && !getIsChrome() - && !getCurrentTitle().empty()) + if (image) { - static LLUIColor titlebar_focus_color = LLUIColorTable::instance().getColor("TitleBarFocusColor"); + // We're using images for this floater's backgrounds + image->draw(getLocalRect(), UI_VERTEX_COLOR % alpha); + } + else + { + // We're not using images, use old-school flat colors + gl_rect_2d( left, top, right, bottom, color % alpha ); + // draw highlight on title bar to indicate focus. RDW - const LLFontGL* font = LLFontGL::getFontSansSerif(); - LLRect r = getRect(); - gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1, - titlebar_focus_color % alpha, 0, TRUE); + if(hasFocus() + && !getIsChrome() + && !getCurrentTitle().empty()) + { + static LLUIColor titlebar_focus_color = LLUIColorTable::instance().getColor("TitleBarFocusColor"); + + const LLFontGL* font = LLFontGL::getFontSansSerif(); + LLRect r = getRect(); + gl_rect_2d_offset_local(0, r.getHeight(), r.getWidth(), r.getHeight() - (S32)font->getLineHeight() - 1, + titlebar_focus_color % alpha, 0, TRUE); + } } } @@ -1617,18 +1633,6 @@ void LLFloater::draw() drawChild(focused_child); } - if( isBackgroundVisible() ) - { - // add in a border to improve spacialized visual aclarity ;) - // use lines instead of gl_rect_2d so we can round the edges as per james' recommendation - static LLUIColor focus_border_color = LLUIColorTable::instance().getColor("FloaterFocusBorderColor"); - static LLUIColor unfocus_border_color = LLUIColorTable::instance().getColor("FloaterUnfocusBorderColor"); - LLUI::setLineWidth(1.5f); - LLColor4 outlineColor = gFocusMgr.childHasKeyboardFocus(this) ? focus_border_color : unfocus_border_color; - gl_rect_2d_offset_local(0, getRect().getHeight() + 1, getRect().getWidth() + 1, 0, outlineColor % alpha, -LLPANEL_BORDER_WIDTH, FALSE); - LLUI::setLineWidth(1.f); - } - // update tearoff button for torn off floaters // when last host goes away if (mCanTearOff && !getHost()) diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 095200ddc3..b53f7801cf 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -71,10 +71,12 @@ const LLPanel::Params& LLPanel::getDefaultParams() LLPanel::Params::Params() : has_border("border", false), border(""), - bg_opaque_color("bg_opaque_color"), - bg_alpha_color("bg_alpha_color"), background_visible("background_visible", false), background_opaque("background_opaque", false), + bg_opaque_color("bg_opaque_color"), + bg_alpha_color("bg_alpha_color"), + bg_opaque_image("bg_opaque_image"), + bg_alpha_image("bg_alpha_image"), min_width("min_width", 100), min_height("min_height", 100), strings("string"), @@ -92,10 +94,12 @@ LLPanel::Params::Params() LLPanel::LLPanel(const LLPanel::Params& p) : LLUICtrl(p), - mBgColorAlpha(p.bg_alpha_color()), - mBgColorOpaque(p.bg_opaque_color()), mBgVisible(p.background_visible), mBgOpaque(p.background_opaque), + mBgOpaqueColor(p.bg_opaque_color()), + mBgAlphaColor(p.bg_alpha_color()), + mBgOpaqueImage(p.bg_opaque_image()), + mBgAlphaImage(p.bg_alpha_image()), mDefaultBtn(NULL), mBorder(NULL), mLabel(p.label), @@ -178,19 +182,31 @@ void LLPanel::draw() // draw background if( mBgVisible ) { - //RN: I don't see the point of this - S32 left = 0;//LLPANEL_BORDER_WIDTH; - S32 top = getRect().getHeight();// - LLPANEL_BORDER_WIDTH; - S32 right = getRect().getWidth();// - LLPANEL_BORDER_WIDTH; - S32 bottom = 0;//LLPANEL_BORDER_WIDTH; - + LLRect local_rect = getLocalRect(); if (mBgOpaque ) { - gl_rect_2d( left, top, right, bottom, mBgColorOpaque.get() % alpha); + // opaque, in-front look + if (mBgOpaqueImage.notNull()) + { + mBgOpaqueImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); + } + else + { + // fallback to flat colors when there are no images + gl_rect_2d( local_rect, mBgOpaqueColor.get() % alpha); + } } else { - gl_rect_2d( left, top, right, bottom, mBgColorAlpha.get() % alpha); + // transparent, in-back look + if (mBgAlphaImage.notNull()) + { + mBgAlphaImage->draw( local_rect, UI_VERTEX_COLOR % alpha ); + } + else + { + gl_rect_2d( local_rect, mBgAlphaColor.get() % alpha ); + } } } diff --git a/indra/llui/llpanel.h b/indra/llui/llpanel.h index e8db68ffbb..c213809d68 100644 --- a/indra/llui/llpanel.h +++ b/indra/llui/llpanel.h @@ -48,6 +48,7 @@ const BOOL BORDER_YES = TRUE; const BOOL BORDER_NO = FALSE; class LLButton; +class LLUIImage; /* * General purpose concrete view base class. @@ -72,12 +73,15 @@ public: Optional has_border; Optional border; - Optional bg_opaque_color, - bg_alpha_color; - Optional background_visible, background_opaque; + Optional bg_opaque_color, + bg_alpha_color; + // opaque image is for "panel in foreground" look + Optional bg_opaque_image, + bg_alpha_image; + Optional min_width, min_height; @@ -127,10 +131,12 @@ public: BOOL hasBorder() const { return mBorder != NULL; } void setBorderVisible( BOOL b ); - void setBackgroundColor( const LLColor4& color ) { mBgColorOpaque = color; } - const LLColor4& getBackgroundColor() const { return mBgColorOpaque; } - void setTransparentColor(const LLColor4& color) { mBgColorAlpha = color; } - const LLColor4& getTransparentColor() const { return mBgColorAlpha; } + void setBackgroundColor( const LLColor4& color ) { mBgOpaqueColor = color; } + const LLColor4& getBackgroundColor() const { return mBgOpaqueColor; } + void setTransparentColor(const LLColor4& color) { mBgAlphaColor = color; } + const LLColor4& getTransparentColor() const { return mBgAlphaColor; } + LLPointer getBackgroundImage() const { return mBgOpaqueImage; } + LLPointer getTransparentImage() const { return mBgAlphaImage; } void setBackgroundVisible( BOOL b ) { mBgVisible = b; } BOOL isBackgroundVisible() const { return mBgVisible; } void setBackgroundOpaque(BOOL b) { mBgOpaque = b; } @@ -248,10 +254,12 @@ protected: std::string mHelpTopic; // the name of this panel's help topic to display in the Help Viewer private: - LLUIColor mBgColorAlpha; - LLUIColor mBgColorOpaque; - BOOL mBgVisible; - BOOL mBgOpaque; + BOOL mBgVisible; // any background at all? + BOOL mBgOpaque; // use opaque color or image + LLUIColor mBgOpaqueColor; + LLUIColor mBgAlphaColor; + LLPointer mBgOpaqueImage; // "panel in front" look + LLPointer mBgAlphaImage; // "panel in back" look LLViewBorder* mBorder; LLButton* mDefaultBtn; LLUIString mLabel; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 3682d48577..7219944fd7 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8779,13 +8779,13 @@ UICloseBoxFromTop Comment - Size of UI floater close box from top + Distance from top of floater to top of close box icon, pixels Persist 1 Type S32 Value - 1 + 5 UIExtraTriangleHeight @@ -8823,13 +8823,13 @@ UIFloaterHeaderSize Comment - Size of UI floater header size + UI floater header height in pixels Persist 1 Type S32 Value - 18 + 25 UIFloaterHPad @@ -8853,16 +8853,16 @@ Value 0 - UIFloaterVPad + UIFloaterTitleVPad Comment - Size of UI floater vertical pad + Distance from top of floater to top of title string, pixels Persist 1 Type S32 Value - 6 + 7 UIImgDefaultEyesUUID diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 4d54838225..f9842526dd 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -471,8 +471,10 @@ - - + + diff --git a/indra/newview/skins/default/textures/windows/Window_Background.png b/indra/newview/skins/default/textures/windows/Window_Background.png index e9f15e76b9..db253900af 100644 Binary files a/indra/newview/skins/default/textures/windows/Window_Background.png and b/indra/newview/skins/default/textures/windows/Window_Background.png differ diff --git a/indra/newview/skins/default/textures/windows/Window_Foreground.png b/indra/newview/skins/default/textures/windows/Window_Foreground.png index e76e9f3c79..b81ec5b43c 100644 Binary files a/indra/newview/skins/default/textures/windows/Window_Foreground.png and b/indra/newview/skins/default/textures/windows/Window_Foreground.png differ diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index 4a866c2eb2..ece6373166 100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml @@ -1,6 +1,9 @@ + diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index b81a70b845..127f0f40e8 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -1,5 +1,9 @@ + \ No newline at end of file + background_opaque="false"/> -- cgit v1.2.3 From c3571b61fa8493b4298a6b1dc1f595a4077d1716 Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 27 Oct 2009 15:04:04 -0700 Subject: Renamed Toast.png to Toast_Background.png for consistency with Window and Inspector background images. --- indra/newview/skins/default/textures/textures.xml | 2 +- .../skins/default/textures/windows/Toast_Background.png | Bin 0 -> 414 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 indra/newview/skins/default/textures/windows/Toast_Background.png diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f9842526dd..f33121b163 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -437,7 +437,7 @@ - + diff --git a/indra/newview/skins/default/textures/windows/Toast_Background.png b/indra/newview/skins/default/textures/windows/Toast_Background.png new file mode 100644 index 0000000000..feeee78033 Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Toast_Background.png differ -- cgit v1.2.3 From f80a3e268ad96de935c886adc2009ff5b2c880fc Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 27 Oct 2009 16:26:49 -0700 Subject: Revert change: Floater constructor CANNOT call LLPanel(p) with params, must set bg images in initFromParams, because we have too many LLPanels to retrofit them all to call LLPanel() with params. Discussed with Richard. --- indra/llui/llfloater.cpp | 5 ++++- indra/llui/llpanel.cpp | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index f80e8df79f..ae5dd5a1ce 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -219,7 +219,7 @@ void LLFloater::initClass() static LLWidgetNameRegistry::StaticRegistrar sRegisterFloaterParams(&typeid(LLFloater::Params), "floater"); LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) -: LLPanel(p), +: LLPanel(), // intentionally do not pass params here, see initFromParams mDragHandle(NULL), mTitle(p.title), mShortTitle(p.short_title), @@ -2532,6 +2532,9 @@ void LLFloater::setupParamsForExport(Params& p, LLView* parent) void LLFloater::initFromParams(const LLFloater::Params& p) { + // *NOTE: We have too many classes derived from LLPanel to retrofit them + // all to pass in params via constructors. So we use this method. + // control_name, tab_stop, focus_lost_callback, initial_value, rect, enabled, visible LLPanel::initFromParams(p); diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index b53f7801cf..0d340699c5 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -107,6 +107,8 @@ LLPanel::LLPanel(const LLPanel::Params& p) mCommitCallbackRegistrar(false), mEnableCallbackRegistrar(false), mXMLFilename(p.filename) + // *NOTE: Be sure to also change LLPanel::initFromParams(). We have too + // many classes derived from LLPanel to retrofit them all to pass in params. { setIsChrome(FALSE); @@ -459,7 +461,8 @@ void LLPanel::initFromParams(const LLPanel::Params& p) setBackgroundOpaque(p.background_opaque); setBackgroundColor(p.bg_opaque_color().get()); setTransparentColor(p.bg_alpha_color().get()); - + mBgOpaqueImage = p.bg_opaque_image(); + mBgAlphaImage = p.bg_alpha_image(); } static LLFastTimer::DeclareTimer FTM_PANEL_SETUP("Panel Setup"); -- cgit v1.2.3 From 7f4d3266382b29d9dcba9dee2c1e279aa4639b9e Mon Sep 17 00:00:00 2001 From: James Cook Date: Tue, 27 Oct 2009 16:27:26 -0700 Subject: EXT-1352 Use image backgrounds for inspectors and toasts. Art only, not reviewed. --- indra/newview/skins/default/textures/textures.xml | 6 ++++-- .../default/textures/windows/Inspector_Background.png | Bin 400 -> 348 bytes .../skins/default/textures/windows/Toast_Background.png | Bin 414 -> 349 bytes indra/newview/skins/default/xui/en/inspect_avatar.xml | 2 +- indra/newview/skins/default/xui/en/inspect_group.xml | 2 +- indra/newview/skins/default/xui/en/inspect_object.xml | 2 +- indra/newview/skins/default/xui/en/panel_toast.xml | 2 ++ 7 files changed, 9 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f33121b163..b6215982e2 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -147,7 +147,8 @@ - + @@ -437,7 +438,8 @@ - + diff --git a/indra/newview/skins/default/textures/windows/Inspector_Background.png b/indra/newview/skins/default/textures/windows/Inspector_Background.png index 807e8e553c..4c2a728ac5 100644 Binary files a/indra/newview/skins/default/textures/windows/Inspector_Background.png and b/indra/newview/skins/default/textures/windows/Inspector_Background.png differ diff --git a/indra/newview/skins/default/textures/windows/Toast_Background.png b/indra/newview/skins/default/textures/windows/Toast_Background.png index feeee78033..f27d1a12ec 100644 Binary files a/indra/newview/skins/default/textures/windows/Toast_Background.png and b/indra/newview/skins/default/textures/windows/Toast_Background.png differ diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index 181c80ebc7..1e44032b97 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -5,7 +5,7 @@ --> Date: Thu, 29 Oct 2009 00:12:17 +0800 Subject: DEV-41714 Display a play/pause control for the inspected face if it contains time-based media --- indra/llui/lltooltip.cpp | 47 +++++++++-- indra/llui/lltooltip.h | 6 ++ indra/newview/llinspectobject.cpp | 8 +- indra/newview/lltoolpie.cpp | 108 ++++++++++++++++++++++++- indra/newview/lltoolpie.h | 2 + indra/newview/skins/default/xui/en/strings.xml | 4 +- 6 files changed, 164 insertions(+), 11 deletions(-) diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index c8094f9c7c..93a4adc9b6 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -38,10 +38,11 @@ // Library includes #include "lltextbox.h" #include "lliconctrl.h" +#include "llbutton.h" #include "llmenugl.h" // hideMenus() #include "llui.h" // positionViewNearMouse() #include "llwindow.h" - +#include "lltrans.h" // // Constants // @@ -155,7 +156,9 @@ LLToolTip::Params::Params() visible_time_near("visible_time_near", LLUI::sSettingGroups["config"]->getF32( "ToolTipVisibleTimeNear" )), visible_time_far("visible_time_far", LLUI::sSettingGroups["config"]->getF32( "ToolTipVisibleTimeFar" )), sticky_rect("sticky_rect"), - image("image") + image("image"), + time_based_media("time_based_media", false), + media_playing("media_playing", false) { name = "tooltip"; font = LLFontGL::getFontSansSerif(); @@ -186,28 +189,56 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) params.allow_html = false; // disallow hyperlinks in tooltips, as they want to spawn their own explanatory tooltips mTextBox = LLUICtrlFactory::create (params); addChild(mTextBox); - + + S32 TOOLTIP_ICON_SIZE = 0; + S32 TOOLTIP_PLAYBUTTON_SIZE = 0; if (p.image.isProvided()) { LLIconCtrl::Params icon_params; icon_params.name = "tooltip_icon"; LLRect icon_rect; LLUIImage* imagep = p.image; - const S32 TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16); + TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16); icon_rect.setOriginAndSize(mPadding, mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); icon_params.rect = icon_rect; icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM; icon_params.image = p.image; icon_params.mouse_opaque = false; - addChild(LLUICtrlFactory::create(icon_params)); + LLIconCtrl* tooltip_icon = LLUICtrlFactory::create(icon_params); + addChild(tooltip_icon); // move text over to fit image in mTextBox->translate(TOOLTIP_ICON_SIZE + mPadding, 0); + if (p.click_callback.isProvided()) + { + tooltip_icon->setMouseUpCallback(boost::bind(p.click_callback())); + } } - - if (p.click_callback.isProvided()) + + if (p.time_based_media.isProvided() && p.time_based_media == true) { - setMouseUpCallback(boost::bind(p.click_callback())); + LLButton::Params p_button; + p_button.name(std::string("play_media")); + TOOLTIP_PLAYBUTTON_SIZE = 16; + LLRect button_rect; + button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE),mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); + p_button.rect = button_rect; + p_button.image_selected.name("button_anim_pause.tga"); + p_button.image_unselected.name("button_anim_play.tga"); + p_button.scale_image(true); + mPlayMediaButton = LLUICtrlFactory::create(p_button); + if(p.click_playmedia_callback.isProvided()) + { + mPlayMediaButton->setCommitCallback(boost::bind(p.click_playmedia_callback())); + } + if(p.media_playing.isProvided()) + { + mPlayMediaButton->setToggleState(p.media_playing); + } + addChild(mPlayMediaButton); + + // move text over to fit image in + mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0); } } diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 63e7249a12..fa30d5554a 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -81,6 +81,11 @@ public: Optional click_callback; Optional image; + + + Optional time_based_media; + Optional media_playing; + Optional click_playmedia_callback; Optional max_width; Optional padding; Optional wrap; @@ -101,6 +106,7 @@ public: private: class LLTextBox* mTextBox; + class LLButton* mPlayMediaButton; LLFrameTimer mFadeTimer; LLFrameTimer mVisibleTimer; S32 mMaxWidth; diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index 29cca14a7b..81544904e3 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -106,12 +106,14 @@ private: private: LLUUID mObjectID; + S32 mObjectFace; LLSafeHandle mObjectSelection; }; LLInspectObject::LLInspectObject(const LLSD& sd) : LLInspect( LLSD() ), // single_instance, doesn't really need key mObjectID(), // set in onOpen() + mObjectFace(0), mObjectSelection() { // can't make the properties request until the widgets are constructed @@ -182,7 +184,11 @@ void LLInspectObject::onOpen(const LLSD& data) // Extract appropriate avatar id mObjectID = data["object_id"]; - + + if(data.has("object_face")) + { + mObjectFace = data["object_face"]; + } // Position the inspector relative to the mouse cursor // Similar to how tooltips are positioned // See LLToolTipMgr::createToolTip diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 7c17699bf9..d92bc7efc4 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -732,7 +732,35 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) { tooltip_msg.append( nodep->mName ); } - + + // Does this face have media? + const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + LLPluginClassMedia* media_plugin = NULL; + + bool is_time_based_media = false; + bool is_media_playing = false; + + if (media_impl && (media_impl->hasMedia())) + { + LLStringUtil::format_map_t args; + + media_plugin = media_impl->getMediaPlugin(); + if(media_plugin->pluginSupportsMediaTime()) + { + is_time_based_media = true; + args["[CurrentURL]"] = media_impl->getMediaURL(); + is_media_playing = media_impl->isMediaPlaying(); + } + else + { + is_time_based_media = false; + args["[CurrentURL]"] = media_plugin->getLocation(); + } + //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); + } + bool needs_tip = needs_tooltip(nodep); if (show_all_object_tips || needs_tip) @@ -743,6 +771,9 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) .message(tooltip_msg) .image(LLUI::getUIImage("Info")) .click_callback(boost::bind(showObjectInspector, hover_object->getID())) + .time_based_media(is_time_based_media) + .media_playing(is_media_playing) + .click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)) .visible_time_near(6.f) .visible_time_far(3.f) .wrap(false)); @@ -925,6 +956,20 @@ static void show_inspector(const char* inspector, const char* param, const LLUUI LLFloaterReg::showInstance(inspector, params); } + +static void show_inspector(const char* inspector, LLSD& params) +{ + if (LLToolTipMgr::instance().toolTipVisible()) + { + LLRect rect = LLToolTipMgr::instance().getToolTipRect(); + params["pos"]["x"] = rect.mLeft; + params["pos"]["y"] = rect.mTop; + } + + LLFloaterReg::showInstance(inspector, params); +} + + // static void LLToolPie::showAvatarInspector(const LLUUID& avatar_id) { @@ -937,6 +982,67 @@ void LLToolPie::showObjectInspector(const LLUUID& object_id) show_inspector("inspect_object", "object_id", object_id); } + +// static +void LLToolPie::showObjectInspector(const LLUUID& object_id, const S32& object_face) +{ + LLSD params; + params["object_id"] = object_id; + params["object_face"] = object_face; + show_inspector("inspect_object", params); +} + +// static +void LLToolPie::playCurrentMedia(const LLPickInfo& info) +{ + //FIXME: how do we handle object in different parcel than us? + LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + if (!parcel) return; + + LLPointer objectp = info.getObject(); + + // Early out cases. Must clear media hover. + // did not hit an object or did not hit a valid face + if ( objectp.isNull() || + info.mObjectFace < 0 || + info.mObjectFace >= objectp->getNumTEs() ) + { + return; + } + + // Does this face have media? + const LLTextureEntry* tep = objectp->getTE(info.mObjectFace); + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + LLPluginClassMedia* media_plugin = NULL; + + if (mep + && gSavedSettings.getBOOL("MediaOnAPrimUI")) + { + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + + if(media_impl.notNull() && media_impl->hasMedia()) + { + media_plugin = media_impl->getMediaPlugin(); + + if (media_plugin && media_plugin->pluginSupportsMediaTime()) + { + if(media_impl->isMediaPlaying()) + { + media_impl->pause(); + } + else //if(media_impl->isMediaPaused()) + { + media_impl->play(); + } + + } + + } + } + +} + + void LLToolPie::handleDeselect() { if( hasMouseCapture() ) diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 5faedbec5a..3cf9cbde55 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -78,6 +78,8 @@ public: static void showAvatarInspector(const LLUUID& avatar_id); static void showObjectInspector(const LLUUID& object_id); + static void showObjectInspector(const LLUUID& object_id, const S32& object_face); + static void playCurrentMedia(const LLPickInfo& info); private: BOOL outsideSlop (S32 x, S32 y, S32 start_x, S32 start_y); BOOL pickLeftMouseDownCallback(); diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 81bc12c33c..afd58a0f01 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -76,6 +76,7 @@ Click to teleport to this location Click to view this object's description Click to run the secondlife:// command + Close (⌘W) @@ -642,7 +643,7 @@ Sets the script timer to zero float llGetAndResetTime() Returns the script time in seconds and then resets the script timer to zero - + llSound(string sound, float volume, integer queue, integer loop) Plays sound at volume and whether it should loop or not @@ -2194,6 +2195,7 @@ Expected .wav, .tga, .bmp, .jpg, .jpeg, or .bvh Multiple Media + Play/Pause Media -- cgit v1.2.3 From 07749af3871420b9f4542e288da4372cdf2d2513 Mon Sep 17 00:00:00 2001 From: angela Date: Thu, 29 Oct 2009 16:28:04 +0800 Subject: EXT-1954 Implement Inspector Info i rollover icon --- indra/llui/llbutton.cpp | 5 +++ indra/llui/llbutton.h | 1 + indra/llui/lltooltip.cpp | 46 ++++++++++++++++++++-------- indra/llui/lltooltip.h | 3 +- indra/newview/lltoolpie.cpp | 74 +++++++++++++++++++++++++++++---------------- 5 files changed, 89 insertions(+), 40 deletions(-) diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index fd369730d6..a7946cacf5 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -486,6 +486,11 @@ void LLButton::onMouseLeave(S32 x, S32 y, MASK mask) mNeedsHighlight = FALSE; } +void LLButton::setHighlight(bool b) +{ + mNeedsHighlight = b; +} + BOOL LLButton::handleHover(S32 x, S32 y, MASK mask) { if (!childrenHandleHover(x, y, mask)) diff --git a/indra/llui/llbutton.h b/indra/llui/llbutton.h index 7fc4997133..839b196466 100644 --- a/indra/llui/llbutton.h +++ b/indra/llui/llbutton.h @@ -176,6 +176,7 @@ public: BOOL getToggleState() const; void setToggleState(BOOL b); + void setHighlight(bool b); void setFlashing( BOOL b ); BOOL getFlashing() const { return mFlashing; } diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 93a4adc9b6..2a30eb4b5b 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -170,7 +170,10 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) : LLPanel(p), mMaxWidth(p.max_width), mHasClickCallback(p.click_callback.isProvided()), - mPadding(p.padding) + mPadding(p.padding), + mTextBox(NULL), + mInfoButton(NULL), + mPlayMediaButton(NULL) { LLTextBox::Params params; params.initial_value = "tip_text"; @@ -194,25 +197,26 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) S32 TOOLTIP_PLAYBUTTON_SIZE = 0; if (p.image.isProvided()) { - LLIconCtrl::Params icon_params; - icon_params.name = "tooltip_icon"; + LLButton::Params icon_params; + icon_params.name = "tooltip_info"; LLRect icon_rect; LLUIImage* imagep = p.image; TOOLTIP_ICON_SIZE = (imagep ? imagep->getWidth() : 16); icon_rect.setOriginAndSize(mPadding, mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); icon_params.rect = icon_rect; - icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM; - icon_params.image = p.image; - icon_params.mouse_opaque = false; - LLIconCtrl* tooltip_icon = LLUICtrlFactory::create(icon_params); - addChild(tooltip_icon); - - // move text over to fit image in - mTextBox->translate(TOOLTIP_ICON_SIZE + mPadding, 0); + //icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM; + icon_params.image_unselected(imagep); + icon_params.scale_image(true); + icon_params.flash_color(icon_params.highlight_color()); + mInfoButton = LLUICtrlFactory::create(icon_params); if (p.click_callback.isProvided()) { - tooltip_icon->setMouseUpCallback(boost::bind(p.click_callback())); + mInfoButton->setCommitCallback(boost::bind(p.click_callback())); } + addChild(mInfoButton); + + // move text over to fit image in + mTextBox->translate(TOOLTIP_ICON_SIZE + mPadding, 0); } if (p.time_based_media.isProvided() && p.time_based_media == true) @@ -221,11 +225,12 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) p_button.name(std::string("play_media")); TOOLTIP_PLAYBUTTON_SIZE = 16; LLRect button_rect; - button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE),mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); + button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE+ mPadding ), mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); p_button.rect = button_rect; p_button.image_selected.name("button_anim_pause.tga"); p_button.image_unselected.name("button_anim_play.tga"); p_button.scale_image(true); + mPlayMediaButton = LLUICtrlFactory::create(p_button); if(p.click_playmedia_callback.isProvided()) { @@ -240,6 +245,11 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) // move text over to fit image in mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0); } + + if (p.click_callback.isProvided()) + { + setMouseUpCallback(boost::bind(p.click_callback())); + } } void LLToolTip::setValue(const LLSD& value) @@ -286,6 +296,9 @@ void LLToolTip::setVisible(BOOL visible) BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask) { + //mInfoButton->setFlashing(true); + mInfoButton->setHighlight(true); + LLPanel::handleHover(x, y, mask); if (mHasClickCallback) { @@ -294,6 +307,13 @@ BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask) return TRUE; } +void LLToolTip::onMouseLeave(S32 x, S32 y, MASK mask) +{ + //mInfoButton->setFlashing(true); + mInfoButton->setHighlight(false); + LLUICtrl::onMouseLeave(x, y, mask); +} + void LLToolTip::draw() { F32 alpha = 1.f; diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index fa30d5554a..a81876eac1 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -94,7 +94,7 @@ public: }; /*virtual*/ void draw(); /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask); - + /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask); /*virtual*/ void setValue(const LLSD& value); /*virtual*/ void setVisible(BOOL visible); @@ -106,6 +106,7 @@ public: private: class LLTextBox* mTextBox; + class LLButton* mInfoButton; class LLButton* mPlayMediaButton; LLFrameTimer mFadeTimer; LLFrameTimer mVisibleTimer; diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index d92bc7efc4..42ecfa8cde 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -733,32 +733,41 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) tooltip_msg.append( nodep->mName ); } - // Does this face have media? - const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); - const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; - viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; - LLPluginClassMedia* media_plugin = NULL; - bool is_time_based_media = false; bool is_media_playing = false; - if (media_impl && (media_impl->hasMedia())) + // Does this face have media? + const LLTextureEntry* tep = hover_object->getTE(mHoverPick.mObjectFace); + + if(tep) { - LLStringUtil::format_map_t args; - - media_plugin = media_impl->getMediaPlugin(); - if(media_plugin->pluginSupportsMediaTime()) - { - is_time_based_media = true; - args["[CurrentURL]"] = media_impl->getMediaURL(); - is_media_playing = media_impl->isMediaPlaying(); - } - else + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if (mep) { - is_time_based_media = false; - args["[CurrentURL]"] = media_plugin->getLocation(); + viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; + LLPluginClassMedia* media_plugin = NULL; + + if (media_impl.notNull() && (media_impl->hasMedia())) + { + LLStringUtil::format_map_t args; + + media_plugin = media_impl->getMediaPlugin(); + if(media_plugin) + { if(media_plugin->pluginSupportsMediaTime()) + { + is_time_based_media = true; + args["[CurrentURL]"] = media_impl->getMediaURL(); + is_media_playing = media_impl->isMediaPlaying(); + } + else + { + is_time_based_media = false; + args["[CurrentURL]"] = media_plugin->getLocation(); + } + //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); + } + } } - //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); } bool needs_tip = needs_tooltip(nodep); @@ -769,7 +778,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) mPick = mHoverPick; LLToolTipMgr::instance().show(LLToolTip::Params() .message(tooltip_msg) - .image(LLUI::getUIImage("Info")) + .image(LLUI::getUIImage("Info_Off")) .click_callback(boost::bind(showObjectInspector, hover_object->getID())) .time_based_media(is_time_based_media) .media_playing(is_media_playing) @@ -1012,11 +1021,16 @@ void LLToolPie::playCurrentMedia(const LLPickInfo& info) // Does this face have media? const LLTextureEntry* tep = objectp->getTE(info.mObjectFace); + if (!tep) + return; + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if(!mep) + return; + LLPluginClassMedia* media_plugin = NULL; - if (mep - && gSavedSettings.getBOOL("MediaOnAPrimUI")) + if (gSavedSettings.getBOOL("MediaOnAPrimUI")) { viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); @@ -1141,12 +1155,17 @@ bool LLToolPie::handleMediaClick(const LLPickInfo& pick) // Does this face have media? const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace); + if(!tep) + return false; + LLMediaEntry* mep = (tep->hasMedia()) ? tep->getMediaData() : NULL; + + if(!mep) + return false; + viewer_media_t media_impl = mep ? LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()) : NULL; - if (tep - && mep - && gSavedSettings.getBOOL("MediaOnAPrimUI") + if (gSavedSettings.getBOOL("MediaOnAPrimUI") && media_impl.notNull()) { if (!LLViewerMediaFocus::getInstance()->isFocusedOnFace(pick.getObject(), pick.mObjectFace) ) @@ -1191,6 +1210,9 @@ bool LLToolPie::handleMediaHover(const LLPickInfo& pick) // Does this face have media? const LLTextureEntry* tep = objectp->getTE(pick.mObjectFace); + if(!tep) + return false; + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; if (mep && gSavedSettings.getBOOL("MediaOnAPrimUI")) -- cgit v1.2.3 From 069ac005a9e6cc83f82fd17059bde9944687f924 Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" Date: Thu, 29 Oct 2009 10:33:06 -0400 Subject: Fixed 9-slice scaling on FileMenu_BarSelect for http://jira.secondlife.com/browse/EXT-1951 --- indra/newview/skins/default/textures/textures.xml | 140 ++++++++++++++-------- 1 file changed, 89 insertions(+), 51 deletions(-) diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 4d54838225..f801eabfbe 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -7,7 +7,7 @@ - + @@ -54,11 +54,6 @@ - - - - - @@ -94,7 +89,7 @@ - + @@ -102,7 +97,6 @@ - @@ -150,7 +144,7 @@ - + @@ -228,9 +222,6 @@ - - - @@ -258,42 +249,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -480,9 +435,6 @@ - - - @@ -600,6 +552,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -618,12 +618,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -639,6 +672,11 @@ + + + + + -- cgit v1.2.3 From 00af1cca0083120149e3b7a7a793285b3c9ad882 Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 29 Oct 2009 10:02:54 -0700 Subject: EXT-384 Fix warning about "GrapicsCardTextureMemory" when opening preferences. Trivial misspelling, not reviewed. --- indra/newview/skins/default/xui/en/floater_hardware_settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index fe04d1f627..d47c726aa9 100644 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -131,7 +131,7 @@ layout="topleft" left="10" max_val="4096" - name="GrapicsCardTextureMemory" + name="GraphicsCardTextureMemory" tool_tip="Amount of memory to allocate for textures. Defaults to video card memory. Reducing this may improve performance but may also make textures blurry." top_pad="10" width="300" /> -- cgit v1.2.3 From e4d03c75fbabf05646fb24a086a6082b0161658f Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" Date: Thu, 29 Oct 2009 14:28:12 -0400 Subject: Made toast notifications closer to spec. http://jira.secondlife.com/browse/EXT-1673 --- .../newview/skins/default/xui/en/notifications.xml | 8 +-- .../skins/default/xui/en/panel_instant_message.xml | 43 ++++++++-------- .../skins/default/xui/en/panel_notification.xml | 59 ++++++++++++++-------- indra/newview/skins/default/xui/en/panel_toast.xml | 43 +++++++++------- 4 files changed, 86 insertions(+), 67 deletions(-) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 7d2ef4923e..c384f9f473 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -5837,15 +5837,11 @@ An object named [OBJECTFROMNAME] owned by (an unknown Resident) has given you a + + Date: Thu, 29 Oct 2009 15:12:13 -0400 Subject: EXT-1919 Appearance editor param sliders ineffective after save Visual param sliders were not being updated to affect the new wearable created after a save was performed. Created a reset() function to do this which gets called after the new object is created. Code reviewed by Seraph --- indra/newview/llwearable.cpp | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index a091028ec2..d70b3a26a9 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -668,21 +668,7 @@ void LLWearable::writeToAvatar( BOOL set_by_user, BOOL update_customize_floater if( gFloaterCustomize && update_customize_floater ) { - LLViewerInventoryItem* item; - // MULTI_WEARABLE: - item = (LLViewerInventoryItem*)gInventory.getItem(gAgentWearables.getWearableItemID(mType,0)); - U32 perm_mask = PERM_NONE; - BOOL is_complete = FALSE; - if(item) - { - perm_mask = item->getPermissions().getMaskOwner(); - is_complete = item->isComplete(); - if(!is_complete) - { - item->fetchFromServer(); - } - } - gFloaterCustomize->setWearable(mType, this, perm_mask, is_complete); + gFloaterCustomize->setWearable(mType, 0); gFloaterCustomize->setCurrentWearableType( mType ); } -- cgit v1.2.3 From 65f534899740018b8efb662f8154030edb07fc0f Mon Sep 17 00:00:00 2001 From: "nyx@NyxTop" Date: Thu, 29 Oct 2009 15:13:27 -0400 Subject: EXT-1945 visual parameter animations broken First round of fixes for trying to fix the visual param animations Code reviewed by Seraph --- indra/llcharacter/llvisualparam.cpp | 10 +++++++- indra/llcharacter/llvisualparam.h | 6 ++++- indra/newview/llagentwearables.cpp | 11 +++++++++ indra/newview/llagentwearables.h | 2 ++ indra/newview/lltexlayerparams.cpp | 17 +++++++++----- indra/newview/lltexlayerparams.h | 1 - indra/newview/llvoavatar.cpp | 47 +++++++++++++++++++++++-------------- indra/newview/llvoavatar.h | 5 ++-- indra/newview/llvoavatarself.cpp | 40 +++++++++++++++++++++++++------ indra/newview/llvoavatarself.h | 2 ++ indra/newview/llwearable.cpp | 11 +++++++++ indra/newview/llwearable.h | 1 + 12 files changed, 117 insertions(+), 36 deletions(-) diff --git a/indra/llcharacter/llvisualparam.cpp b/indra/llcharacter/llvisualparam.cpp index 9e4957342c..6232c7588b 100644 --- a/indra/llcharacter/llvisualparam.cpp +++ b/indra/llcharacter/llvisualparam.cpp @@ -173,7 +173,8 @@ LLVisualParam::LLVisualParam() mTargetWeight( 0.f ), mIsAnimating( FALSE ), mID( -1 ), - mInfo( 0 ) + mInfo( 0 ), + mIsDummy(FALSE) { } @@ -251,6 +252,13 @@ void LLVisualParam::setWeight(F32 weight, BOOL set_by_user) //----------------------------------------------------------------------------- void LLVisualParam::setAnimationTarget(F32 target_value, BOOL set_by_user) { + // don't animate dummy parameters + if (mIsDummy) + { + setWeight(target_value, set_by_user); + return; + } + if (mInfo) { if (getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) diff --git a/indra/llcharacter/llvisualparam.h b/indra/llcharacter/llvisualparam.h index 0b516b9374..affc49debf 100644 --- a/indra/llcharacter/llvisualparam.h +++ b/indra/llcharacter/llvisualparam.h @@ -148,15 +148,19 @@ public: LLVisualParam* getNextParam() { return mNext; } void setNextParam( LLVisualParam *next ); - virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating; } + virtual void setAnimating(BOOL is_animating) { mIsAnimating = is_animating && !mIsDummy; } BOOL getAnimating() const { return mIsAnimating; } + void setIsDummy(BOOL is_self) { mIsDummy = is_self; } + protected: F32 mCurWeight; // current weight F32 mLastWeight; // last weight LLVisualParam* mNext; // next param in a shared chain F32 mTargetWeight; // interpolation target BOOL mIsAnimating; // this value has been given an interpolation target + BOOL mIsDummy; // this is used to prevent dummy visual params from animating + S32 mID; // id for storing weight/morphtarget compares compactly LLVisualParamInfo *mInfo; diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index b9a0b4293d..d764dc4f3a 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1985,6 +1985,17 @@ bool LLAgentWearables::canWearableBeRemoved(const LLWearable* wearable) const return !(((type == WT_SHAPE) || (type == WT_SKIN) || (type == WT_HAIR) || (type == WT_EYES)) && (getWearableCount(type) <= 1) ); } +void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL set_by_user) +{ + for( S32 type = 0; type < WT_COUNT; ++type ) + { + for (S32 count = 0; count < getWearableCount((EWearableType)type); ++count) + { + LLWearable *wearable = getWearable((EWearableType)type,count); + wearable->animateParams(delta, set_by_user); + } + } +} void LLAgentWearables::updateServer() { diff --git a/indra/newview/llagentwearables.h b/indra/newview/llagentwearables.h index 667cb94552..97de785c87 100644 --- a/indra/newview/llagentwearables.h +++ b/indra/newview/llagentwearables.h @@ -79,6 +79,8 @@ public: // Note: False for shape, skin, eyes, and hair, unless you have MORE than 1. bool canWearableBeRemoved(const LLWearable* wearable) const; + + void animateAllWearableParams(F32 delta, BOOL set_by_user); //-------------------------------------------------------------------- // Accessors diff --git a/indra/newview/lltexlayerparams.cpp b/indra/newview/lltexlayerparams.cpp index e1643af71d..74e0fa077e 100644 --- a/indra/newview/lltexlayerparams.cpp +++ b/indra/newview/lltexlayerparams.cpp @@ -42,8 +42,7 @@ //----------------------------------------------------------------------------- LLTexLayerParam::LLTexLayerParam(LLTexLayerInterface *layer) : mTexLayer(layer), - mAvatar(NULL), - mIsWearableParam(TRUE) + mAvatar(NULL) { if (mTexLayer != NULL) { @@ -56,8 +55,7 @@ LLTexLayerParam::LLTexLayerParam(LLTexLayerInterface *layer) : } LLTexLayerParam::LLTexLayerParam(LLVOAvatar *avatar) : - mTexLayer(NULL), - mIsWearableParam(FALSE) + mTexLayer(NULL) { mAvatar = avatar; } @@ -177,7 +175,7 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user) { mCurWeight = new_weight; - if ((mAvatar->getSex() & getSex()) && !mIsWearableParam) // only trigger a baked texture update if we're changing a wearable's visual param. + if ((mAvatar->getSex() & getSex()) && (mAvatar->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param. { if (gAgent.cameraCustomizeAvatar()) { @@ -192,6 +190,13 @@ void LLTexLayerParamAlpha::setWeight(F32 weight, BOOL set_by_user) void LLTexLayerParamAlpha::setAnimationTarget(F32 target_value, BOOL set_by_user) { + // do not animate dummy parameters + if (mIsDummy) + { + setWeight(target_value, set_by_user); + return; + } + mTargetWeight = target_value; setWeight(target_value, set_by_user); mIsAnimating = TRUE; @@ -468,7 +473,7 @@ void LLTexLayerParamColor::setWeight(F32 weight, BOOL set_by_user) return; } - if ((mAvatar->getSex() & getSex()) && !mIsWearableParam) // only trigger a baked texture update if we're changing a wearable's visual param. + if ((mAvatar->getSex() & getSex()) && (mAvatar->isSelf() && !mIsDummy)) // only trigger a baked texture update if we're changing a wearable's visual param. { onGlobalColorChanged(set_by_user); if (mTexLayer) diff --git a/indra/newview/lltexlayerparams.h b/indra/newview/lltexlayerparams.h index dcb108bbf6..98365864f9 100644 --- a/indra/newview/lltexlayerparams.h +++ b/indra/newview/lltexlayerparams.h @@ -49,7 +49,6 @@ public: protected: LLTexLayerInterface* mTexLayer; LLVOAvatar* mAvatar; - BOOL mIsWearableParam; }; //----------------------------------------------------------------------------- diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp index f9c95afc31..4bf66ba17e 100644 --- a/indra/newview/llvoavatar.cpp +++ b/indra/newview/llvoavatar.cpp @@ -2448,28 +2448,20 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() } else { - F32 blend_frac = calc_bouncy_animation(appearance_anim_time / APPEARANCE_MORPH_TIME); - F32 last_blend_frac = calc_bouncy_animation(mLastAppearanceBlendTime / APPEARANCE_MORPH_TIME); - F32 morph_amt; - if (last_blend_frac == 1.f) - { - morph_amt = 1.f; - } - else - { - morph_amt = (blend_frac - last_blend_frac) / (1.f - last_blend_frac); - } - + F32 morph_amt = calcMorphAmount(); LLVisualParam *param; - // animate only top level params - for (param = getFirstVisualParam(); - param; - param = getNextVisualParam()) + if (!isSelf()) { - if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + // animate only top level params for non-self avatars + for (param = getFirstVisualParam(); + param; + param = getNextVisualParam()) { - param->animate(morph_amt, mAppearanceAnimSetByUser); + if (param->getGroup() == VISUAL_PARAM_GROUP_TWEAKABLE) + { + param->animate(morph_amt, mAppearanceAnimSetByUser); + } } } @@ -2487,6 +2479,25 @@ void LLVOAvatar::idleUpdateAppearanceAnimation() } } +F32 LLVOAvatar::calcMorphAmount() +{ + F32 appearance_anim_time = mAppearanceMorphTimer.getElapsedTimeF32(); + F32 blend_frac = calc_bouncy_animation(appearance_anim_time / APPEARANCE_MORPH_TIME); + F32 last_blend_frac = calc_bouncy_animation(mLastAppearanceBlendTime / APPEARANCE_MORPH_TIME); + + F32 morph_amt; + if (last_blend_frac == 1.f) + { + morph_amt = 1.f; + } + else + { + morph_amt = (blend_frac - last_blend_frac) / (1.f - last_blend_frac); + } + + return morph_amt; +} + void LLVOAvatar::idleUpdateLipSync(bool voice_enabled) { // Use the Lipsync_Ooh and Lipsync_Aah morphs for lip sync diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h index e3add8aa78..f7c794defe 100644 --- a/indra/newview/llvoavatar.h +++ b/indra/newview/llvoavatar.h @@ -205,7 +205,7 @@ public: virtual BOOL updateCharacter(LLAgent &agent); void idleUpdateVoiceVisualizer(bool voice_enabled); void idleUpdateMisc(bool detailed_update); - void idleUpdateAppearanceAnimation(); + virtual void idleUpdateAppearanceAnimation(); void idleUpdateLipSync(bool voice_enabled); void idleUpdateLoadingEffect(); void idleUpdateWindEffect(); @@ -250,6 +250,7 @@ protected: virtual BOOL updateIsFullyLoaded(); BOOL processFullyLoadedChange(bool loading); void updateRuthTimer(bool loading); + F32 calcMorphAmount(); private: BOOL mFullyLoaded; BOOL mPreviousFullyLoaded; @@ -276,7 +277,7 @@ public: protected: static BOOL parseSkeletonFile(const std::string& filename); void buildCharacter(); - BOOL loadAvatar(); + virtual BOOL loadAvatar(); BOOL setupBone(const LLVOAvatarBoneInfo* info, LLViewerJoint* parent, S32 ¤t_volume_num, S32 ¤t_joint_num); BOOL buildSkeleton(const LLVOAvatarSkeletonInfo *info); diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index 4760d5a472..758db538a2 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -193,6 +193,25 @@ void LLVOAvatarSelf::markDead() LLVOAvatar::markDead(); } +/*virtual*/ BOOL LLVOAvatarSelf::loadAvatar() +{ + BOOL success = LLVOAvatar::loadAvatar(); + + // set all parameters sotred directly in the avatar to have + // the isSelfParam to be TRUE - this is used to prevent + // them from being animated or trigger accidental rebakes + // when we copy params from the wearable to the base avatar. + for (LLViewerVisualParam* param = (LLViewerVisualParam*) getFirstVisualParam(); + param; + param = (LLViewerVisualParam*) getNextVisualParam()) + { + param->setIsDummy(TRUE); + } + + return success; +} + + BOOL LLVOAvatarSelf::loadAvatarSelf() { BOOL success = TRUE; @@ -704,16 +723,23 @@ void LLVOAvatarSelf::updateVisualParams() } } - LLWearable *shape = gAgentWearables.getWearable(WT_SHAPE,0); - if (shape) - { - F32 gender = shape->getVisualParamWeight(80); // param 80 == gender - setVisualParamWeight("male",gender ,TRUE); - } - LLVOAvatar::updateVisualParams(); } +/*virtual*/ +void LLVOAvatarSelf::idleUpdateAppearanceAnimation() +{ + // Animate all top-level wearable visual parameters + gAgentWearables.animateAllWearableParams(calcMorphAmount(), mAppearanceAnimSetByUser); + + // apply wearable visual params to avatar + updateVisualParams(); + + //allow avatar to process updates + LLVOAvatar::idleUpdateAppearanceAnimation(); + +} + // virtual void LLVOAvatarSelf::requestStopMotion(LLMotion* motion) { diff --git a/indra/newview/llvoavatarself.h b/indra/newview/llvoavatarself.h index a555d04a63..6e52b33634 100644 --- a/indra/newview/llvoavatarself.h +++ b/indra/newview/llvoavatarself.h @@ -57,6 +57,7 @@ public: virtual void markDead(); virtual void initInstance(); // Called after construction to initialize the class. protected: + /*virtual*/ BOOL loadAvatar(); BOOL loadAvatarSelf(); BOOL buildSkeletonSelf(const LLVOAvatarSkeletonInfo *info); BOOL buildMenus(); @@ -89,6 +90,7 @@ public: /*virtual*/ BOOL setVisualParamWeight(const char* param_name, F32 weight, BOOL set_by_user = FALSE ); /*virtual*/ BOOL setVisualParamWeight(S32 index, F32 weight, BOOL set_by_user = FALSE ); /*virtual*/ void updateVisualParams(); + /*virtual*/ void idleUpdateAppearanceAnimation(); private: // helper function. Passed in param is assumed to be in avatar's parameter list. diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index d70b3a26a9..ebb9b0c13d 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -921,6 +921,17 @@ void LLWearable::getVisualParams(visual_param_vec_t &list) } } +void LLWearable::animateParams(F32 delta, BOOL set_by_user) +{ + for(visual_param_index_map_t::iterator iter = mVisualParamIndexMap.begin(); + iter != mVisualParamIndexMap.end(); + ++iter) + { + LLVisualParam *param = (LLVisualParam*) iter->second; + param->animate(delta, set_by_user); + } +} + LLColor4 LLWearable::getClothesColor(S32 te) const { LLColor4 color; diff --git a/indra/newview/llwearable.h b/indra/newview/llwearable.h index 01bd9652a5..96631811c5 100644 --- a/indra/newview/llwearable.h +++ b/indra/newview/llwearable.h @@ -119,6 +119,7 @@ public: F32 getVisualParamWeight(S32 index) const; LLVisualParam* getVisualParam(S32 index) const; void getVisualParams(visual_param_vec_t &list); + void animateParams(F32 delta, BOOL set_by_user); LLColor4 getClothesColor(S32 te) const; void setClothesColor( S32 te, const LLColor4& new_color, BOOL set_by_user ); -- cgit v1.2.3 From 011f3786b34904d2197817151600dd876679dbbe Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" Date: Thu, 29 Oct 2009 15:16:34 -0400 Subject: EXT-1947 layer visual params don't invalidate baked textures cloned visual params were picking up the mIsDummy flag from their parents. modified the createVisualParams function to reset this flag. code reviewed by Seraph --- indra/newview/lldriverparam.cpp | 1 + indra/newview/llwearable.cpp | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/lldriverparam.cpp b/indra/newview/lldriverparam.cpp index 45f4b4fbd0..527656ab6b 100644 --- a/indra/newview/lldriverparam.cpp +++ b/indra/newview/lldriverparam.cpp @@ -224,6 +224,7 @@ void LLDriverParam::setAvatar(LLVOAvatar *avatarp) } } *new_param = *this; + new_param->setIsDummy(FALSE); return new_param; } diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp index ebb9b0c13d..4cd29bb838 100644 --- a/indra/newview/llwearable.cpp +++ b/indra/newview/llwearable.cpp @@ -185,7 +185,9 @@ void LLWearable::createVisualParams() { delete mVisualParamIndexMap[param->getID()]; } - mVisualParamIndexMap[param->getID()] = param->cloneParam(this); + LLViewerVisualParam *new_param = param->cloneParam(this); + new_param->setIsDummy(FALSE); + mVisualParamIndexMap[param->getID()] = new_param; } } -- cgit v1.2.3 From 12427e963ed7312c33e2dfd756573517b03f0475 Mon Sep 17 00:00:00 2001 From: Sergey Borushevsky Date: Thu, 29 Oct 2009 22:32:35 +0200 Subject: Implemented major task EXT-1695 (IM window should save profile image show/hide state). --HG-- branch : product-engine --- indra/newview/app_settings/settings.xml | 11 +++++++++++ indra/newview/llimfloater.cpp | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 6bc95b9cdb..5fc0cb6ff8 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3631,6 +3631,17 @@ Value 1 + IMShowControlPanel + + Comment + Show IM Control Panel + Persist + 1 + Type + Boolean + Value + 1 + IgnoreAllNotifications Comment diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index f3fec70ac9..b9c068b583 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -302,6 +302,8 @@ void LLIMFloater::onSlide() LLPanel* im_control_panel = getChild("panel_im_control_panel"); im_control_panel->setVisible(!im_control_panel->getVisible()); + gSavedSettings.setBOOL("IMShowControlPanel", im_control_panel->getVisible()); + getChild("slide_left_btn")->setVisible(im_control_panel->getVisible()); getChild("slide_right_btn")->setVisible(!im_control_panel->getVisible()); } @@ -344,6 +346,8 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id) LLDockControl::TOP, boost::bind(&LLIMFloater::getAllowedRect, floater, _1))); } + floater->childSetVisible("panel_im_control_panel", gSavedSettings.getBOOL("IMShowControlPanel")); + return floater; } -- cgit v1.2.3 From 0595c97f69ae6229d0a261ce5560500b88cd55cc Mon Sep 17 00:00:00 2001 From: Rick Pasetto Date: Thu, 29 Oct 2009 14:09:13 -0700 Subject: Fix unposted bug where current URL is not showing in the media controls --- indra/newview/llpanelprimmediacontrols.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index ca7ebb1ad8..cbff13a20f 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -1000,6 +1000,7 @@ void LLPanelPrimMediaControls::onInputURL(LLFocusableElement* caller, void *user void LLPanelPrimMediaControls::setCurrentURL() { +#ifdef USE_COMBO_BOX_FOR_MEDIA_URL LLComboBox* media_address_combo = getChild("media_address_combo"); // redirects will navigate momentarily to about:blank, don't add to history if (media_address_combo && mCurrentURL != "about:blank") @@ -1008,6 +1009,13 @@ void LLPanelPrimMediaControls::setCurrentURL() media_address_combo->add(mCurrentURL, ADD_SORTED); media_address_combo->selectByValue(mCurrentURL); } +#else // USE_COMBO_BOX_FOR_MEDIA_URL + LLLineEditor* media_address_url = getChild("media_address_url"); + if (media_address_url && mCurrentURL != "about:blank") + { + media_address_url->setValue(mCurrentURL); + } +#endif // USE_COMBO_BOX_FOR_MEDIA_URL } void LLPanelPrimMediaControls::onCommitSlider() -- cgit v1.2.3 From 8bf1dd2f1be96ea6b060772d9c70ba6b855f9f27 Mon Sep 17 00:00:00 2001 From: "Nyx (Neal Orman)" Date: Thu, 29 Oct 2009 17:42:32 -0400 Subject: previous checkin had a signed/unsigned mismatch. Using a cast to fix it. --- indra/newview/llagentwearables.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index d764dc4f3a..89a7d8b91f 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1989,7 +1989,7 @@ void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL set_by_user) { for( S32 type = 0; type < WT_COUNT; ++type ) { - for (S32 count = 0; count < getWearableCount((EWearableType)type); ++count) + for (S32 count = 0; count < (U32)getWearableCount((EWearableType)type); ++count) { LLWearable *wearable = getWearable((EWearableType)type,count); wearable->animateParams(delta, set_by_user); -- cgit v1.2.3 From 622cb8c2b4b4d0fbcb6cf4164c9ab38cbb45861c Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" Date: Thu, 29 Oct 2009 17:47:17 -0400 Subject: Reverted back to white dot (dot will now be colorized programmatically). http://jira.secondlife.com/browse/EXT-1486 --- indra/newview/skins/default/textures/map_avatar_8.tga | Bin 300 -> 300 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/indra/newview/skins/default/textures/map_avatar_8.tga b/indra/newview/skins/default/textures/map_avatar_8.tga index 47c8cbed6f..28552f2237 100644 Binary files a/indra/newview/skins/default/textures/map_avatar_8.tga and b/indra/newview/skins/default/textures/map_avatar_8.tga differ -- cgit v1.2.3 From 361a2277733a0afaf61f6c6150f1933d2e5aceb7 Mon Sep 17 00:00:00 2001 From: Xiaohong Bao Date: Thu, 29 Oct 2009 16:12:12 -0600 Subject: fix EXT-1661: Avatars' icons should be cached only once per 24 hours, but not every time the viewer is restarted. to be reviewed by steve. --- indra/llrender/lltexture.h | 2 ++ indra/llui/lliconctrl.cpp | 17 +++++++++++++- indra/llui/lliconctrl.h | 8 +++++++ indra/newview/llavatariconctrl.cpp | 3 ++- indra/newview/llviewertexture.cpp | 48 +++++++++++++++++++++++++++++--------- indra/newview/llviewertexture.h | 10 ++++---- 6 files changed, 71 insertions(+), 17 deletions(-) diff --git a/indra/llrender/lltexture.h b/indra/llrender/lltexture.h index c18917b663..0cd9667644 100644 --- a/indra/llrender/lltexture.h +++ b/indra/llrender/lltexture.h @@ -61,6 +61,8 @@ public: // //interfaces to access LLViewerTexture // + virtual S8 getType() const = 0 ; + virtual void setKnownDrawSize(S32 width, S32 height) = 0 ; virtual bool bindDefaultImage(const S32 stage = 0) const = 0 ; virtual void forceImmediateUpdate() = 0 ; virtual void setActive() = 0 ; diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 66c2ba682f..82ffac9580 100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -57,7 +57,9 @@ LLIconCtrl::LLIconCtrl(const LLIconCtrl::Params& p) : LLUICtrl(p), mColor(p.color()), mImagep(p.image), - mPriority(0) + mPriority(0), + mDrawWidth(0), + mDrawHeight(0) { if (mImagep.notNull()) { @@ -100,6 +102,8 @@ void LLIconCtrl::setValue(const LLSD& value ) { mImagep = LLUI::getUIImage(tvalue.asString(), mPriority); } + + setIconImageDrawSize(); } std::string LLIconCtrl::getImageName() const @@ -109,3 +113,14 @@ std::string LLIconCtrl::getImageName() const else return std::string(); } + +void LLIconCtrl::setIconImageDrawSize() +{ + if(mImagep.notNull() && mDrawWidth && mDrawHeight) + { + if(mImagep->getImage().notNull()) + { + mImagep->getImage()->setKnownDrawSize(mDrawWidth, mDrawHeight) ; + } + } +} \ No newline at end of file diff --git a/indra/llui/lliconctrl.h b/indra/llui/lliconctrl.h index 90f1693060..66368f979b 100644 --- a/indra/llui/lliconctrl.h +++ b/indra/llui/lliconctrl.h @@ -60,6 +60,7 @@ public: protected: LLIconCtrl(const Params&); friend class LLUICtrlFactory; + public: virtual ~LLIconCtrl(); @@ -73,9 +74,16 @@ public: void setColor(const LLColor4& color) { mColor = color; } +private: + void setIconImageDrawSize() ; + protected: S32 mPriority; + //the output size of the icon image if set. + S32 mDrawWidth ; + S32 mDrawHeight ; + private: LLUIColor mColor; LLPointer mImagep; diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index ebcda13dd4..b56e8d1ec2 100644 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -155,6 +155,8 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) mPriority = LLViewerFetchedTexture::BOOST_ICON; LLRect rect = p.rect; + mDrawWidth = llmax(32, rect.getWidth()) ; + mDrawHeight = llmax(32, rect.getHeight()) ; static LLUICachedControl llavatariconctrl_symbol_hpad("UIAvatariconctrlSymbolHPad", 2); static LLUICachedControl llavatariconctrl_symbol_vpad("UIAvatariconctrlSymbolVPad", 2); @@ -193,7 +195,6 @@ LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) LLIconCtrl::setValue("default_profile_picture.j2c"); } - LLUICtrl::CommitCallbackRegistry::ScopedRegistrar registrar; registrar.add("AvatarIcon.Action", boost::bind(&LLAvatarIconCtrl::onAvatarIconContextMenuItemClicked, this, _2)); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index e5c53c91c9..2368a2da33 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -93,6 +93,7 @@ BOOL LLViewerTexture::sUseTextureAtlas = FALSE ; const F32 desired_discard_bias_min = -2.0f; // -max number of levels to improve image quality by const F32 desired_discard_bias_max = 1.5f; // max number of levels to reduce image quality by +const F64 log_2 = log(2.0); //---------------------------------------------------------------------------------------------- //namespace: LLViewerTextureAccess @@ -134,7 +135,7 @@ LLViewerMediaTexture* LLViewerTextureManager::getMediaTexture(const LLUUID& id, return tex ; } -LLViewerFetchedTexture* LLViewerTextureManager::staticCastToFetchedTexture(LLViewerTexture* tex, BOOL report_error) +LLViewerFetchedTexture* LLViewerTextureManager::staticCastToFetchedTexture(LLTexture* tex, BOOL report_error) { if(!tex) { @@ -522,6 +523,12 @@ F32 LLViewerTexture::getMaxVirtualSize() return mMaxVirtualSize ; } +//virtual +void LLViewerTexture::setKnownDrawSize(S32 width, S32 height) +{ + //nothing here. +} + //virtual void LLViewerTexture::addFace(LLFace* facep) { @@ -852,6 +859,7 @@ void LLViewerFetchedTexture::init(bool firstinit) mKnownDrawWidth = 0; mKnownDrawHeight = 0; + mKnownDrawSizeChanged = FALSE ; if (firstinit) { @@ -1084,10 +1092,17 @@ BOOL LLViewerFetchedTexture::createTexture(S32 usename/*= 0*/) } // Call with 0,0 to turn this feature off. +//virtual void LLViewerFetchedTexture::setKnownDrawSize(S32 width, S32 height) { - mKnownDrawWidth = width; - mKnownDrawHeight = height; + if(mKnownDrawWidth != width || mKnownDrawHeight != height) + { + mKnownDrawWidth = width; + mKnownDrawHeight = height; + + mKnownDrawSizeChanged = TRUE ; + mFullyLoaded = FALSE ; + } addTextureStats((F32)(width * height)); } @@ -1104,13 +1119,26 @@ void LLViewerFetchedTexture::processTextureStats() mDesiredDiscardLevel = getMaxDiscardLevel() ; } else - { - mDesiredDiscardLevel = 0; - if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT) + { + if(!mKnownDrawWidth || !mKnownDrawHeight || mFullWidth <= mKnownDrawWidth || mFullHeight <= mKnownDrawHeight) { - mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048 + if (mFullWidth > MAX_IMAGE_SIZE_DEFAULT || mFullHeight > MAX_IMAGE_SIZE_DEFAULT) + { + mDesiredDiscardLevel = 1; // MAX_IMAGE_SIZE_DEFAULT = 1024 and max size ever is 2048 + } + else + { + mDesiredDiscardLevel = 0; + } } - + else if(mKnownDrawSizeChanged)//known draw size is set + { + mDesiredDiscardLevel = (S8)llmin(log((F32)mFullWidth / mKnownDrawWidth) / log_2, + log((F32)mFullHeight / mKnownDrawHeight) / log_2) ; + mDesiredDiscardLevel = llclamp(mDesiredDiscardLevel, (S8)0, (S8)getMaxDiscardLevel()) ; + } + mKnownDrawSizeChanged = FALSE ; + if(getDiscardLevel() >= 0 && (getDiscardLevel() <= mDesiredDiscardLevel)) { mFullyLoaded = TRUE ; @@ -1121,8 +1149,6 @@ void LLViewerFetchedTexture::processTextureStats() //texture does not have any data, so we don't know the size of the image, treat it like 32 * 32. F32 LLViewerFetchedTexture::calcDecodePriorityForUnknownTexture(F32 pixel_priority) { - static const F64 log_2 = log(2.0); - F32 desired = (F32)(log(32.0/pixel_priority) / log_2); S32 ddiscard = MAX_DISCARD_LEVEL - (S32)desired + 1; ddiscard = llclamp(ddiscard, 1, 9); @@ -1169,7 +1195,7 @@ F32 LLViewerFetchedTexture::calcDecodePriority() // Don't decode anything we don't need priority = -1.0f; } - else if (mBoostLevel == LLViewerTexture::BOOST_UI && !have_all_data) + else if ((mBoostLevel == LLViewerTexture::BOOST_UI || mBoostLevel == LLViewerTexture::BOOST_ICON) && !have_all_data) { priority = 1.f; } diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index 480e1c1cbc..ef298319d2 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -163,6 +163,7 @@ public: S32 getFullWidth() const { return mFullWidth; } S32 getFullHeight() const { return mFullHeight; } + /*virtual*/ void setKnownDrawSize(S32 width, S32 height); virtual void addFace(LLFace* facep) ; virtual void removeFace(LLFace* facep) ; @@ -357,7 +358,7 @@ public: // Override the computation of discard levels if we know the exact output // size of the image. Used for UI textures to not decode, even if we have // more data. - void setKnownDrawSize(S32 width, S32 height); + /*virtual*/ void setKnownDrawSize(S32 width, S32 height); void setIsMissingAsset(); /*virtual*/ BOOL isMissingAsset() const { return mIsMissingAsset; } @@ -406,6 +407,8 @@ private: BOOL mFullyLoaded; protected: + std::string mLocalFileName; + S32 mOrigWidth; S32 mOrigHeight; @@ -413,8 +416,7 @@ protected: // Used for UI textures to not decode, even if we have more data. S32 mKnownDrawWidth; S32 mKnownDrawHeight; - - std::string mLocalFileName; + BOOL mKnownDrawSizeChanged ; S8 mDesiredDiscardLevel; // The discard level we'd LIKE to have - if we have it and there's space S8 mMinDesiredDiscardLevel; // The minimum discard level we'd like to have @@ -570,7 +572,7 @@ public: static LLTexturePipelineTester* sTesterp ; //returns NULL if tex is not a LLViewerFetchedTexture nor derived from LLViewerFetchedTexture. - static LLViewerFetchedTexture* staticCastToFetchedTexture(LLViewerTexture* tex, BOOL report_error = FALSE) ; + static LLViewerFetchedTexture* staticCastToFetchedTexture(LLTexture* tex, BOOL report_error = FALSE) ; // //"find-texture" just check if the texture exists, if yes, return it, otherwise return null. -- cgit v1.2.3 From 432e243e1aca565ea19091d39f1ff33056ce4075 Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 29 Oct 2009 15:37:25 -0700 Subject: EXT-1352 Add image art to floater backgrounds. Implemented "legacy_header_height" hack to account for new art being 25 pixels tall instead of legacy 18 pixels -- it auto-sizes the floaters to be taller. Made all floaters have resize handles, just disable and make invisible if unused. This simplifies the floater construction logic. Floater header height now lives in floater.xml, not as a global saved setting. Reviewed with Richard. --- indra/llui/llfloater.cpp | 139 ++++++++++++++------- indra/llui/llfloater.h | 8 ++ indra/llui/llmenugl.cpp | 3 +- indra/llui/llmultifloater.cpp | 9 +- indra/newview/app_settings/settings.xml | 11 -- indra/newview/llfloatercamera.cpp | 4 +- indra/newview/llfloatergroupinvite.cpp | 5 +- indra/newview/llfloaternotificationsconsole.cpp | 3 +- indra/newview/llfloateruipreview.cpp | 3 +- indra/newview/lltexturectrl.cpp | 2 +- indra/newview/skins/default/textures/textures.xml | 8 +- .../textures/windows/Window_NoTitle_Background.png | Bin 0 -> 289 bytes .../textures/windows/Window_NoTitle_Foreground.png | Bin 0 -> 290 bytes .../newview/skins/default/xui/en/floater_tools.xml | 2 + .../skins/default/xui/en/widgets/floater.xml | 4 +- 15 files changed, 127 insertions(+), 74 deletions(-) create mode 100644 indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png create mode 100644 indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index ae5dd5a1ce..c8e26ecaea 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -191,9 +191,11 @@ LLFloater::Params::Params() can_tear_off("can_tear_off", true), save_rect("save_rect", false), save_visibility("save_visibility", false), + can_dock("can_dock", false), + header_height("header_height", 0), + legacy_header_height("legacy_header_height", 0), open_callback("open_callback"), - close_callback("close_callback"), - can_dock("can_dock", false) + close_callback("close_callback") { visible = false; } @@ -233,6 +235,8 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mResizable(p.can_resize), mMinWidth(p.min_width), mMinHeight(p.min_height), + mHeaderHeight(p.header_height), + mLegacyHeaderHeight(p.legacy_header_height), mMinimized(FALSE), mForeground(FALSE), mFirstLook(TRUE), @@ -274,16 +278,16 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) // chrome floaters don't take focus at all setFocusRoot(!getIsChrome()); + addDragHandle(); + addResizeCtrls(); + enableResizeCtrls(mResizable); + initFloater(); } // Note: Floaters constructed from XML call init() twice! void LLFloater::initFloater() { - addDragHandle(); - - addResizeCtrls(); - // Close button. if (mCanClose) { @@ -323,9 +327,6 @@ void LLFloater::initFloater() void LLFloater::addDragHandle() { - static LLUICachedControl floater_close_box_size ("UIFloaterCloseBoxSize", 0); - S32 close_box_size = mCanClose ? floater_close_box_size : 0; - if (!mDragHandle) { if (mDragOnLeft) @@ -346,6 +347,14 @@ void LLFloater::addDragHandle() } addChild(mDragHandle); } + layoutDragHandle(); +} + +void LLFloater::layoutDragHandle() +{ + static LLUICachedControl floater_close_box_size ("UIFloaterCloseBoxSize", 0); + S32 close_box_size = mCanClose ? floater_close_box_size : 0; + LLRect rect; if (mDragOnLeft) { @@ -361,40 +370,17 @@ void LLFloater::addDragHandle() } void LLFloater::addResizeCtrls() -{ - for (S32 i = 0; i < 4; i++) - { - if (mResizeBar[i]) - { - removeChild(mResizeBar[i]); - delete mResizeBar[i]; - mResizeBar[i] = NULL; - } - if (mResizeHandle[i]) - { - removeChild(mResizeHandle[i]); - delete mResizeHandle[i]; - mResizeHandle[i] = NULL; - } - } - if( !mResizable ) - { - return; - } - +{ // Resize bars (sides) - const S32 RESIZE_BAR_THICKNESS = 3; LLResizeBar::Params p; p.name("resizebar_left"); p.resizing_view(this); - p.rect(LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0)); p.min_size(mMinWidth); p.side(LLResizeBar::LEFT); mResizeBar[LLResizeBar::LEFT] = LLUICtrlFactory::create(p); addChild( mResizeBar[LLResizeBar::LEFT] ); p.name("resizebar_top"); - p.rect(LLRect( 0, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_BAR_THICKNESS)); p.min_size(mMinHeight); p.side(LLResizeBar::TOP); @@ -402,15 +388,12 @@ void LLFloater::addResizeCtrls() addChild( mResizeBar[LLResizeBar::TOP] ); p.name("resizebar_right"); - p.rect(LLRect(getRect().getWidth() - RESIZE_BAR_THICKNESS, getRect().getHeight(), getRect().getWidth(), 0)); p.min_size(mMinWidth); - p.side(LLResizeBar::RIGHT); - + p.side(LLResizeBar::RIGHT); mResizeBar[LLResizeBar::RIGHT] = LLUICtrlFactory::create(p); addChild( mResizeBar[LLResizeBar::RIGHT] ); p.name("resizebar_bottom"); - p.rect(LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0)); p.min_size(mMinHeight); p.side(LLResizeBar::BOTTOM); mResizeBar[LLResizeBar::BOTTOM] = LLUICtrlFactory::create(p); @@ -421,27 +404,69 @@ void LLFloater::addResizeCtrls() // handles must not be mouse-opaque, otherwise they block hover events // to other buttons like the close box. JC handle_p.mouse_opaque(false); - handle_p.rect(LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT, getRect().getWidth(), 0)); handle_p.min_width(mMinWidth); handle_p.min_height(mMinHeight); handle_p.corner(LLResizeHandle::RIGHT_BOTTOM); mResizeHandle[0] = LLUICtrlFactory::create(handle_p); addChild(mResizeHandle[0]); - handle_p.rect(LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_HANDLE_HEIGHT)); handle_p.corner(LLResizeHandle::RIGHT_TOP); mResizeHandle[1] = LLUICtrlFactory::create(handle_p); addChild(mResizeHandle[1]); - handle_p.rect(LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 )); handle_p.corner(LLResizeHandle::LEFT_BOTTOM); mResizeHandle[2] = LLUICtrlFactory::create(handle_p); addChild(mResizeHandle[2]); - handle_p.rect(LLRect( 0, getRect().getHeight(), RESIZE_HANDLE_WIDTH, getRect().getHeight() - RESIZE_HANDLE_HEIGHT )); handle_p.corner(LLResizeHandle::LEFT_TOP); mResizeHandle[3] = LLUICtrlFactory::create(handle_p); addChild(mResizeHandle[3]); + + layoutResizeCtrls(); +} + +void LLFloater::layoutResizeCtrls() +{ + LLRect rect; + + // Resize bars (sides) + const S32 RESIZE_BAR_THICKNESS = 3; + rect = LLRect( 0, getRect().getHeight(), RESIZE_BAR_THICKNESS, 0); + mResizeBar[LLResizeBar::LEFT]->setRect(rect); + + rect = LLRect( 0, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_BAR_THICKNESS); + mResizeBar[LLResizeBar::TOP]->setRect(rect); + + rect = LLRect(getRect().getWidth() - RESIZE_BAR_THICKNESS, getRect().getHeight(), getRect().getWidth(), 0); + mResizeBar[LLResizeBar::RIGHT]->setRect(rect); + + rect = LLRect(0, RESIZE_BAR_THICKNESS, getRect().getWidth(), 0); + mResizeBar[LLResizeBar::BOTTOM]->setRect(rect); + + // Resize handles (corners) + rect = LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, RESIZE_HANDLE_HEIGHT, getRect().getWidth(), 0); + mResizeHandle[0]->setRect(rect); + + rect = LLRect( getRect().getWidth() - RESIZE_HANDLE_WIDTH, getRect().getHeight(), getRect().getWidth(), getRect().getHeight() - RESIZE_HANDLE_HEIGHT); + mResizeHandle[1]->setRect(rect); + + rect = LLRect( 0, RESIZE_HANDLE_HEIGHT, RESIZE_HANDLE_WIDTH, 0 ); + mResizeHandle[2]->setRect(rect); + + rect = LLRect( 0, getRect().getHeight(), RESIZE_HANDLE_WIDTH, getRect().getHeight() - RESIZE_HANDLE_HEIGHT ); + mResizeHandle[3]->setRect(rect); +} + +void LLFloater::enableResizeCtrls(bool enable) +{ + for (S32 i = 0; i < 4; ++i) + { + mResizeBar[i]->setVisible(enable); + mResizeBar[i]->setEnabled(enable); + + mResizeHandle[i]->setVisible(enable); + mResizeHandle[i]->setEnabled(enable); + } } // virtual @@ -909,7 +934,8 @@ void LLFloater::handleReshape(const LLRect& new_rect, bool by_user) void LLFloater::setMinimized(BOOL minimize) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& default_params = LLFloater::getDefaultParams(); + S32 floater_header_size = default_params.header_height; static LLUICachedControl minimized_width ("UIMinimizedWidth", 0); if (minimize == mMinimized) return; @@ -1082,7 +1108,8 @@ void LLFloater::setFocus( BOOL b ) void LLFloater::setRect(const LLRect &rect) { LLPanel::setRect(rect); - addDragHandle(); // re-add drag handle, sized based on rect + layoutDragHandle(); + layoutResizeCtrls(); } // virtual @@ -1389,9 +1416,9 @@ void LLFloater::onClickMinimize(LLFloater* self) void LLFloater::onClickTearOff(LLFloater* self) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); if (!self) return; + S32 floater_header_size = self->mHeaderHeight; LLMultiFloater* host_floater = self->getHost(); if (host_floater) //Tear off { @@ -1681,7 +1708,7 @@ void LLFloater::setCanTearOff(BOOL can_tear_off) void LLFloater::setCanResize(BOOL can_resize) { mResizable = can_resize; - addResizeCtrls(); + enableResizeCtrls(can_resize); } void LLFloater::setCanDrag(BOOL can_drag) @@ -2117,7 +2144,8 @@ void LLFloaterView::focusFrontFloater() void LLFloaterView::getMinimizePosition(S32 *left, S32 *bottom) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& default_params = LLFloater::getDefaultParams(); + S32 floater_header_size = default_params.header_height; static LLUICachedControl minimized_width ("UIMinimizedWidth", 0); S32 col = 0; LLRect snap_rect_local = getLocalSnapRect(); @@ -2551,6 +2579,8 @@ void LLFloater::initFromParams(const LLFloater::Params& p) mResizable = p.can_resize; mMinWidth = p.min_width; mMinHeight = p.min_height; + mHeaderHeight = p.header_height; + mLegacyHeaderHeight = p.legacy_header_height; mSingleInstance = p.single_instance; mAutoTile = p.auto_tile; @@ -2606,6 +2636,23 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o LLFloater::setFloaterHost(last_host); } + // HACK: When we changed the header height to 25 pixels in Viewer 2, rather + // than re-layout all the floaters we use this value in pixels to make the + // whole floater bigger and change the top-left coordinate for widgets. + // The goal is to eventually set mLegacyHeaderHeight to zero, which would + // make the top-left corner for widget layout the same as the top-left + // corner of the window's content area. James + S32 header_stretch = (mHeaderHeight - mLegacyHeaderHeight); + if (header_stretch > 0) + { + // Stretch the floater vertically, don't move widgets + LLRect rect = getRect(); + rect.mTop += header_stretch; + + // This will also update drag handle, title bar, close box, etc. + setRect(rect); + } + BOOL result; { LLFastTimer ft(POST_BUILD); diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 2fdaecf59a..afdc4ccf00 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -125,6 +125,8 @@ public: save_rect, save_visibility, can_dock; + Optional header_height, + legacy_header_height; // HACK see initFromXML() Optional open_callback, close_callback; @@ -209,6 +211,7 @@ public: bool isDragOnLeft() const{ return mDragOnLeft; } S32 getMinWidth() const{ return mMinWidth; } S32 getMinHeight() const{ return mMinHeight; } + S32 getHeaderHeight() const { return mHeaderHeight; } virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); virtual BOOL handleRightMouseDown(S32 x, S32 y, MASK mask); @@ -302,7 +305,10 @@ private: void buildButtons(); BOOL offerClickToButton(S32 x, S32 y, MASK mask, EFloaterButtons index); void addResizeCtrls(); + void layoutResizeCtrls(); + void enableResizeCtrls(bool enable); void addDragHandle(); + void layoutDragHandle(); // repair layout public: // Called when floater is opened, passes mKey @@ -340,6 +346,8 @@ private: S32 mMinWidth; S32 mMinHeight; + S32 mHeaderHeight; // height in pixels of header for title, drag bar + S32 mLegacyHeaderHeight;// HACK see initFloaterXML() BOOL mMinimized; BOOL mForeground; diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index cf013efca0..6e058e4c62 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -3435,7 +3435,7 @@ void LLMenuHolderGL::setActivatedItem(LLMenuItemGL* item) LLTearOffMenu::LLTearOffMenu(LLMenuGL* menup) : LLFloater(LLSD()) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + S32 floater_header_size = getHeaderHeight(); setName(menup->getName()); setTitle(menup->getLabel()); @@ -3479,7 +3479,6 @@ LLTearOffMenu::~LLTearOffMenu() void LLTearOffMenu::draw() { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); mMenu->setBackgroundVisible(isBackgroundOpaque()); mMenu->needsArrange(); diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index e8ce1a8d97..7d21c7e0c1 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -54,7 +54,8 @@ LLMultiFloater::LLMultiFloater(const LLSD& key, const LLFloater::Params& params) void LLMultiFloater::buildTabContainer() { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& default_params = LLFloater::getDefaultParams(); + S32 floater_header_size = default_params.header_height; LLTabContainer::Params p; p.name(std::string("Preview Tabs")); @@ -131,7 +132,8 @@ BOOL LLMultiFloater::closeAllFloaters() void LLMultiFloater::growToFit(S32 content_width, S32 content_height) { static LLUICachedControl tabcntr_close_btn_size ("UITabCntrCloseBtnSize", 0); - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& default_params = LLFloater::getDefaultParams(); + S32 floater_header_size = default_params.header_height; S32 tabcntr_header_height = LLPANEL_BORDER_WIDTH + tabcntr_close_btn_size; S32 new_width = llmax(getRect().getWidth(), content_width + LLPANEL_BORDER_WIDTH * 2); S32 new_height = llmax(getRect().getHeight(), content_height + floater_header_size + tabcntr_header_height); @@ -461,7 +463,8 @@ BOOL LLMultiFloater::postBuild() void LLMultiFloater::updateResizeLimits() { static LLUICachedControl tabcntr_close_btn_size ("UITabCntrCloseBtnSize", 0); - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& default_params = LLFloater::getDefaultParams(); + S32 floater_header_size = default_params.header_height; S32 tabcntr_header_height = LLPANEL_BORDER_WIDTH + tabcntr_close_btn_size; // initialize minimum size constraint to the original xml values. S32 new_min_width = mOrigMinWidth; diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 7219944fd7..5e6678131d 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8820,17 +8820,6 @@ Value 16 - UIFloaterHeaderSize - - Comment - UI floater header height in pixels - Persist - 1 - Type - S32 - Value - 25 - UIFloaterHPad Comment diff --git a/indra/newview/llfloatercamera.cpp b/indra/newview/llfloatercamera.cpp index dca0773139..d1317f7c36 100644 --- a/indra/newview/llfloatercamera.cpp +++ b/indra/newview/llfloatercamera.cpp @@ -268,8 +268,8 @@ void LLFloaterCamera::updateState() LLRect controls_rect; if (childGetRect(CONTROLS, controls_rect)) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); - static S32 height = controls_rect.getHeight() - floater_header_size; + S32 floater_header_size = getHeaderHeight(); + S32 height = controls_rect.getHeight() - floater_header_size; S32 newHeight = rect.getHeight(); if (showControls) diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp index 3598479305..bf484c6343 100644 --- a/indra/newview/llfloatergroupinvite.cpp +++ b/indra/newview/llfloatergroupinvite.cpp @@ -81,7 +81,7 @@ void LLFloaterGroupInvite::impl::closeFloater(void* data) LLFloaterGroupInvite::LLFloaterGroupInvite(const LLUUID& group_id) : LLFloater(group_id) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + S32 floater_header_size = getHeaderHeight(); LLRect contents; mImpl = new impl(group_id); @@ -114,7 +114,8 @@ LLFloaterGroupInvite::~LLFloaterGroupInvite() // static void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id, std::vector *agent_ids) { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& floater_params = LLFloater::getDefaultParams(); + S32 floater_header_size = floater_params.header_height; LLRect contents; // Make sure group_id isn't null diff --git a/indra/newview/llfloaternotificationsconsole.cpp b/indra/newview/llfloaternotificationsconsole.cpp index f2dff55044..f20fca1258 100644 --- a/indra/newview/llfloaternotificationsconsole.cpp +++ b/indra/newview/llfloaternotificationsconsole.cpp @@ -221,7 +221,8 @@ void LLFloaterNotificationConsole::removeChannel(const std::string& name) //static void LLFloaterNotificationConsole::updateResizeLimits() { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& floater_params = LLFloater::getDefaultParams(); + S32 floater_header_size = floater_params.header_height; LLLayoutStack& stack = getChildRef("notification_channels"); setResizeLimits(getMinWidth(), floater_header_size + HEADER_PADDING + ((NOTIFICATION_PANEL_HEADER_HEIGHT + 3) * stack.getNumPanels())); diff --git a/indra/newview/llfloateruipreview.cpp b/indra/newview/llfloateruipreview.cpp index ac743df4f1..2fe21f28de 100644 --- a/indra/newview/llfloateruipreview.cpp +++ b/indra/newview/llfloateruipreview.cpp @@ -865,7 +865,8 @@ void LLFloaterUIPreview::displayFloater(BOOL click, S32 ID, bool save) } else // if it is a panel... { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + const LLFloater::Params& floater_params = LLFloater::getDefaultParams(); + S32 floater_header_size = floater_params.header_height; LLPanel::Params panel_params; LLPanel* panel = LLUICtrlFactory::create(panel_params); // create a new panel diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp index b5aec1b80b..4940d9b5bb 100644 --- a/indra/newview/lltexturectrl.cpp +++ b/indra/newview/lltexturectrl.cpp @@ -458,7 +458,7 @@ BOOL LLFloaterTexturePicker::postBuild() // virtual void LLFloaterTexturePicker::draw() { - static LLUICachedControl floater_header_size ("UIFloaterHeaderSize", 0); + S32 floater_header_size = getHeaderHeight(); if (mOwner) { // draw cone of context pointing back to texture swatch diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 4f07d25b25..3d1cb84993 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -477,10 +477,10 @@ scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> - - - - + + diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png new file mode 100644 index 0000000000..a570ac06bd Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Window_NoTitle_Background.png differ diff --git a/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png new file mode 100644 index 0000000000..d573e8c69a Binary files /dev/null and b/indra/newview/skins/default/textures/windows/Window_NoTitle_Foreground.png differ diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 29fe046ed3..4e5c8c3747 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -3,6 +3,8 @@ follows="left|top|right" height="570" layout="topleft" + bg_opaque_image="Window_NoTitle_Foreground" + bg_alpha_image="Window_NoTitle_Background" name="toolbox floater" help_topic="toolbox_floater" save_rect="true" diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index ece6373166..82f6d44f78 100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml @@ -6,4 +6,6 @@ bg_opaque_image="Window_Foreground" bg_alpha_image="Window_Background" background_visible="true" - background_opaque="false"/> + background_opaque="false" + header_height="25" + legacy_header_height="18" /> -- cgit v1.2.3 From 8f8718546a4d9d9a6d70d292814edea889e20e27 Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 29 Oct 2009 15:37:45 -0700 Subject: Fixed some outlines being 1 pixel away from color swatches. Not reviewed. --- indra/newview/llfloatercolorpicker.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llfloatercolorpicker.cpp b/indra/newview/llfloatercolorpicker.cpp index 8e385fca78..73b79d8e13 100644 --- a/indra/newview/llfloatercolorpicker.cpp +++ b/indra/newview/llfloatercolorpicker.cpp @@ -561,7 +561,7 @@ void LLFloaterColorPicker::draw() // create rgb area outline gl_rect_2d ( mRGBViewerImageLeft, mRGBViewerImageTop - mRGBViewerImageHeight, - mRGBViewerImageLeft + mRGBViewerImageWidth, + mRGBViewerImageLeft + mRGBViewerImageWidth + 1, mRGBViewerImageTop, LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), FALSE ); @@ -591,7 +591,7 @@ void LLFloaterColorPicker::draw() // draw luminance slider outline gl_rect_2d ( mLumRegionLeft, mLumRegionTop - mLumRegionHeight, - mLumRegionLeft + mLumRegionWidth, + mLumRegionLeft + mLumRegionWidth + 1, mLumRegionTop, LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), FALSE ); @@ -607,7 +607,7 @@ void LLFloaterColorPicker::draw() // draw selected color swatch outline gl_rect_2d ( mSwatchRegionLeft, mSwatchRegionTop - mSwatchRegionHeight, - mSwatchRegionLeft + mSwatchRegionWidth, + mSwatchRegionLeft + mSwatchRegionWidth + 1, mSwatchRegionTop, LLColor4 ( 0.0f, 0.0f, 0.0f, 1.0f ), FALSE ); -- cgit v1.2.3 From f553f7fd157d5f72d640cfea9cf4e4a7cc8e636c Mon Sep 17 00:00:00 2001 From: James Cook Date: Thu, 29 Oct 2009 16:07:00 -0700 Subject: Fix signed/unsigned mismatch breaking the build. --- indra/newview/llagentwearables.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp index 89a7d8b91f..380469f5b3 100644 --- a/indra/newview/llagentwearables.cpp +++ b/indra/newview/llagentwearables.cpp @@ -1989,7 +1989,7 @@ void LLAgentWearables::animateAllWearableParams(F32 delta, BOOL set_by_user) { for( S32 type = 0; type < WT_COUNT; ++type ) { - for (S32 count = 0; count < (U32)getWearableCount((EWearableType)type); ++count) + for (S32 count = 0; count < (S32)getWearableCount((EWearableType)type); ++count) { LLWearable *wearable = getWearable((EWearableType)type,count); wearable->animateParams(delta, set_by_user); -- cgit v1.2.3 From 4d1a2ef2d1d521ccdf5150f76ef5ce7597aded28 Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Thu, 29 Oct 2009 16:09:27 -0700 Subject: Fix for DEV-41978 (media controls URL is incorrect after whitelist bounces webpage back). Added LLViewerMediaImpl::getCurrentMediaURL(), which reflects the most recent url either set with navigateTo or received from the plugin via locationChanged/navigateComplete. LLViewerMediaImpl now uses this when reload() is called. LLPanelPrimMediaControls now uses getCurrentMediaURL() to get the url it displays in the URL input bar and opens with the pop-out control. --- indra/newview/llpanelprimmediacontrols.cpp | 16 +++------------- indra/newview/llviewermedia.cpp | 19 ++++++++++++++++++- indra/newview/llviewermedia.h | 4 +++- 3 files changed, 24 insertions(+), 15 deletions(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index cbff13a20f..fb0b5dff1f 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -291,7 +291,7 @@ void LLPanelPrimMediaControls::updateShape() // Disable zoom if HUD zoom_ctrl->setEnabled(!objectp->isHUDAttachment()); secure_lock_icon->setVisible(false); - mCurrentURL = media_impl->getMediaURL(); + mCurrentURL = media_impl->getCurrentMediaURL(); back_ctrl->setEnabled((media_impl != NULL) && media_impl->canNavigateBack() && can_navigate); fwd_ctrl->setEnabled((media_impl != NULL) && media_impl->canNavigateForward() && can_navigate); @@ -758,20 +758,10 @@ void LLPanelPrimMediaControls::onClickHome() void LLPanelPrimMediaControls::onClickOpen() { - LLViewerMediaImpl* impl =getTargetMediaImpl(); + LLViewerMediaImpl* impl = getTargetMediaImpl(); if(impl) { - if(impl->getMediaPlugin()) - { - if(impl->getMediaPlugin()->getLocation().empty()) - { - LLWeb::loadURL(impl->getMediaURL()); - } - else - { - LLWeb::loadURL( impl->getMediaPlugin()->getLocation()); - } - } + LLWeb::loadURL(impl->getCurrentMediaURL()); } } diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 8bd74dcb04..20e9208a4e 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1023,6 +1023,16 @@ bool LLViewerMediaImpl::hasFocus() const return mHasFocus; } +std::string LLViewerMediaImpl::getCurrentMediaURL() +{ + if(!mCurrentMediaURL.empty()) + { + return mCurrentMediaURL; + } + + return mMediaURL; +} + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::mouseDown(S32 x, S32 y, MASK mask, S32 button) { @@ -1181,7 +1191,7 @@ void LLViewerMediaImpl::navigateForward() ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::navigateReload() { - navigateTo(mMediaURL, "", true, false); + navigateTo(getCurrentMediaURL(), "", true, false); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -1203,6 +1213,9 @@ void LLViewerMediaImpl::navigateTo(const std::string& url, const std::string& mi mMediaURL = url; mMimeType = mime_type; + // Clear the current media URL, since it will no longer be correct. + mCurrentMediaURL.clear(); + // if mime type discovery was requested, we'll need to do it when the media loads mNavigateRediscoverType = rediscover_type; @@ -1702,10 +1715,12 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla if(getNavState() == MEDIANAVSTATE_BEGUN) { + mCurrentMediaURL = plugin->getNavigateURI(); setNavState(MEDIANAVSTATE_COMPLETE_BEFORE_LOCATION_CHANGED); } else if(getNavState() == MEDIANAVSTATE_SERVER_BEGUN) { + mCurrentMediaURL = plugin->getNavigateURI(); setNavState(MEDIANAVSTATE_SERVER_COMPLETE_BEFORE_LOCATION_CHANGED); } else @@ -1721,10 +1736,12 @@ void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginCla if(getNavState() == MEDIANAVSTATE_BEGUN) { + mCurrentMediaURL = plugin->getLocation(); setNavState(MEDIANAVSTATE_FIRST_LOCATION_CHANGED); } else if(getNavState() == MEDIANAVSTATE_SERVER_BEGUN) { + mCurrentMediaURL = plugin->getLocation(); setNavState(MEDIANAVSTATE_SERVER_FIRST_LOCATION_CHANGED); } else diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 4f0d39dd80..76606be685 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -159,6 +159,7 @@ public: bool canNavigateForward(); bool canNavigateBack(); std::string getMediaURL() { return mMediaURL; } + std::string getCurrentMediaURL(); std::string getHomeURL() { return mHomeURL; } void setHomeURL(const std::string& home_url) { mHomeURL = home_url; }; std::string getMimeType() { return mMimeType; } @@ -272,9 +273,10 @@ public: LLPluginClassMedia* mMediaSource; LLUUID mTextureId; bool mMovieImageHasMips; - std::string mMediaURL; + std::string mMediaURL; // The last media url set with NavigateTo std::string mHomeURL; std::string mMimeType; + std::string mCurrentMediaURL; // The most current media url from the plugin (via the "location changed" or "navigate complete" events). S32 mLastMouseX; // save the last mouse coord we get, so when we lose capture we can simulate a mouseup at that point. S32 mLastMouseY; S32 mMediaWidth; -- cgit v1.2.3 From 8357fe51aa034d823ba2f7c0465f4f8f8065fc1a Mon Sep 17 00:00:00 2001 From: Monroe Linden Date: Thu, 29 Oct 2009 16:10:37 -0700 Subject: Added LLViewerMediaImpl::scrollWheel() to route scroll wheel events through the media impl. The horizontal scroll arrows in the media controls now send horizontal scrollwheel events instead of arrow keys. --- indra/newview/llpanelprimmediacontrols.cpp | 18 ++++++++++-------- indra/newview/llviewermedia.cpp | 12 ++++++++++++ indra/newview/llviewermedia.h | 1 + 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index fb0b5dff1f..5ed4464c2e 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -885,11 +885,11 @@ void LLPanelPrimMediaControls::onScrollUp(void* user_data) LLPanelPrimMediaControls* this_panel = static_cast (user_data); this_panel->focusOnTarget(); - LLPluginClassMedia* plugin = this_panel->getTargetMediaPlugin(); + LLViewerMediaImpl* impl = this_panel->getTargetMediaImpl(); - if(plugin) + if(impl) { - plugin->scrollEvent(0, -1, MASK_NONE); + impl->scrollWheel(0, -1, MASK_NONE); } } void LLPanelPrimMediaControls::onScrollUpHeld(void* user_data) @@ -906,7 +906,8 @@ void LLPanelPrimMediaControls::onScrollRight(void* user_data) if(impl) { - impl->handleKeyHere(KEY_RIGHT, MASK_NONE); + impl->scrollWheel(-1, 0, MASK_NONE); +// impl->handleKeyHere(KEY_RIGHT, MASK_NONE); } } void LLPanelPrimMediaControls::onScrollRightHeld(void* user_data) @@ -924,7 +925,8 @@ void LLPanelPrimMediaControls::onScrollLeft(void* user_data) if(impl) { - impl->handleKeyHere(KEY_LEFT, MASK_NONE); + impl->scrollWheel(1, 0, MASK_NONE); +// impl->handleKeyHere(KEY_LEFT, MASK_NONE); } } void LLPanelPrimMediaControls::onScrollLeftHeld(void* user_data) @@ -938,11 +940,11 @@ void LLPanelPrimMediaControls::onScrollDown(void* user_data) LLPanelPrimMediaControls* this_panel = static_cast (user_data); this_panel->focusOnTarget(); - LLPluginClassMedia* plugin = this_panel->getTargetMediaPlugin(); + LLViewerMediaImpl* impl = this_panel->getTargetMediaImpl(); - if(plugin) + if(impl) { - plugin->scrollEvent(0, 1, MASK_NONE); + impl->scrollWheel(0, 1, MASK_NONE); } } void LLPanelPrimMediaControls::onScrollDownHeld(void* user_data) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 20e9208a4e..e2d9f5a2c9 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1118,6 +1118,18 @@ void LLViewerMediaImpl::mouseDoubleClick(S32 x, S32 y, MASK mask, S32 button) } } +////////////////////////////////////////////////////////////////////////////////////////// +void LLViewerMediaImpl::scrollWheel(S32 x, S32 y, MASK mask) +{ + scaleMouse(&x, &y); + mLastMouseX = x; + mLastMouseY = y; + if (mMediaSource) + { + mMediaSource->scrollEvent(x, y, mask); + } +} + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::onMouseCaptureLost() { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 76606be685..5444abf854 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -145,6 +145,7 @@ public: void mouseUp(const LLVector2& texture_coords, MASK mask, S32 button = 0); void mouseMove(const LLVector2& texture_coords, MASK mask); void mouseDoubleClick(S32 x,S32 y, MASK mask, S32 button = 0); + void scrollWheel(S32 x, S32 y, MASK mask); void mouseCapture(); void navigateBack(); -- cgit v1.2.3 From b4bd34bd73b2be74afd08785c88b66b2fadd5bfc Mon Sep 17 00:00:00 2001 From: callum Date: Thu, 29 Oct 2009 16:49:29 -0700 Subject: Implementation for DEV-40710 - adds name of media stream to floater tools dialog. Currently, this means tag for Web page or movie meta-data name for QuickTime move. --- indra/newview/llfloatertools.cpp | 85 +++++++++++++++++++--- indra/newview/llfloatertools.h | 6 ++ .../newview/skins/default/xui/en/floater_tools.xml | 15 +++- 3 files changed, 95 insertions(+), 11 deletions(-) diff --git a/indra/newview/llfloatertools.cpp b/indra/newview/llfloatertools.cpp index 3bec6f9e73..5fee84190b 100644 --- a/indra/newview/llfloatertools.cpp +++ b/indra/newview/llfloatertools.cpp @@ -49,6 +49,7 @@ #include "llfloaterreg.h" #include "llfocusmgr.h" #include "llmediaentry.h" +#include "llmediactrl.h" #include "llmenugl.h" #include "llpanelcontents.h" #include "llpanelface.h" @@ -221,6 +222,7 @@ BOOL LLFloaterTools::postBuild() mRadioGroupMove = getChild<LLRadioGroup>("move_radio_group"); mRadioGroupEdit = getChild<LLRadioGroup>("edit_radio_group"); mBtnGridOptions = getChild<LLButton>("Options..."); + mTitleMedia = getChild<LLMediaCtrl>("title_media"); mCheckSelectIndividual = getChild<LLCheckBoxCtrl>("checkbox edit linked parts"); childSetValue("checkbox edit linked parts",(BOOL)gSavedSettings.getBOOL("EditLinkedParts")); @@ -304,6 +306,7 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mCheckSnapToGrid(NULL), mBtnGridOptions(NULL), + mTitleMedia(NULL), mTextGridMode(NULL), mComboGridMode(NULL), mCheckStretchUniform(NULL), @@ -335,7 +338,8 @@ LLFloaterTools::LLFloaterTools(const LLSD& key) mPanelLandInfo(NULL), mTabLand(NULL), - mDirty(TRUE) + mDirty(TRUE), + mNeedMediaTitle(TRUE) { gFloaterTools = this; @@ -440,6 +444,9 @@ void LLFloaterTools::draw() mDirty = FALSE; } + // grab media name/title and update the UI widget + updateMediaTitle(); + // mCheckSelectIndividual->set(gSavedSettings.getBOOL("EditLinkedParts")); LLFloater::draw(); } @@ -736,6 +743,10 @@ void LLFloaterTools::onClose(bool app_quitting) LLViewerJoystick::getInstance()->moveAvatar(false); + // destroy media source used to grab media title + if( mTitleMedia ) + mTitleMedia->unloadMediaSource(); + // Different from handle_reset_view in that it doesn't actually // move the camera if EditCameraMovement is not set. gAgent.resetView(gSavedSettings.getBOOL("EditCameraMovement")); @@ -1108,6 +1119,7 @@ void LLFloaterTools::getMediaState() std::string multi_media_info_str = LLTrans::getString("Multiple Media"); std::string media_title = ""; + mNeedMediaTitle = false; // update UI depending on whether "object" (prim or face) has media // and whether or not you are allowed to edit it. @@ -1123,18 +1135,19 @@ void LLFloaterTools::getMediaState() // Media data is valid if(media_data_get!=default_media_data) { - //TODO: get media title - //media_title = media_data_get->getTitle(); - //LLFloaterMediaSettings::getInstance()->mIdenticalValidMedia = true; + // initial media title is the media URL (until we get the name) media_title = media_data_get.getHomeURL(); + + // kick off a navigate and flag that we need to update the title + navigateToTitleMedia( media_data_get.getHomeURL() ); + mNeedMediaTitle = true; } // else all faces might be empty. - - } else // there' re Different Medias' been set on on the faces. { media_title = multi_media_info_str; + mNeedMediaTitle = false; } childSetEnabled("media_tex", bool_has_media & editable); @@ -1152,17 +1165,20 @@ void LLFloaterTools::getMediaState() if(LLFloaterMediaSettings::getInstance()->mMultipleValidMedia) { media_title = multi_media_info_str; + mNeedMediaTitle = false; } else { // Media data is valid if(media_data_get!=default_media_data) { - //TODO: get media title - //media_title = media_data_get->getTitle(); + // initial media title is the media URL (until we get the name) media_title = media_data_get.getHomeURL(); + + // kick off a navigate and flag that we need to update the title + navigateToTitleMedia( media_data_get.getHomeURL() ); + mNeedMediaTitle = true; } - } media_info->setEnabled(false); @@ -1253,12 +1269,63 @@ bool LLFloaterTools::deleteMediaConfirm(const LLSD& notification, const LLSD& re return false; } +////////////////////////////////////////////////////////////////////////////// +// void LLFloaterTools::clearMediaSettings() { LLFloaterMediaSettings::getInstance(); LLFloaterMediaSettings::clearValues(false); } + +////////////////////////////////////////////////////////////////////////////// +// +void LLFloaterTools::navigateToTitleMedia( const std::string url ) +{ + if ( mTitleMedia ) + { + LLPluginClassMedia* media_plugin = mTitleMedia->getMediaPlugin(); + if ( media_plugin ) + { + // if it's a movie, we don't want to hear it + media_plugin->setVolume( 0 ); + }; + mTitleMedia->navigateTo( url ); + }; +} + +////////////////////////////////////////////////////////////////////////////// +// +void LLFloaterTools::updateMediaTitle() +{ + // only get the media name if we need it + if ( ! mNeedMediaTitle ) + return; + + // get plugin impl + LLPluginClassMedia* media_plugin = mTitleMedia->getMediaPlugin(); + if ( media_plugin ) + { + // get the media name (asynchronous - must call repeatedly) + std::string media_title = media_plugin->getMediaName(); + + // only replace the title if what we get contains something + if ( ! media_title.empty() ) + { + // update the UI widget + LLLineEditor* media_title_field = getChild<LLLineEditor>("media_info"); + if ( media_title_field ) + { + media_title_field->setText( media_title ); + + // stop looking for a title when we get one + // FIXME: check this is the right approach + mNeedMediaTitle = false; + }; + }; + }; +} + ////////////////////////////////////////////////////////////////////////////// // void LLFloaterTools::updateMediaSettings() diff --git a/indra/newview/llfloatertools.h b/indra/newview/llfloatertools.h index 59acef6071..a3e0cac034 100644 --- a/indra/newview/llfloatertools.h +++ b/indra/newview/llfloatertools.h @@ -51,6 +51,7 @@ class LLRadioGroup; class LLSlider; class LLTabContainer; class LLTextBox; +class LLMediaCtrl; class LLTool; class LLParcelSelection; class LLObjectSelection; @@ -107,6 +108,8 @@ public: void onClickBtnAddMedia(); void onClickBtnEditMedia(); void clearMediaSettings(); + void updateMediaTitle(); + void navigateToTitleMedia( const std::string url ); bool selectedMediaEditable(); private: @@ -182,6 +185,9 @@ public: LLParcelSelectionHandle mParcelSelection; LLObjectSelectionHandle mObjectSelection; + LLMediaCtrl *mTitleMedia; + bool mNeedMediaTitle; + private: BOOL mDirty; diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 29fe046ed3..acf7f57d0b 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -2735,8 +2735,19 @@ <button.commit_callback function="BuildTool.EditMedia"/> </button> - - <button + <web_browser + visible="false" + enabled="false" + border_visible="true" + bottom_delta="0" + follows="top|left" + left="0" + name="title_media" + width="4" + height="4" + start_url="about:blank" + decouple_texture_size="true" /> + <button follows="left|top" font="SansSerifSmall" height="19" -- cgit v1.2.3 From c953385351187ad1ef9fa50af268a1a211bb7c6a Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 16:59:34 -0700 Subject: Missed the "hold the button down" case when converting horizontal scroller to use horizontal mousewheel events. --- indra/newview/llpanelprimmediacontrols.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 5ed4464c2e..21bfeed1d6 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -472,7 +472,7 @@ void LLPanelPrimMediaControls::updateShape() } } - if(media_plugin) + if(media_impl) { // // Handle Scrolling @@ -480,16 +480,18 @@ void LLPanelPrimMediaControls::updateShape() switch (mScrollState) { case SCROLL_UP: - media_plugin->scrollEvent(0, -1, MASK_NONE); + media_impl->scrollWheel(0, -1, MASK_NONE); break; case SCROLL_DOWN: - media_plugin->scrollEvent(0, 1, MASK_NONE); + media_impl->scrollWheel(0, 1, MASK_NONE); break; case SCROLL_LEFT: - media_impl->handleKeyHere(KEY_LEFT, MASK_NONE); + media_impl->scrollWheel(1, 0, MASK_NONE); +// media_impl->handleKeyHere(KEY_LEFT, MASK_NONE); break; case SCROLL_RIGHT: - media_impl->handleKeyHere(KEY_RIGHT, MASK_NONE); + media_impl->scrollWheel(-1, 0, MASK_NONE); +// media_impl->handleKeyHere(KEY_RIGHT, MASK_NONE); break; case SCROLL_NONE: default: -- cgit v1.2.3 From 5c4ec60c966bd1857fb195f73d2d09117b783f9a Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 17:04:42 -0700 Subject: Fix a copy-paste error in LLPanelPrimMediaControls::postBuild(). --- indra/newview/llpanelprimmediacontrols.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 21bfeed1d6..4c552ee815 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -127,7 +127,7 @@ BOOL LLPanelPrimMediaControls::postBuild() scroll_left_ctrl->setMouseUpCallback(onScrollStop, this); LLButton* scroll_right_ctrl = getChild<LLButton>("scrollright"); scroll_right_ctrl->setClickedCallback(onScrollRight, this); - scroll_right_ctrl->setHeldDownCallback(onScrollLeftHeld, this); + scroll_right_ctrl->setHeldDownCallback(onScrollRightHeld, this); scroll_right_ctrl->setMouseUpCallback(onScrollStop, this); LLButton* scroll_down_ctrl = getChild<LLButton>("scrolldown"); scroll_down_ctrl->setClickedCallback(onScrollDown, this); -- cgit v1.2.3 From c3b2f98012a32c0f241b814a27113e756961778c Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Fri, 30 Oct 2009 08:11:56 +0800 Subject: media inspector https icon --- indra/llui/llmenubutton.cpp | 2 + indra/newview/lltoolpie.cpp | 2 +- .../skins/default/xui/en/inspect_object.xml | 54 ++++++++++++++-------- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp index 8dbcd6e229..a657ed039a 100644 --- a/indra/llui/llmenubutton.cpp +++ b/indra/llui/llmenubutton.cpp @@ -85,6 +85,8 @@ void LLMenuButton::toggleMenu() void LLMenuButton::hideMenu() { + if(!mMenu) + return; mMenu->setVisible(FALSE); } diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 42ecfa8cde..2ba4d97674 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -779,7 +779,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) LLToolTipMgr::instance().show(LLToolTip::Params() .message(tooltip_msg) .image(LLUI::getUIImage("Info_Off")) - .click_callback(boost::bind(showObjectInspector, hover_object->getID())) + .click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)) .time_based_media(is_time_based_media) .media_playing(is_media_playing) .click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)) diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index 73a7bef77d..454c738a50 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -70,7 +70,7 @@ owner James Linden width="150"> L$300,000 </text> - <text + <text follows="all" height="30" left="8" @@ -84,23 +84,23 @@ This is a really long description for an object being as how it is at least 80 c <!-- Overlapping buttons for all default actions. Show "Buy" if for sale, "Sit" if can sit, etc. --> <button - follows="top|left" - font="SansSerif" - height="23" - label="Buy" - left="10" - name="buy_btn" - top="114" - width="100" /> + follows="top|left" + font="SansSerif" + height="20" + label="Buy" + left="10" + name="buy_btn" + top="114" + width="75" /> <button follows="top|left" font="SansSerif" - height="23" + height="20" label="Pay" left_delta="0" name="pay_btn" top_delta="0" - width="100" /> + width="75" /> <button follows="top|left" font="SansSerif" @@ -109,16 +109,16 @@ This is a really long description for an object being as how it is at least 80 c left_delta="0" name="take_free_copy_btn" top_delta="0" - width="100" /> + width="75" /> <button follows="top|left" font="SansSerifSmall" - height="23" + height="20" label="Touch" left_delta="0" name="touch_btn" top_delta="0" - width="100" /> + width="75" /> <button follows="top|left" font="SansSerif" @@ -127,17 +127,35 @@ This is a really long description for an object being as how it is at least 80 c left_delta="0" name="sit_btn" top_delta="0" - width="100" /> + width="75" /> <button follows="top|left" font="SansSerifSmall" - height="23" + height="20" label="Open" left_delta="0" name="open_btn" top_delta="0" - width="100" /> - <!-- non-overlapping buttons here --> + width="75" /> + <icon + name="secure_icon" + image_name="map_infohub.tga" + left_delta="80" + width="16" + height="16" + top_delta="0" + follows="left|top"/> + <!-- <text + follows="left|top" + height="30" + left_delta="20" + name="object_media_url" + top_pad="-20" + width="150" + use_ellipses="true" + word_wrap="true"> + + non-overlapping buttons here --> <menu_button follows="top|left" height="18" -- cgit v1.2.3 From 7f8b63025399978c0921c6bc459df3605c8d86ef Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Thu, 29 Oct 2009 17:49:38 -0700 Subject: Fix unposted bug: make sure to use the right slider control --- indra/newview/llpanelprimmediacontrols.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index cbff13a20f..2822abe1f5 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -258,7 +258,8 @@ void LLPanelPrimMediaControls::updateShape() LLUICtrl* zoom_ctrl = getChild<LLUICtrl>("zoom_frame"); LLPanel* media_loading_panel = getChild<LLPanel>("media_progress_indicator"); LLUICtrl* media_address_ctrl = getChild<LLUICtrl>("media_address"); - LLUICtrl* media_play_slider_ctrl = getChild<LLUICtrl>("media_play_position"); + LLUICtrl* media_play_slider_panel = getChild<LLUICtrl>("media_play_position"); + LLUICtrl* media_play_slider_ctrl = getChild<LLUICtrl>("media_play_slider"); LLUICtrl* volume_ctrl = getChild<LLUICtrl>("media_volume"); LLButton* volume_btn = getChild<LLButton>("media_volume_button"); LLUICtrl* volume_up_ctrl = getChild<LLUICtrl>("volume_up"); @@ -282,7 +283,7 @@ void LLPanelPrimMediaControls::updateShape() close_ctrl->setVisible(has_focus); open_ctrl->setVisible(true); media_address_ctrl->setVisible(has_focus && !mini_controls); - media_play_slider_ctrl->setVisible(has_focus && !mini_controls); + media_play_slider_panel->setVisible(has_focus && !mini_controls); volume_ctrl->setVisible(false); volume_up_ctrl->setVisible(false); volume_down_ctrl->setVisible(false); @@ -309,8 +310,8 @@ void LLPanelPrimMediaControls::updateShape() fwd_ctrl->setEnabled(has_focus); media_address_ctrl->setVisible(false); media_address_ctrl->setEnabled(false); - media_play_slider_ctrl->setVisible(!mini_controls); - media_play_slider_ctrl->setEnabled(!mini_controls); + media_play_slider_panel->setVisible(!mini_controls); + media_play_slider_panel->setEnabled(!mini_controls); volume_ctrl->setVisible(has_focus); volume_up_ctrl->setVisible(has_focus); @@ -406,8 +407,8 @@ void LLPanelPrimMediaControls::updateShape() media_stop_ctrl->setVisible(FALSE); media_address_ctrl->setVisible(has_focus && !mini_controls); media_address_ctrl->setEnabled(has_focus && !mini_controls); - media_play_slider_ctrl->setVisible(FALSE); - media_play_slider_ctrl->setEnabled(FALSE); + media_play_slider_panel->setVisible(FALSE); + media_play_slider_panel->setEnabled(FALSE); volume_ctrl->setVisible(FALSE); volume_up_ctrl->setVisible(FALSE); -- cgit v1.2.3 From 98a9de0687a498bf8088b2e229ee90bc1763ad56 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Thu, 29 Oct 2009 18:14:19 -0700 Subject: Groups profile floatercramming --- .../skins/default/xui/en/panel_group_general.xml | 111 +++++-------- .../default/xui/en/panel_group_info_sidetray.xml | 182 ++++++++++++++------- .../skins/default/xui/en/panel_group_roles.xml | 108 +++++------- 3 files changed, 203 insertions(+), 198 deletions(-) diff --git a/indra/newview/skins/default/xui/en/panel_group_general.xml b/indra/newview/skins/default/xui/en/panel_group_general.xml index 9bd240eccc..a85c55f9b2 100644 --- a/indra/newview/skins/default/xui/en/panel_group_general.xml +++ b/indra/newview/skins/default/xui/en/panel_group_general.xml @@ -1,15 +1,14 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - border="true" follows="all" - height="445" + height="412" label="General" class="panel_group_general" layout="topleft" - left="1" + left="0" + top="0" name="general_tab" - top="500" - width="280"> + width="313"> <panel.string name="help_text"> The General tab contains general information about this group, a list of members, general Group Preferences and member options. @@ -18,7 +17,7 @@ Hover your mouse over the options for more help. </panel.string> <panel.string name="group_info_unchanged"> - General group information has changed. + General group information has changed </panel.string> <panel.string name="incomplete_member_data_str"> @@ -28,42 +27,28 @@ Hover your mouse over the options for more help. type="string" follows="left|top" left="5" - height="75" + height="60" layout="topleft" max_length="511" name="charter" top="5" - width="260" + width="303" word_wrap="true"> - Group Charter + Group Charter </text_editor> - <text - follows="left|top" - type="string" - font="SansSerifBig" - tool_tip="Owners are shown in bold." - height="16" - layout="topleft" - left="5" - name="text_owners_and_visible_members" - text_color="EmphasisColor" - top_pad="10" - width="270"> - Members - </text> <name_list column_padding="0" draw_heading="true" follows="left|top" - heading_height="14" - height="80" + heading_height="16" + height="160" layout="topleft" left_delta="0" name="visible_members" top_pad="0" - width="263"> + width="303"> <name_list.columns - label="Member Name" + label="Member" name="name" relative_width="0.6" /> <name_list.columns @@ -71,27 +56,16 @@ Hover your mouse over the options for more help. name="title" relative_width="0.4" /> </name_list> - <text - follows="left|top" - height="16" - type="string" - text_color="EmphasisColor" - top_pad="10" - font="SansSerifBig" - layout="topleft" - name="text_group_preferences"> - Group Preferences - </text> <text follows="left|top" type="string" - height="16" + height="14" layout="topleft" left_delta="0" name="active_title_label" - top_pad="8" - width="240"> - My Active Title + top_pad="5" + width="303"> + My Title </text> <combo_box follows="left|top" @@ -100,58 +74,58 @@ Hover your mouse over the options for more help. left_delta="0" name="active_title" tool_tip="Sets the title that appears in your avatar's name tag when this group is active." - top_pad="0" - width="240" /> + top_pad="2" + width="303" /> <check_box height="16" font="SansSerifSmall" label="Receive notices" layout="topleft" - left_delta="0" + left="5" name="receive_notices" tool_tip="Sets whether you want to receive Notices from this group. Uncheck this box if this group is spamming you." top_pad="5" - width="240" /> + width="303" /> <check_box height="16" label="Show in my profile" layout="topleft" - left_delta="0" + left="5" name="list_groups_in_profile" tool_tip="Sets whether you want to show this group in your profile" top_pad="5" - width="240" /> + width="303" /> <panel background_visible="true" bevel_style="in" border="true" bg_alpha_color="FloaterUnfocusBorderColor" follows="left|top" - height="125" + height="93" layout="topleft" - left_delta="0" + left="5" name="preferences_container" - top_pad="10" - width="263"> + top_pad="5" + width="303"> <check_box follows="right|top" height="16" label="Open enrollment" layout="topleft" - left_delta="0" + left="10" name="open_enrollement" tool_tip="Sets whether this group allows new members to join without being invited." top_pad="5" width="90" /> <check_box height="16" - label="Enrollment fee:" + label="Enrollment fee" layout="topleft" left_delta="0" name="check_enrollment_fee" tool_tip="Sets whether to require an enrollment fee to join the group" top_pad="5" - width="90" /> + width="300" /> <spinner decimal_digits="0" follows="left|top" @@ -161,43 +135,38 @@ Hover your mouse over the options for more help. label_width="20" label="L$" layout="topleft" - left="25" + right="-10" max_val="99999" - top_pad="5" + left_pad="2" name="spin_enrollment_fee" tool_tip="New members must pay this fee to join the group when Enrollment Fee is checked." - top_delta="-2" width="105" /> <check_box height="16" initial_value="true" label="Show in search" layout="topleft" - left="4" + left="10" name="show_in_group_list" tool_tip="Let people see this group in search results" top_pad="4" - width="90" /> + width="300" /> <combo_box height="20" layout="topleft" left_delta="0" name="group_mature_check" tool_tip="Sets whether your group information is considered mature" - top_pad="10" - width="240"> - <combo_box.item - label="- Select Mature -" - name="select_mature" - value="Select" /> - <combo_box.item - label="Mature Content" - name="mature" - value="Mature" /> + top_pad="5" + width="190"> <combo_box.item label="PG Content" name="pg" value="Not Mature" /> - </combo_box> + <combo_box.item + label="Mature Content" + name="mature" + value="Mature" /> + </combo_box> </panel> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml index da6cf8891a..d8d47c4008 100644 --- a/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml +++ b/indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml @@ -1,20 +1,22 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> - <panel - follows="left|top|right|bottom" - height="660" - label="Group Info" - layout="topleft" - name="panel_group_info" - border="false" - width="300"> +background_visible="true" + follows="all" + height="570" + label="Group Info" + layout="topleft" + min_height="350" + left="0" + top="20" + name="GroupInfo" + width="333"> <panel.string name="default_needs_apply_text"> - There are unapplied changes on the current tab. + There are unsaved changes to the current tab </panel.string> <panel.string name="want_apply_text"> - Do you want to apply these changes? + Do you want to save these changes? </panel.string> <panel.string name="group_join_btn"> @@ -25,34 +27,34 @@ Free </panel.string> <button - layout="topleft" - name="back" - right="-9" - top="0" - width="25" - height="25" - label="" follows="top|right" + height="23" image_overlay="BackArrow_Off" - tab_stop="false" /> - <text layout="topleft" - top="0" + name="back" + picture_style="true" left="10" - width="250" - height="20" + tab_stop="false" + top="2" + width="23" /> + <text + follows="top|left|right" font="SansSerifHugeBold" + height="26" + layout="topleft" + left_pad="10" + name="group_name" text_color="white" - follows="top|left|right" - mouse_opaque="true" - use_ellipses="true" - name="group_name">(Loading...)</text> + top="0" + value="(Loading...)" + use_elipsis="true" + width="300" /> <line_editor follows="left|top" font="SansSerif" label="Type your new group name here" layout="topleft" - left_delta="0" + left_delta="10" max_length="35" name="group_name_editor" top_delta="5" @@ -64,7 +66,7 @@ height="113" label="" layout="topleft" - left="10" + left="20" name="insignia" tool_tip="Click to choose a picture" top_pad="5" @@ -79,7 +81,7 @@ name="prepend_founded_by" top_delta="0" width="140"> - Founded by: + Founder: </text> <name_box follows="left|top" @@ -88,10 +90,12 @@ layout="topleft" left_delta="0" name="founder_name" - top_pad="10" + top_pad="2" use_ellipses="true" width="140" /> <text + font="SansSerifBig" + text_color="EmphasisColor" type="string" follows="left|top" height="16" @@ -106,22 +110,84 @@ <button follows="left|top" left_delta="0" - top_pad="10" - height="20" + top_pad="6" + height="23" label="Join now!" label_selected="Join now!" name="btn_join" visible="true" - width="85" /> - <button - top="632" - height="20" - font="SansSerifSmall" - label="Save" - label_selected="Save" - name="btn_apply" - left="5" - width="65" /> + width="120" /> + <accordion + follows="all" + height="405" + layout="topleft" + left="0" + name="groups_accordion" + top_pad="20" + width="333"> + <accordion_tab + can_resize="false" + layout="topleft" + name="tab_general" + title="General"> + <panel + border="false" + filename="panel_group_general.xml" + layout="topleft" + left="0" + help_topic="group_general_tab" + name="general_tab" + top="0" + width="333" /> + </accordion_tab> + <accordion_tab + can_resize="false" + expanded="false" + layout="topleft" + name="tab_roles" + title="Roles"> + <panel + border="false" + filename="panel_group_roles.xml" + layout="topleft" + left="0" + help_topic="group_roles_tab" + name="roles_tab" + top="0" + width="333" /> + </accordion_tab> + <accordion_tab + can_resize="false" + expanded="false" + layout="topleft" + name="tab_notices" + title="Notices"> + <panel + filename="panel_group_notices.xml" + layout="topleft" + left="0" + help_topic="group_notices_tab" + name="notices_tab" + top="0" + width="333" /> + </accordion_tab> + <accordion_tab + can_resize="false" + expanded="false" + layout="topleft" + name="tab_notices" + title="Land/Assets"> + <panel + border="false" + filename="panel_group_land_money.xml" + layout="topleft" + left="0" + help_topic="group_land_money_tab" + name="land_money_tab" + top="0" + width="333" /> + </accordion_tab> + </accordion> <button follows="top|left" height="20" @@ -129,41 +195,31 @@ layout="topleft" name="btn_refresh" picture_style="true" - top="632" - left="75" + left="5" width="20" /> + <button + height="20" + font="SansSerifSmall" + label="Save" + label_selected="Save" + name="btn_apply" + left_pad="5" + width="65" /> <button - top="632" height="20" label="Create" label_selected="Create" name="btn_create" - left="5" + left_pad="5" visible="false" width="65" /> <button - top="632" - left="75" + left_pad="5" height="20" label="Cancel" label_selected="Cancel" name="btn_cancel" visible="false" width="65" /> - <accordion layout="topleft" left="2" width="296" top="135" height="500" follows="all" name="group_accordion"> - <accordion_tab min_height="445" title="General" name="group_general_tab"> - <panel class="panel_group_general" filename="panel_group_general.xml" name="group_general_tab_panel"/> - </accordion_tab> - <accordion_tab min_height="380" title="Members & Roles" name="group_roles_tab" expanded="False" can_resize="false"> - <panel class="panel_group_roles" filename="panel_group_roles.xml" name="group_roles_tab_panel"/> - </accordion_tab> - <accordion_tab min_height="530" title="Notices" name="group_notices_tab" expanded="False" can_resize="false"> - <panel class="panel_group_notices" filename="panel_group_notices.xml" name="group_notices_tab_panel"/> - </accordion_tab> - <accordion_tab min_height="270" title="Land & L$" name="group_land_tab" expanded="False" can_resize="false"> - <panel class="panel_group_land_money" filename="panel_group_land_money.xml" name="group_land_tab_panel"/> - </accordion_tab> - </accordion> - </panel> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index af1919bd8f..e2e4ca8b8f 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -1,20 +1,20 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <panel - border="true" - height="490" + border="false" + height="412" label="Members & Roles" layout="topleft" - left="1" + left="0" + top="0" name="roles_tab" - top="490" - width="280"> + width="313"> <panel.string name="default_needs_apply_text"> - There are unapplied changes on the current sub-tab. + There are unsaved changes to the current tab </panel.string> <panel.string name="want_apply_text"> - Do you want to apply these changes? + Do you want to save these changes? </panel.string> <panel.string name="help_text" /> @@ -160,17 +160,19 @@ </text> </panel> --> <tab_container + border="true" follows="left|top" - height="180" + height="260" layout="topleft" left="5" name="roles_tab_container" tab_position="top" - top="10" - width="265"> + tab_height="20" + top="0" + width="303"> <panel - border="true" - height="165" + border="false" + height="260" label="Members" layout="topleft" left="1" @@ -179,7 +181,7 @@ tool_tip="Members" top="17" class="panel_group_members_subtab" - width="265"> + width="300"> <panel.string name="help_text"> You can add or remove Roles assigned to Members. @@ -190,77 +192,56 @@ clicking on their names. layout="topleft" top="10" left="4" - width="255" + width="280" height="20" follows="left|top|right" max_length="250" label="Filter Members" name="filter_input" font="SansSerif" /> - <!--<line_editor - border_style="line" - border_thickness="1" - follows="left|top" - height="16" - layout="topleft" - left="4" - max_length="63" - name="search_text" - top="10" - width="90" /> - <button - font="SansSerifSmall" - height="20" - label="Search" - layout="topleft" - left_pad="5" - name="search_button" - top_delta="-2" - width="80" /> - <button + <!-- <button enabled="false" font="SansSerifSmall" height="20" label="Show All" layout="topleft" - left_pad="0" + left_pad="-90" name="show_all_button" - top_delta="0" - width="80" /> --> + top_delta="-6" + width="80" />--> <name_list column_padding="0" draw_heading="true" - heading_height="14" - height="100" + heading_height="20" + height="160" follows="left|top" layout="topleft" - left="4" + left="0" multi_select="true" name="member_list" - top_pad="6" - width="255"> + top_pad="2" + width="300"> <name_list.columns label="Member" name="name" - width="90" /> + relative_width="0.45" /> <name_list.columns label="Donations" name="donated" - width="95" /> + relative_width="0.3" /> <name_list.columns label="Online" name="online" - width="80" /> + relative_width="0.2" /> </name_list> <button height="20" font="SansSerifSmall" label="Invite" layout="topleft" - left_delta="0" name="member_invite" - top_pad="6" - width="125" /> + top_pad="3" + width="100" /> <button height="20" font="SansSerifSmall" @@ -268,18 +249,17 @@ clicking on their names. layout="topleft" left_pad="5" name="member_eject" - top_delta="0" - width="125" /> + width="100" /> <icon height="16" - image_name="inv_folder_plain_closed.tga" + image_name="Inv_FolderClosed" layout="topleft" name="power_folder_icon" visible="false" width="16" /> </panel> <panel - border="true" + border="false" height="164" label="Roles" layout="topleft" @@ -292,7 +272,7 @@ clicking on their names. <panel.string name="help_text"> Roles have a title and an allowed list of Abilities -that Members can perform. Members can belong to +that Members can perform. Members can belong to one or more Roles. A group can have up to 10 Roles, including the Everyone and Owner Roles. </panel.string> @@ -302,7 +282,7 @@ including the Everyone and Owner Roles. </panel.string> <panel.string name="power_folder_icon"> - inv_folder_plain_closed.tga + Inv_FolderClosed </panel.string> <panel.string name="power_all_have_icon"> @@ -316,7 +296,7 @@ including the Everyone and Owner Roles. layout="topleft" top="10" left="4" - width="255" + width="260" height="20" follows="left|top|right" max_length="250" @@ -357,13 +337,13 @@ including the Everyone and Owner Roles. column_padding="0" draw_heading="true" follows="left|top" - heading_height="14" - height="100" + heading_height="20" + height="150" layout="topleft" left="4" name="role_list" top_pad="4" - width="255"> + width="300"> <scroll_list.columns label="Role" name="name" @@ -397,7 +377,7 @@ including the Everyone and Owner Roles. width="125" /> </panel> <panel - border="true" + border="false" height="164" label="Abilities" layout="topleft" @@ -407,7 +387,7 @@ including the Everyone and Owner Roles. class="panel_group_actions_subtab" top="17" tool_tip="You can view an Ability's Description and which Roles and Members can execute the Ability." - width="265"> + width="300"> <panel.string name="help_text"> Abilities allow Members in Roles to do specific @@ -486,13 +466,13 @@ things in this group. There's a broad variety of Abilities. </panel> </tab_container> <panel - height="190" + height="150" layout="topleft" follows="left|top" left="10" name="members_footer" - top_pad="10" - width="265"> + top_pad="2" + width="300"> <text type="string" font="SansSerif" -- cgit v1.2.3 From 96b1f821c02f5111fc7486ad99e2e3b49f7befb0 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 17:14:03 -0700 Subject: Made LLViewerMediaFocus::handleScrollWheel() grab the current keyboard modifiers. --- indra/newview/llviewermediafocus.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 5d0b77d4fb..c32b3523b3 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -48,6 +48,8 @@ #include "llviewerparcelmgr.h" #include "llweb.h" #include "llmediaentry.h" +#include "llkeyboard.h" + // // LLViewerMediaFocus // @@ -298,8 +300,9 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks) // the scrollEvent() API's x and y are not the same as handleScrollWheel's x and y. // The latter is the position of the mouse at the time of the event // The former is the 'scroll amount' in x and y, respectively. - // All we have for 'scroll amount' here is 'clicks', and no mask. - media_impl->getMediaPlugin()->scrollEvent(0, clicks, /*mask*/0); + // All we have for 'scroll amount' here is 'clicks'. + // We're also not passed the keyboard modifier mask, but we can get that from gKeyboard. + media_impl->getMediaPlugin()->scrollEvent(0, clicks, gKeyboard->currentMask(TRUE)); retval = TRUE; } return retval; -- cgit v1.2.3 From dc9d17a2573a619b3ba6a5bb81af27a022e371b4 Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Thu, 29 Oct 2009 17:16:33 -0700 Subject: Made explicit in all floaters that we are using a hack to set the top widget position, took it out of master floater.xml file. legacy_header_height is documented in LLFloater::initFromParams(). Discussed with Richard. --- indra/newview/skins/default/xui/en/floater_aaa.xml | 1 + indra/newview/skins/default/xui/en/floater_about.xml | 1 + indra/newview/skins/default/xui/en/floater_about_land.xml | 1 + indra/newview/skins/default/xui/en/floater_activeim.xml | 1 + indra/newview/skins/default/xui/en/floater_animation_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_auction.xml | 1 + indra/newview/skins/default/xui/en/floater_avatar_picker.xml | 1 + indra/newview/skins/default/xui/en/floater_avatar_textures.xml | 1 + indra/newview/skins/default/xui/en/floater_beacons.xml | 1 + indra/newview/skins/default/xui/en/floater_build_options.xml | 1 + indra/newview/skins/default/xui/en/floater_bulk_perms.xml | 1 + indra/newview/skins/default/xui/en/floater_bumps.xml | 1 + indra/newview/skins/default/xui/en/floater_buy_contents.xml | 1 + indra/newview/skins/default/xui/en/floater_buy_currency.xml | 1 + indra/newview/skins/default/xui/en/floater_buy_land.xml | 1 + indra/newview/skins/default/xui/en/floater_buy_object.xml | 1 + indra/newview/skins/default/xui/en/floater_camera.xml | 1 + indra/newview/skins/default/xui/en/floater_choose_group.xml | 1 + indra/newview/skins/default/xui/en/floater_color_picker.xml | 1 + indra/newview/skins/default/xui/en/floater_critical.xml | 1 + indra/newview/skins/default/xui/en/floater_customize.xml | 1 + indra/newview/skins/default/xui/en/floater_day_cycle_options.xml | 1 + indra/newview/skins/default/xui/en/floater_device_settings.xml | 1 + indra/newview/skins/default/xui/en/floater_env_settings.xml | 1 + indra/newview/skins/default/xui/en/floater_first_time_tip.xml | 1 + indra/newview/skins/default/xui/en/floater_font_test.xml | 1 + indra/newview/skins/default/xui/en/floater_gesture.xml | 1 + indra/newview/skins/default/xui/en/floater_god_tools.xml | 1 + indra/newview/skins/default/xui/en/floater_hardware_settings.xml | 1 + indra/newview/skins/default/xui/en/floater_help_browser.xml | 1 + indra/newview/skins/default/xui/en/floater_hud.xml | 1 + indra/newview/skins/default/xui/en/floater_im_session.xml | 1 + indra/newview/skins/default/xui/en/floater_image_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_incoming_call.xml | 1 + indra/newview/skins/default/xui/en/floater_inspect.xml | 1 + indra/newview/skins/default/xui/en/floater_inventory.xml | 1 + .../newview/skins/default/xui/en/floater_inventory_item_properties.xml | 1 + indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml | 1 + indra/newview/skins/default/xui/en/floater_joystick.xml | 1 + indra/newview/skins/default/xui/en/floater_lagmeter.xml | 1 + indra/newview/skins/default/xui/en/floater_land_holdings.xml | 1 + indra/newview/skins/default/xui/en/floater_live_lsleditor.xml | 1 + indra/newview/skins/default/xui/en/floater_lsl_guide.xml | 1 + indra/newview/skins/default/xui/en/floater_map.xml | 1 + indra/newview/skins/default/xui/en/floater_media_browser.xml | 1 + indra/newview/skins/default/xui/en/floater_media_settings.xml | 3 ++- indra/newview/skins/default/xui/en/floater_mem_leaking.xml | 1 + indra/newview/skins/default/xui/en/floater_moveview.xml | 1 + indra/newview/skins/default/xui/en/floater_mute_object.xml | 1 + indra/newview/skins/default/xui/en/floater_my_friends.xml | 1 + indra/newview/skins/default/xui/en/floater_nearby_chat.xml | 3 ++- indra/newview/skins/default/xui/en/floater_notification.xml | 1 + indra/newview/skins/default/xui/en/floater_notifications_console.xml | 1 + indra/newview/skins/default/xui/en/floater_openobject.xml | 1 + indra/newview/skins/default/xui/en/floater_pay.xml | 1 + indra/newview/skins/default/xui/en/floater_pay_object.xml | 1 + indra/newview/skins/default/xui/en/floater_perm_prefs.xml | 1 + indra/newview/skins/default/xui/en/floater_post_process.xml | 1 + indra/newview/skins/default/xui/en/floater_postcard.xml | 1 + indra/newview/skins/default/xui/en/floater_preferences.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_animation.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_classified.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_event.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_gesture.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml | 1 + .../newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_notecard.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_sound.xml | 1 + indra/newview/skins/default/xui/en/floater_preview_texture.xml | 1 + indra/newview/skins/default/xui/en/floater_region_info.xml | 1 + indra/newview/skins/default/xui/en/floater_report_abuse.xml | 1 + indra/newview/skins/default/xui/en/floater_script_debug_panel.xml | 1 + indra/newview/skins/default/xui/en/floater_script_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_script_queue.xml | 1 + indra/newview/skins/default/xui/en/floater_script_search.xml | 1 + indra/newview/skins/default/xui/en/floater_search.xml | 1 + indra/newview/skins/default/xui/en/floater_select_key.xml | 1 + indra/newview/skins/default/xui/en/floater_sell_land.xml | 1 + indra/newview/skins/default/xui/en/floater_settings_debug.xml | 1 + indra/newview/skins/default/xui/en/floater_snapshot.xml | 1 + indra/newview/skins/default/xui/en/floater_sound_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_statistics.xml | 1 + indra/newview/skins/default/xui/en/floater_stats.xml | 1 + indra/newview/skins/default/xui/en/floater_sys_well.xml | 3 ++- indra/newview/skins/default/xui/en/floater_telehub.xml | 1 + indra/newview/skins/default/xui/en/floater_test_button.xml | 1 + indra/newview/skins/default/xui/en/floater_test_checkbox.xml | 1 + indra/newview/skins/default/xui/en/floater_test_combobox.xml | 1 + indra/newview/skins/default/xui/en/floater_test_inspectors.xml | 1 + indra/newview/skins/default/xui/en/floater_test_layout.xml | 1 + indra/newview/skins/default/xui/en/floater_test_line_editor.xml | 1 + indra/newview/skins/default/xui/en/floater_test_list_view.xml | 1 + indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml | 1 + indra/newview/skins/default/xui/en/floater_test_radiogroup.xml | 1 + indra/newview/skins/default/xui/en/floater_test_slider.xml | 1 + indra/newview/skins/default/xui/en/floater_test_spinner.xml | 1 + indra/newview/skins/default/xui/en/floater_test_textbox.xml | 1 + indra/newview/skins/default/xui/en/floater_test_widgets.xml | 1 + indra/newview/skins/default/xui/en/floater_texture_ctrl.xml | 1 + indra/newview/skins/default/xui/en/floater_tools.xml | 1 + indra/newview/skins/default/xui/en/floater_top_objects.xml | 1 + indra/newview/skins/default/xui/en/floater_tos.xml | 1 + indra/newview/skins/default/xui/en/floater_ui_preview.xml | 1 + indra/newview/skins/default/xui/en/floater_url_entry.xml | 1 + indra/newview/skins/default/xui/en/floater_water.xml | 1 + indra/newview/skins/default/xui/en/floater_wearable_save_as.xml | 1 + indra/newview/skins/default/xui/en/floater_whitelist_entry.xml | 1 + indra/newview/skins/default/xui/en/floater_windlight_options.xml | 1 + indra/newview/skins/default/xui/en/floater_world_map.xml | 1 + indra/newview/skins/default/xui/en/inspect_avatar.xml | 1 + indra/newview/skins/default/xui/en/inspect_group.xml | 1 + indra/newview/skins/default/xui/en/inspect_object.xml | 1 + indra/newview/skins/default/xui/en/panel_toast.xml | 1 + indra/newview/skins/default/xui/en/widgets/floater.xml | 3 +-- 115 files changed, 118 insertions(+), 5 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_aaa.xml b/indra/newview/skins/default/xui/en/floater_aaa.xml index 6d64d13db7..3789369e74 100644 --- a/indra/newview/skins/default/xui/en/floater_aaa.xml +++ b/indra/newview/skins/default/xui/en/floater_aaa.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="440" layout="topleft" name="floater_aaa" diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 5cd11ba292..02c6ed1b20 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="440" layout="topleft" name="floater_about" 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 aa0b4094b4..c245f877c7 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_tear_off="false" height="420" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_activeim.xml b/indra/newview/skins/default/xui/en/floater_activeim.xml index f81250e7b9..1bc9cde044 100644 --- a/indra/newview/skins/default/xui/en/floater_activeim.xml +++ b/indra/newview/skins/default/xui/en/floater_activeim.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" name="floater_activeim" help_topic="floater_activeim" title="ACTIVE IM" diff --git a/indra/newview/skins/default/xui/en/floater_animation_preview.xml b/indra/newview/skins/default/xui/en/floater_animation_preview.xml index 11773c34dc..ab3d5722f0 100644 --- a/indra/newview/skins/default/xui/en/floater_animation_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_animation_preview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="556" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml index fb0994b4cd..aae6508041 100644 --- a/indra/newview/skins/default/xui/en/floater_auction.xml +++ b/indra/newview/skins/default/xui/en/floater_auction.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="412" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml index 0542d4509e..d20566b08a 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_picker.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="350" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml index e677426ee5..4f2a36e518 100644 --- a/indra/newview/skins/default/xui/en/floater_avatar_textures.xml +++ b/indra/newview/skins/default/xui/en/floater_avatar_textures.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="950" layout="topleft" name="avatar_texture_debug" diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml index a60064fb37..1c83799e72 100644 --- a/indra/newview/skins/default/xui/en/floater_beacons.xml +++ b/indra/newview/skins/default/xui/en/floater_beacons.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="225" layout="topleft" name="beacons" diff --git a/indra/newview/skins/default/xui/en/floater_build_options.xml b/indra/newview/skins/default/xui/en/floater_build_options.xml index 3e6845cfa5..bddbbdd3b2 100644 --- a/indra/newview/skins/default/xui/en/floater_build_options.xml +++ b/indra/newview/skins/default/xui/en/floater_build_options.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" follows="right" height="170" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml index ef6af28786..02958bee74 100644 --- a/indra/newview/skins/default/xui/en/floater_bulk_perms.xml +++ b/indra/newview/skins/default/xui/en/floater_bulk_perms.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_tear_off="false" height="310" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_bumps.xml b/indra/newview/skins/default/xui/en/floater_bumps.xml index d1f6706875..2917096f3c 100644 --- a/indra/newview/skins/default/xui/en/floater_bumps.xml +++ b/indra/newview/skins/default/xui/en/floater_bumps.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="180" layout="topleft" name="floater_bumps" diff --git a/indra/newview/skins/default/xui/en/floater_buy_contents.xml b/indra/newview/skins/default/xui/en/floater_buy_contents.xml index 718f83c9a2..aacc3ad8d0 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_contents.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_contents.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="290" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 9b0b56d9cf..26d5d4bedf 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <floater + legacy_header_height="18" can_minimize="false" height="275" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_buy_land.xml b/indra/newview/skins/default/xui/en/floater_buy_land.xml index 6d1c2c1cb9..8314549132 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_land.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="484" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_buy_object.xml b/indra/newview/skins/default/xui/en/floater_buy_object.xml index 7930622e54..49ea3f5dd1 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_object.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_object.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="290" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index a713cc32a0..1b69418013 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_dock="true" can_minimize="false" can_close="true" diff --git a/indra/newview/skins/default/xui/en/floater_choose_group.xml b/indra/newview/skins/default/xui/en/floater_choose_group.xml index 371e239fdb..8b34fda96c 100644 --- a/indra/newview/skins/default/xui/en/floater_choose_group.xml +++ b/indra/newview/skins/default/xui/en/floater_choose_group.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="258" layout="topleft" name="groups" diff --git a/indra/newview/skins/default/xui/en/floater_color_picker.xml b/indra/newview/skins/default/xui/en/floater_color_picker.xml index f2146339a7..686b8dc40f 100644 --- a/indra/newview/skins/default/xui/en/floater_color_picker.xml +++ b/indra/newview/skins/default/xui/en/floater_color_picker.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="380" diff --git a/indra/newview/skins/default/xui/en/floater_critical.xml b/indra/newview/skins/default/xui/en/floater_critical.xml index 5475a1cf6a..7b5451553f 100644 --- a/indra/newview/skins/default/xui/en/floater_critical.xml +++ b/indra/newview/skins/default/xui/en/floater_critical.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_close="false" can_minimize="false" height="500" diff --git a/indra/newview/skins/default/xui/en/floater_customize.xml b/indra/newview/skins/default/xui/en/floater_customize.xml index 57f5800f2c..07d76f4810 100644 --- a/indra/newview/skins/default/xui/en/floater_customize.xml +++ b/indra/newview/skins/default/xui/en/floater_customize.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="540" 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 b044cd41e6..b8fa104352 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 @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="275" layout="topleft" name="Day Cycle Floater" diff --git a/indra/newview/skins/default/xui/en/floater_device_settings.xml b/indra/newview/skins/default/xui/en/floater_device_settings.xml index 8901608374..2b23980423 100644 --- a/indra/newview/skins/default/xui/en/floater_device_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_device_settings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="260" layout="topleft" name="floater_device_settings" 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 cecd6c4ef7..7c22311f66 100644 --- a/indra/newview/skins/default/xui/en/floater_env_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_env_settings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="150" layout="topleft" name="Environment Editor Floater" diff --git a/indra/newview/skins/default/xui/en/floater_first_time_tip.xml b/indra/newview/skins/default/xui/en/floater_first_time_tip.xml index 4975111111..e4ac8fed77 100644 --- a/indra/newview/skins/default/xui/en/floater_first_time_tip.xml +++ b/indra/newview/skins/default/xui/en/floater_first_time_tip.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_close="true" can_minimize="false" height="250" diff --git a/indra/newview/skins/default/xui/en/floater_font_test.xml b/indra/newview/skins/default/xui/en/floater_font_test.xml index 66c207603b..8b14f691d6 100644 --- a/indra/newview/skins/default/xui/en/floater_font_test.xml +++ b/indra/newview/skins/default/xui/en/floater_font_test.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="800" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_gesture.xml b/indra/newview/skins/default/xui/en/floater_gesture.xml index 7346c81e79..128d518e12 100644 --- a/indra/newview/skins/default/xui/en/floater_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_gesture.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="465" name="gestures" diff --git a/indra/newview/skins/default/xui/en/floater_god_tools.xml b/indra/newview/skins/default/xui/en/floater_god_tools.xml index 02754b25dd..97cb6e259c 100644 --- a/indra/newview/skins/default/xui/en/floater_god_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_god_tools.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="384" layout="topleft" name="godtools floater" diff --git a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml index d47c726aa9..cd98f21918 100644 --- a/indra/newview/skins/default/xui/en/floater_hardware_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_hardware_settings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="224" layout="topleft" name="Hardware Settings Floater" diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml index 512b4c85a1..d2fe8d0e6d 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_hud.xml b/indra/newview/skins/default/xui/en/floater_hud.xml index 23e0ef50fd..6e8950c49a 100644 --- a/indra/newview/skins/default/xui/en/floater_hud.xml +++ b/indra/newview/skins/default/xui/en/floater_hud.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="292" layout="topleft" 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 0037c6ef04..d9c3ff77d9 100644 --- a/indra/newview/skins/default/xui/en/floater_im_session.xml +++ b/indra/newview/skins/default/xui/en/floater_im_session.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" background_visible="true" follows="left|top|right|bottom" height="250" diff --git a/indra/newview/skins/default/xui/en/floater_image_preview.xml b/indra/newview/skins/default/xui/en/floater_image_preview.xml index 4e4fe97e62..2562daf4b3 100644 --- a/indra/newview/skins/default/xui/en/floater_image_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_image_preview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="440" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_incoming_call.xml b/indra/newview/skins/default/xui/en/floater_incoming_call.xml index 95e4247a05..dcb93c6e2f 100644 --- a/indra/newview/skins/default/xui/en/floater_incoming_call.xml +++ b/indra/newview/skins/default/xui/en/floater_incoming_call.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_close="false" can_minimize="false" can_tear_off="false" diff --git a/indra/newview/skins/default/xui/en/floater_inspect.xml b/indra/newview/skins/default/xui/en/floater_inspect.xml index 339604e658..9f7723c51b 100644 --- a/indra/newview/skins/default/xui/en/floater_inspect.xml +++ b/indra/newview/skins/default/xui/en/floater_inspect.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="300" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml index 0f06558dd1..2011635790 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_resize="true" height="563" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml index e3e2decef7..4f0609c7f8 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_item_properties.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="340" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml index 6556a14730..0042f97a8e 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory_view_finder.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="408" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_joystick.xml b/indra/newview/skins/default/xui/en/floater_joystick.xml index c0bcfd2271..e2da059ace 100644 --- a/indra/newview/skins/default/xui/en/floater_joystick.xml +++ b/indra/newview/skins/default/xui/en/floater_joystick.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="500" layout="topleft" name="Joystick" diff --git a/indra/newview/skins/default/xui/en/floater_lagmeter.xml b/indra/newview/skins/default/xui/en/floater_lagmeter.xml index 2966b47232..d98fdc5118 100644 --- a/indra/newview/skins/default/xui/en/floater_lagmeter.xml +++ b/indra/newview/skins/default/xui/en/floater_lagmeter.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="150" layout="topleft" name="floater_lagmeter" diff --git a/indra/newview/skins/default/xui/en/floater_land_holdings.xml b/indra/newview/skins/default/xui/en/floater_land_holdings.xml index dbafa56035..46d74b6aff 100644 --- a/indra/newview/skins/default/xui/en/floater_land_holdings.xml +++ b/indra/newview/skins/default/xui/en/floater_land_holdings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="400" layout="topleft" name="land holdings floater" diff --git a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml index dc6c8302a0..93bbb0107e 100644 --- a/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml +++ b/indra/newview/skins/default/xui/en/floater_live_lsleditor.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" bevel_style="none" border_style="line" can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml index fd2ee6ce5c..4dcf168605 100644 --- a/indra/newview/skins/default/xui/en/floater_lsl_guide.xml +++ b/indra/newview/skins/default/xui/en/floater_lsl_guide.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" follows="left|top" height="400" diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index a2b2e1ddf3..7b4c5f38a1 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" follows="top|right" height="225" diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml index ad2c50c6d9..b11892be74 100644 --- a/indra/newview/skins/default/xui/en/floater_media_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="440" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_media_settings.xml b/indra/newview/skins/default/xui/en/floater_media_settings.xml index b96573b32a..4218c15408 100644 --- a/indra/newview/skins/default/xui/en/floater_media_settings.xml +++ b/indra/newview/skins/default/xui/en/floater_media_settings.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater +<floater + legacy_header_height="18" bottom="-666" can_close="true" can_drag_on_left="false" diff --git a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml index bd83da02aa..560acafd4f 100644 --- a/indra/newview/skins/default/xui/en/floater_mem_leaking.xml +++ b/indra/newview/skins/default/xui/en/floater_mem_leaking.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="175" diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 745385f153..01a1b95a9a 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_dock="true" can_close="true" can_minimize="true" diff --git a/indra/newview/skins/default/xui/en/floater_mute_object.xml b/indra/newview/skins/default/xui/en/floater_mute_object.xml index 06a03ff340..33b1dac8a5 100644 --- a/indra/newview/skins/default/xui/en/floater_mute_object.xml +++ b/indra/newview/skins/default/xui/en/floater_mute_object.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="130" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_my_friends.xml b/indra/newview/skins/default/xui/en/floater_my_friends.xml index 0ca4fc825a..689221b9c7 100644 --- a/indra/newview/skins/default/xui/en/floater_my_friends.xml +++ b/indra/newview/skins/default/xui/en/floater_my_friends.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_close="false" can_resize="true" height="390" 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 d24d1b7064..65dd4e74ff 100644 --- a/indra/newview/skins/default/xui/en/floater_nearby_chat.xml +++ b/indra/newview/skins/default/xui/en/floater_nearby_chat.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater +<floater + legacy_header_height="18" can_minimize="true" can_tear_off="false" can_resize="false" diff --git a/indra/newview/skins/default/xui/en/floater_notification.xml b/indra/newview/skins/default/xui/en/floater_notification.xml index cd88ec2f3f..f9cb22055a 100644 --- a/indra/newview/skins/default/xui/en/floater_notification.xml +++ b/indra/newview/skins/default/xui/en/floater_notification.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="200" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_notifications_console.xml b/indra/newview/skins/default/xui/en/floater_notifications_console.xml index 3783417cdb..03a2aad96d 100644 --- a/indra/newview/skins/default/xui/en/floater_notifications_console.xml +++ b/indra/newview/skins/default/xui/en/floater_notifications_console.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="500" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_openobject.xml b/indra/newview/skins/default/xui/en/floater_openobject.xml index 17f7e9bf67..cc50f43339 100644 --- a/indra/newview/skins/default/xui/en/floater_openobject.xml +++ b/indra/newview/skins/default/xui/en/floater_openobject.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" default_tab_group="1" height="350" diff --git a/indra/newview/skins/default/xui/en/floater_pay.xml b/indra/newview/skins/default/xui/en/floater_pay.xml index 69525d48d2..b4becfa022 100644 --- a/indra/newview/skins/default/xui/en/floater_pay.xml +++ b/indra/newview/skins/default/xui/en/floater_pay.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="185" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_pay_object.xml b/indra/newview/skins/default/xui/en/floater_pay_object.xml index acff55386b..8d230023cc 100644 --- a/indra/newview/skins/default/xui/en/floater_pay_object.xml +++ b/indra/newview/skins/default/xui/en/floater_pay_object.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="220" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml index f65bb6f32f..eb0c22b9c4 100644 --- a/indra/newview/skins/default/xui/en/floater_perm_prefs.xml +++ b/indra/newview/skins/default/xui/en/floater_perm_prefs.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="180" layout="topleft" name="perm prefs" diff --git a/indra/newview/skins/default/xui/en/floater_post_process.xml b/indra/newview/skins/default/xui/en/floater_post_process.xml index 571f4149f0..46554beede 100644 --- a/indra/newview/skins/default/xui/en/floater_post_process.xml +++ b/indra/newview/skins/default/xui/en/floater_post_process.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="400" layout="topleft" name="Post-Process Floater" diff --git a/indra/newview/skins/default/xui/en/floater_postcard.xml b/indra/newview/skins/default/xui/en/floater_postcard.xml index d93cad6dbd..b13bd1740c 100644 --- a/indra/newview/skins/default/xui/en/floater_postcard.xml +++ b/indra/newview/skins/default/xui/en/floater_postcard.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_minimize="false" can_resize="true" diff --git a/indra/newview/skins/default/xui/en/floater_preferences.xml b/indra/newview/skins/default/xui/en/floater_preferences.xml index 90a77b22b6..d2a2a7ce02 100644 --- a/indra/newview/skins/default/xui/en/floater_preferences.xml +++ b/indra/newview/skins/default/xui/en/floater_preferences.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" center_horiz="true" center_vert="true" default_tab_group="1" diff --git a/indra/newview/skins/default/xui/en/floater_preview_animation.xml b/indra/newview/skins/default/xui/en/floater_preview_animation.xml index e34b87dbba..3b84358484 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_animation.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_animation.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="85" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_preview_classified.xml b/indra/newview/skins/default/xui/en/floater_preview_classified.xml index 07167c3ae4..7c8c6d7207 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_classified.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_classified.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="510" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_preview_event.xml b/indra/newview/skins/default/xui/en/floater_preview_event.xml index 77fbe7c060..f5ab8c95d7 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_event.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_event.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="510" layout="topleft" 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 11c4e5d8fb..4f3978a5e3 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="460" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml index 43e4f8a348..fc838f27b4 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture_info.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="155" diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml index 606ae1a82a..b489ae2e77 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture_shortcut.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="90" diff --git a/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml b/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml index 4b4f611b59..8a07f3ad1e 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_gesture_steps.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="155" diff --git a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml index d2b8455eab..3797055054 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_notecard.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_notecard.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_resize="true" default_tab_group="1" diff --git a/indra/newview/skins/default/xui/en/floater_preview_sound.xml b/indra/newview/skins/default/xui/en/floater_preview_sound.xml index 7a868a1fe9..95347f0dff 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_sound.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_sound.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" height="85" layout="topleft" 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 32f71da61a..e7abfb075a 100644 --- a/indra/newview/skins/default/xui/en/floater_preview_texture.xml +++ b/indra/newview/skins/default/xui/en/floater_preview_texture.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_resize="true" follows="left|bottom" diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml index 3fadc15616..ae01d0bdf4 100644 --- a/indra/newview/skins/default/xui/en/floater_region_info.xml +++ b/indra/newview/skins/default/xui/en/floater_region_info.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="512" help_topic="regioninfo" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_report_abuse.xml b/indra/newview/skins/default/xui/en/floater_report_abuse.xml index 884532c7a3..88f09b521c 100644 --- a/indra/newview/skins/default/xui/en/floater_report_abuse.xml +++ b/indra/newview/skins/default/xui/en/floater_report_abuse.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="580" layout="topleft" name="floater_report_abuse" diff --git a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml index 2085b74a55..0029fcb09b 100644 --- a/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml +++ b/indra/newview/skins/default/xui/en/floater_script_debug_panel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" follows="left|top|right|bottom" height="200" diff --git a/indra/newview/skins/default/xui/en/floater_script_preview.xml b/indra/newview/skins/default/xui/en/floater_script_preview.xml index a415239867..c29a2f4516 100644 --- a/indra/newview/skins/default/xui/en/floater_script_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_script_preview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_resize="true" height="550" diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml index 467dcfae20..8a44252426 100644 --- a/indra/newview/skins/default/xui/en/floater_script_queue.xml +++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" auto_tile="true" can_resize="true" height="400" diff --git a/indra/newview/skins/default/xui/en/floater_script_search.xml b/indra/newview/skins/default/xui/en/floater_script_search.xml index 545abc39a2..79c4438dd6 100644 --- a/indra/newview/skins/default/xui/en/floater_script_search.xml +++ b/indra/newview/skins/default/xui/en/floater_script_search.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" default_tab_group="1" height="120" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 296cde92e3..2f4d7c50a1 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_select_key.xml b/indra/newview/skins/default/xui/en/floater_select_key.xml index b89af0ef3e..31d133ff9b 100644 --- a/indra/newview/skins/default/xui/en/floater_select_key.xml +++ b/indra/newview/skins/default/xui/en/floater_select_key.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" border="true" can_close="false" can_minimize="false" 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 652ed96192..8fedd0a89f 100644 --- a/indra/newview/skins/default/xui/en/floater_sell_land.xml +++ b/indra/newview/skins/default/xui/en/floater_sell_land.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="450" layout="topleft" 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 b7779687ec..02b3cee97c 100644 --- a/indra/newview/skins/default/xui/en/floater_settings_debug.xml +++ b/indra/newview/skins/default/xui/en/floater_settings_debug.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="215" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_snapshot.xml b/indra/newview/skins/default/xui/en/floater_snapshot.xml index 551f570b52..4f2be37ade 100644 --- a/indra/newview/skins/default/xui/en/floater_snapshot.xml +++ b/indra/newview/skins/default/xui/en/floater_snapshot.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" follows="left|top" height="526" diff --git a/indra/newview/skins/default/xui/en/floater_sound_preview.xml b/indra/newview/skins/default/xui/en/floater_sound_preview.xml index 3b1eae9293..6145b722f1 100644 --- a/indra/newview/skins/default/xui/en/floater_sound_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_preview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="190" layout="topleft" name="Sound Preview" diff --git a/indra/newview/skins/default/xui/en/floater_statistics.xml b/indra/newview/skins/default/xui/en/floater_statistics.xml index 653bc942e5..ab783b0735 100644 --- a/indra/newview/skins/default/xui/en/floater_statistics.xml +++ b/indra/newview/skins/default/xui/en/floater_statistics.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" follows="right|top" height="392" diff --git a/indra/newview/skins/default/xui/en/floater_stats.xml b/indra/newview/skins/default/xui/en/floater_stats.xml index 205e6efe70..bdc2874281 100644 --- a/indra/newview/skins/default/xui/en/floater_stats.xml +++ b/indra/newview/skins/default/xui/en/floater_stats.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" follows="top|right" height="400" diff --git a/indra/newview/skins/default/xui/en/floater_sys_well.xml b/indra/newview/skins/default/xui/en/floater_sys_well.xml index aef5707fd4..e1f07a49e7 100644 --- a/indra/newview/skins/default/xui/en/floater_sys_well.xml +++ b/indra/newview/skins/default/xui/en/floater_sys_well.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<floater +<floater + legacy_header_height="18" bevel_style="in" left="0" top="0" diff --git a/indra/newview/skins/default/xui/en/floater_telehub.xml b/indra/newview/skins/default/xui/en/floater_telehub.xml index 95de27e0ea..faf1a378f2 100644 --- a/indra/newview/skins/default/xui/en/floater_telehub.xml +++ b/indra/newview/skins/default/xui/en/floater_telehub.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="250" layout="topleft" name="telehub" diff --git a/indra/newview/skins/default/xui/en/floater_test_button.xml b/indra/newview/skins/default/xui/en/floater_test_button.xml index ce17873a67..89a1ddda99 100644 --- a/indra/newview/skins/default/xui/en/floater_test_button.xml +++ b/indra/newview/skins/default/xui/en/floater_test_button.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="500" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml index 66a5b9267d..9977e85a9d 100644 --- a/indra/newview/skins/default/xui/en/floater_test_checkbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_checkbox.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_combobox.xml b/indra/newview/skins/default/xui/en/floater_test_combobox.xml index 956d5669b8..317d8f5ba8 100644 --- a/indra/newview/skins/default/xui/en/floater_test_combobox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_combobox.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml index ce20b03919..c954607ffe 100644 --- a/indra/newview/skins/default/xui/en/floater_test_inspectors.xml +++ b/indra/newview/skins/default/xui/en/floater_test_inspectors.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="false" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_layout.xml b/indra/newview/skins/default/xui/en/floater_test_layout.xml index 209859bb29..c6acb7c96e 100644 --- a/indra/newview/skins/default/xui/en/floater_test_layout.xml +++ b/indra/newview/skins/default/xui/en/floater_test_layout.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="500" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml index 251ca4c9bf..e017d404c6 100644 --- a/indra/newview/skins/default/xui/en/floater_test_line_editor.xml +++ b/indra/newview/skins/default/xui/en/floater_test_line_editor.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_list_view.xml b/indra/newview/skins/default/xui/en/floater_test_list_view.xml index 98d6d5bda7..1d2086d9bc 100644 --- a/indra/newview/skins/default/xui/en/floater_test_list_view.xml +++ b/indra/newview/skins/default/xui/en/floater_test_list_view.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml index dd551b6d51..c6b4cca6b9 100644 --- a/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml +++ b/indra/newview/skins/default/xui/en/floater_test_navigation_bar.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="200" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml index 35190c0e1a..7ef2d97cdc 100644 --- a/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml +++ b/indra/newview/skins/default/xui/en/floater_test_radiogroup.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_slider.xml b/indra/newview/skins/default/xui/en/floater_test_slider.xml index 3545f88df7..57d8e686ce 100644 --- a/indra/newview/skins/default/xui/en/floater_test_slider.xml +++ b/indra/newview/skins/default/xui/en/floater_test_slider.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_spinner.xml b/indra/newview/skins/default/xui/en/floater_test_spinner.xml index c4e5bc9e99..3c44a4884d 100644 --- a/indra/newview/skins/default/xui/en/floater_test_spinner.xml +++ b/indra/newview/skins/default/xui/en/floater_test_spinner.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_test_textbox.xml b/indra/newview/skins/default/xui/en/floater_test_textbox.xml index c33ab8aa70..f39d27761c 100644 --- a/indra/newview/skins/default/xui/en/floater_test_textbox.xml +++ b/indra/newview/skins/default/xui/en/floater_test_textbox.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="400" layout="topleft" 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 cc0fc34dd5..12d7e18762 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -15,6 +15,7 @@ Otherwise specify location with left and top attributes. --> <floater + legacy_header_height="18" can_dock="true" can_resize="true" title="Test Floater" diff --git a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml index f2b701b88d..0a1f6e0e29 100644 --- a/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml +++ b/indra/newview/skins/default/xui/en/floater_texture_ctrl.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" can_resize="true" height="290" diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index 4e5c8c3747..4d5654071e 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" follows="left|top|right" height="570" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_top_objects.xml b/indra/newview/skins/default/xui/en/floater_top_objects.xml index 07ffc204f9..2f53422d51 100644 --- a/indra/newview/skins/default/xui/en/floater_top_objects.xml +++ b/indra/newview/skins/default/xui/en/floater_top_objects.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="350" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_tos.xml b/indra/newview/skins/default/xui/en/floater_tos.xml index 54facbb659..4e2cce1428 100644 --- a/indra/newview/skins/default/xui/en/floater_tos.xml +++ b/indra/newview/skins/default/xui/en/floater_tos.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_close="false" can_minimize="false" height="500" diff --git a/indra/newview/skins/default/xui/en/floater_ui_preview.xml b/indra/newview/skins/default/xui/en/floater_ui_preview.xml index acd770cd38..380e51977f 100644 --- a/indra/newview/skins/default/xui/en/floater_ui_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_ui_preview.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" height="640" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_url_entry.xml b/indra/newview/skins/default/xui/en/floater_url_entry.xml index 6c1fb65bdd..1ab42cb140 100644 --- a/indra/newview/skins/default/xui/en/floater_url_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_url_entry.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="87" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml index a860b1038c..9c55e8ea16 100644 --- a/indra/newview/skins/default/xui/en/floater_water.xml +++ b/indra/newview/skins/default/xui/en/floater_water.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="240" layout="topleft" name="Water Floater" diff --git a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml index ee67989d33..9a95e3dfef 100644 --- a/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml +++ b/indra/newview/skins/default/xui/en/floater_wearable_save_as.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" border="true" can_close="false" can_minimize="false" diff --git a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml index 4f501b65f3..ef68d03a45 100644 --- a/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml +++ b/indra/newview/skins/default/xui/en/floater_whitelist_entry.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_minimize="false" height="108" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml index 2b3bc5f11a..0ea769921f 100644 --- a/indra/newview/skins/default/xui/en/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/en/floater_windlight_options.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" height="220" layout="topleft" name="WindLight floater" diff --git a/indra/newview/skins/default/xui/en/floater_world_map.xml b/indra/newview/skins/default/xui/en/floater_world_map.xml index f37c0e9022..93755fa253 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <floater + legacy_header_height="18" can_resize="true" center_horiz="true" center_vert="true" diff --git a/indra/newview/skins/default/xui/en/inspect_avatar.xml b/indra/newview/skins/default/xui/en/inspect_avatar.xml index 1e44032b97..6b13e2f1c7 100644 --- a/indra/newview/skins/default/xui/en/inspect_avatar.xml +++ b/indra/newview/skins/default/xui/en/inspect_avatar.xml @@ -4,6 +4,7 @@ Single instance - only have one at a time, recycle it each spawn --> <floater + legacy_header_height="18" bevel_style="in" bg_opaque_image="Inspector_Background" can_close="false" diff --git a/indra/newview/skins/default/xui/en/inspect_group.xml b/indra/newview/skins/default/xui/en/inspect_group.xml index 477fbfd827..db12daa6e0 100644 --- a/indra/newview/skins/default/xui/en/inspect_group.xml +++ b/indra/newview/skins/default/xui/en/inspect_group.xml @@ -4,6 +4,7 @@ Single instance - only have one at a time, recycle it each spawn --> <floater + legacy_header_height="18" bevel_style="in" bg_opaque_image="Inspector_Background" can_close="false" diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index 50d49a9e0f..603ff55e6d 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -4,6 +4,7 @@ Single instance - only have one at a time, recycle it each spawn --> <floater + legacy_header_height="18" bevel_style="in" bg_opaque_image="Inspector_Background" can_close="false" diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index 200c6622ee..66237d585a 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -4,6 +4,7 @@ <!-- All this does is establish the position of the "close" button on the toast. --> <floater + legacy_header_height="18" name="toast" title="" visible="false" diff --git a/indra/newview/skins/default/xui/en/widgets/floater.xml b/indra/newview/skins/default/xui/en/widgets/floater.xml index 82f6d44f78..6660fbf1a8 100644 --- a/indra/newview/skins/default/xui/en/widgets/floater.xml +++ b/indra/newview/skins/default/xui/en/widgets/floater.xml @@ -7,5 +7,4 @@ bg_alpha_image="Window_Background" background_visible="true" background_opaque="false" - header_height="25" - legacy_header_height="18" /> + header_height="25" /> -- cgit v1.2.3 From 96e46f91270d9a01eabaac03d34d8faa5c9c685b Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 18:01:51 -0700 Subject: Fix for DEV-41755 --- indra/newview/llpanelprimmediacontrols.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index c662206e77..103faf5a03 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -630,9 +630,13 @@ void LLPanelPrimMediaControls::draw() if(mFadeTimer.getElapsedTimeF32() >= mControlFadeTime) { - setVisible(FALSE); if(mClearFaceOnFade) { + // Hiding this object makes scroll events go missing after it fades out + // (see DEV-41755 for a full description of the train wreck). + // Only hide the controls when we're untargeting. + setVisible(FALSE); + mClearFaceOnFade = false; mTargetImplID = LLUUID::null; mTargetObjectID = LLUUID::null; -- cgit v1.2.3 From 8604c978ca3d7fdcff4849cc53f44352b237406c Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 18:38:02 -0700 Subject: Fixes for DEV-41612, DEV-41693, DEV-41963. Made LLViewerMediaFocus::update clear inworld media focus if LLViewerMediaFocus has lost keyboard focus to anything besides the media controls, or LLToolMgr::inBuildMode() returns true. Also, never fade the media controls if they have keyboard focus (this fixes the media controls fading out while the user is trying to type an URL). --- indra/newview/llpanelprimmediacontrols.cpp | 4 ++-- indra/newview/llviewermediafocus.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/indra/newview/llpanelprimmediacontrols.cpp b/indra/newview/llpanelprimmediacontrols.cpp index 103faf5a03..e4b32c4820 100644 --- a/indra/newview/llpanelprimmediacontrols.cpp +++ b/indra/newview/llpanelprimmediacontrols.cpp @@ -595,9 +595,9 @@ void LLPanelPrimMediaControls::updateShape() mLastCursorPos = cursor_pos_window; } - if(isMouseOver()) + if(isMouseOver() || hasFocus()) { - // Never fade the controls if the mouse is over them. + // Never fade the controls if the mouse is over them or they have keyboard focus. mFadeTimer.stop(); } else if(!mClearFaceOnFade && (mInactivityTimer.getElapsedTimeF32() < mInactiveTimeout)) diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index c32b3523b3..0b48461d54 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -49,6 +49,7 @@ #include "llweb.h" #include "llmediaentry.h" #include "llkeyboard.h" +#include "lltoolmgr.h" // // LLViewerMediaFocus @@ -116,7 +117,7 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac } else { - if(mFocusedImplID != LLUUID::null) + if(mFocusedImplID.notNull()) { if(mMediaControls.get()) { @@ -310,6 +311,30 @@ BOOL LLViewerMediaFocus::handleScrollWheel(S32 x, S32 y, S32 clicks) void LLViewerMediaFocus::update() { + if(mFocusedImplID.notNull() || mFocusedObjectID.notNull()) + { + // We have a focused impl/face. + if(!getFocus()) + { + // We've lost keyboard focus -- check to see whether the media controls have it + if(mMediaControls.get() && mMediaControls.get()->hasFocus()) + { + // the media controls have focus -- don't clear. + } + else + { + // Someone else has focus -- back off. + clearFocus(); + } + } + else if(LLToolMgr::getInstance()->inBuildMode()) + { + // Build tools are selected -- clear focus. + clearFocus(); + } + } + + LLViewerMediaImpl *media_impl = getFocusedMediaImpl(); LLViewerObject *viewer_object = getFocusedObject(); S32 face = mFocusedObjectFace; -- cgit v1.2.3 From 0da67c881929a53f7d38ead5540e0f098b65a0ae Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Thu, 29 Oct 2009 18:49:36 -0700 Subject: In LLViewerMediaFocus::setFocusFace(), when clearing focus, only clear keyboard focus if the object had it in the first place. --- indra/newview/llviewermediafocus.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 0b48461d54..0ef4679057 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -123,7 +123,10 @@ void LLViewerMediaFocus::setFocusFace(LLPointer<LLViewerObject> objectp, S32 fac { mMediaControls.get()->resetZoomLevel(); } + } + if(hasFocus()) + { gFocusMgr.setKeyboardFocus(NULL); } -- cgit v1.2.3 From 6d2765a42dc629d526568336f3f4f4ffeba54484 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Fri, 30 Oct 2009 09:38:24 +0000 Subject: Trivial XUI change to test mercurial push problems. --- indra/newview/skins/default/xui/en/floater_buy_currency.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/xui/en/floater_buy_currency.xml b/indra/newview/skins/default/xui/en/floater_buy_currency.xml index 26d5d4bedf..88712bda5e 100644 --- a/indra/newview/skins/default/xui/en/floater_buy_currency.xml +++ b/indra/newview/skins/default/xui/en/floater_buy_currency.xml @@ -4,10 +4,10 @@ can_minimize="false" height="275" layout="topleft" + title="Buy L$" name="buy currency" help_topic="buy_linden_dollars" single_instance="true" - title="Buy L$" width="350"> <floater.string name="buy_currency"> -- cgit v1.2.3 From e5c96332defcc64defb25f62a26d4f114627a2e0 Mon Sep 17 00:00:00 2001 From: angela <angela@lindenlab.com> Date: Fri, 30 Oct 2009 17:59:47 +0800 Subject: media inspector adding current url, secure browsing and home page button --- indra/llui/lltooltip.cpp | 36 ++++++- indra/llui/lltooltip.h | 4 + indra/newview/llinspectobject.cpp | 117 ++++++++++++++++++++- indra/newview/lltoolpie.cpp | 55 +++++++++- indra/newview/lltoolpie.h | 2 + .../skins/default/xui/en/inspect_object.xml | 27 ++--- 6 files changed, 217 insertions(+), 24 deletions(-) diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 2a30eb4b5b..34501ae080 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -158,6 +158,7 @@ LLToolTip::Params::Params() sticky_rect("sticky_rect"), image("image"), time_based_media("time_based_media", false), + web_based_media("web_based_media", false), media_playing("media_playing", false) { name = "tooltip"; @@ -173,7 +174,8 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) mPadding(p.padding), mTextBox(NULL), mInfoButton(NULL), - mPlayMediaButton(NULL) + mPlayMediaButton(NULL), + mHomePageButton(NULL) { LLTextBox::Params params; params.initial_value = "tip_text"; @@ -246,6 +248,28 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0); } + if (p.web_based_media.isProvided() && p.web_based_media == true) + { + LLButton::Params p_w_button; + p_w_button.name(std::string("home_page")); + TOOLTIP_PLAYBUTTON_SIZE = 16; + LLRect button_rect; + button_rect.setOriginAndSize((mPadding +TOOLTIP_ICON_SIZE+ mPadding ), mPadding, TOOLTIP_ICON_SIZE, TOOLTIP_ICON_SIZE); + p_w_button.rect = button_rect; + p_w_button.image_unselected.name("map_home.tga"); + p_w_button.scale_image(true); + + mHomePageButton = LLUICtrlFactory::create<LLButton>(p_w_button); + if(p.click_homepage_callback.isProvided()) + { + mHomePageButton->setCommitCallback(boost::bind(p.click_homepage_callback())); + } + addChild(mHomePageButton); + + // move text over to fit image in + mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0); + } + if (p.click_callback.isProvided()) { setMouseUpCallback(boost::bind(p.click_callback())); @@ -297,7 +321,8 @@ void LLToolTip::setVisible(BOOL visible) BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask) { //mInfoButton->setFlashing(true); - mInfoButton->setHighlight(true); + if(mInfoButton) + mInfoButton->setHighlight(true); LLPanel::handleHover(x, y, mask); if (mHasClickCallback) @@ -310,7 +335,8 @@ BOOL LLToolTip::handleHover(S32 x, S32 y, MASK mask) void LLToolTip::onMouseLeave(S32 x, S32 y, MASK mask) { //mInfoButton->setFlashing(true); - mInfoButton->setHighlight(false); + if(mInfoButton) + mInfoButton->setHighlight(false); LLUICtrl::onMouseLeave(x, y, mask); } @@ -444,7 +470,9 @@ void LLToolTipMgr::show(const LLToolTip::Params& params) && LLUI::getMouseIdleTime() > params.delay_time) // the mouse has been still long enough { bool tooltip_changed = mLastToolTipParams.message() != params.message() - || mLastToolTipParams.pos() != params.pos(); + || mLastToolTipParams.pos() != params.pos() + || mLastToolTipParams.time_based_media() != params.time_based_media() + || mLastToolTipParams.web_based_media() != params.web_based_media(); bool tooltip_shown = mToolTip && mToolTip->getVisible() diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index a81876eac1..4a5f60f93d 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -84,8 +84,10 @@ public: Optional<bool> time_based_media; + Optional<bool> web_based_media; Optional<bool> media_playing; Optional<click_callback_t> click_playmedia_callback; + Optional<click_callback_t> click_homepage_callback; Optional<S32> max_width; Optional<S32> padding; Optional<bool> wrap; @@ -108,6 +110,8 @@ private: class LLTextBox* mTextBox; class LLButton* mInfoButton; class LLButton* mPlayMediaButton; + class LLButton* mHomePageButton; + LLFrameTimer mFadeTimer; LLFrameTimer mVisibleTimer; S32 mMaxWidth; diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp index 81544904e3..050a61c79b 100644 --- a/indra/newview/llinspectobject.cpp +++ b/indra/newview/llinspectobject.cpp @@ -35,10 +35,12 @@ // Viewer #include "llinspect.h" +#include "llmediaentry.h" #include "llnotifications.h" // *TODO: Eliminate, add LLNotificationsUtil wrapper #include "llselectmgr.h" #include "llslurl.h" #include "llviewermenu.h" // handle_object_touch(), handle_buy() +#include "llviewermedia.h" #include "llviewerobjectlist.h" // to select the requested object // Linden libraries @@ -92,8 +94,10 @@ private: void updateName(LLSelectNode* nodep); void updateDescription(LLSelectNode* nodep); void updatePrice(LLSelectNode* nodep); - void updateCreator(LLSelectNode* nodep); + + void updateMediaCurrentURL(); + void updateSecureBrowsing(); void onClickBuy(); void onClickPay(); @@ -107,14 +111,16 @@ private: private: LLUUID mObjectID; S32 mObjectFace; + viewer_media_t mMediaImpl; LLSafeHandle<LLObjectSelection> mObjectSelection; }; LLInspectObject::LLInspectObject(const LLSD& sd) : LLInspect( LLSD() ), // single_instance, doesn't really need key - mObjectID(), // set in onOpen() + mObjectID(NULL), // set in onOpen() mObjectFace(0), - mObjectSelection() + mObjectSelection(NULL), + mMediaImpl(NULL) { // can't make the properties request until the widgets are constructed // as it might return immediately, so do it in postBuild. @@ -141,7 +147,7 @@ BOOL LLInspectObject::postBuild(void) getChild<LLUICtrl>("object_name")->setValue(""); getChild<LLUICtrl>("object_creator")->setValue(""); getChild<LLUICtrl>("object_description")->setValue(""); - + getChild<LLUICtrl>("object_media_url")->setValue(""); // Set buttons invisible until we know what this object can do hideButtons(); @@ -219,6 +225,17 @@ void LLInspectObject::onOpen(const LLSD& data) } } functor; mObjectSelection->applyToNodes(&functor); + + // Does this face have media? + const LLTextureEntry* tep = obj->getTE(mObjectFace); + if (!tep) + return; + + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if(!mep) + return; + + mMediaImpl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); } } @@ -249,6 +266,30 @@ void LLInspectObject::update() updateDescription(nodep); updateCreator(nodep); updatePrice(nodep); + + LLViewerObject* obj = nodep->getObject(); + if(!obj) + return; + + if ( mObjectFace < 0 + || mObjectFace >= obj->getNumTEs() ) + { + return; + } + + // Does this face have media? + const LLTextureEntry* tep = obj->getTE(mObjectFace); + if (!tep) + return; + + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if(!mep) + return; + + mMediaImpl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + + updateMediaCurrentURL(); + updateSecureBrowsing(); } void LLInspectObject::hideButtons() @@ -387,6 +428,40 @@ void LLInspectObject::updateDescription(LLSelectNode* nodep) } } +void LLInspectObject::updateMediaCurrentURL() +{ + LLTextBox* textbox = getChild<LLTextBox>("object_media_url"); + std::string media_url = ""; + textbox->setValue(media_url); + textbox->setToolTip(media_url); + + if(mMediaImpl.notNull() && mMediaImpl->hasMedia()) + { + LLStringUtil::format_map_t args; + LLPluginClassMedia* media_plugin = NULL; + media_plugin = mMediaImpl->getMediaPlugin(); + if(media_plugin) + { + if(media_plugin->pluginSupportsMediaTime()) + { + args["[CurrentURL]"] = mMediaImpl->getMediaURL(); + } + else + { + args["[CurrentURL]"] = media_plugin->getLocation(); + } + media_url = LLTrans::getString("CurrentURL", args); + textbox->setText(media_url); + textbox->setToolTip(media_url); + } + } + else + { + textbox->setText(media_url); + textbox->setToolTip(media_url); + } +} + void LLInspectObject::updateCreator(LLSelectNode* nodep) { // final information for display @@ -459,6 +534,40 @@ void LLInspectObject::updatePrice(LLSelectNode* nodep) getChild<LLUICtrl>("price_icon")->setVisible(show_price_icon); } +void LLInspectObject::updateSecureBrowsing() +{ + bool is_secure_browsing = false; + + if(mMediaImpl.notNull() + && mMediaImpl->hasMedia()) + { + LLPluginClassMedia* media_plugin = NULL; + std::string current_url = ""; + media_plugin = mMediaImpl->getMediaPlugin(); + if(media_plugin) + { + if(media_plugin->pluginSupportsMediaTime()) + { + current_url = mMediaImpl->getMediaURL(); + } + else + { + current_url = media_plugin->getLocation(); + } + } + + std::string prefix = std::string("https://"); + std::string test_prefix = current_url.substr(0, prefix.length()); + LLStringUtil::toLower(test_prefix); + if(test_prefix == prefix) + { + is_secure_browsing = true; + } + } + getChild<LLUICtrl>("secure_browsing")->setVisible(is_secure_browsing); +} + + void LLInspectObject::onClickBuy() { handle_buy(); diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp index 2ba4d97674..304f1dffaf 100644 --- a/indra/newview/lltoolpie.cpp +++ b/indra/newview/lltoolpie.cpp @@ -734,6 +734,7 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) } bool is_time_based_media = false; + bool is_web_based_media = false; bool is_media_playing = false; // Does this face have media? @@ -756,12 +757,14 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) { if(media_plugin->pluginSupportsMediaTime()) { is_time_based_media = true; + is_web_based_media = false; args["[CurrentURL]"] = media_impl->getMediaURL(); is_media_playing = media_impl->isMediaPlaying(); } else { is_time_based_media = false; + is_web_based_media = true; args["[CurrentURL]"] = media_plugin->getLocation(); } //tooltip_msg.append(LLTrans::getString("CurrentURL", args)); @@ -781,8 +784,10 @@ BOOL LLToolPie::handleToolTip(S32 local_x, S32 local_y, MASK mask) .image(LLUI::getUIImage("Info_Off")) .click_callback(boost::bind(showObjectInspector, hover_object->getID(), mHoverPick.mObjectFace)) .time_based_media(is_time_based_media) + .web_based_media(is_web_based_media) .media_playing(is_media_playing) - .click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)) + .click_playmedia_callback(boost::bind(playCurrentMedia, mHoverPick)) + .click_homepage_callback(boost::bind(VisitHomePage, mHoverPick)) .visible_time_near(6.f) .visible_time_far(3.f) .wrap(false)); @@ -1030,8 +1035,8 @@ void LLToolPie::playCurrentMedia(const LLPickInfo& info) LLPluginClassMedia* media_plugin = NULL; - if (gSavedSettings.getBOOL("MediaOnAPrimUI")) - { +// if (gSavedSettings.getBOOL("MediaOnAPrimUI")) +// { viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); if(media_impl.notNull() && media_impl->hasMedia()) @@ -1052,10 +1057,52 @@ void LLToolPie::playCurrentMedia(const LLPickInfo& info) } } - } +// } } +// static +void LLToolPie::VisitHomePage(const LLPickInfo& info) +{ + //FIXME: how do we handle object in different parcel than us? + LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); + if (!parcel) return; + + LLPointer<LLViewerObject> objectp = info.getObject(); + + // Early out cases. Must clear media hover. + // did not hit an object or did not hit a valid face + if ( objectp.isNull() || + info.mObjectFace < 0 || + info.mObjectFace >= objectp->getNumTEs() ) + { + return; + } + + // Does this face have media? + const LLTextureEntry* tep = objectp->getTE(info.mObjectFace); + if (!tep) + return; + + const LLMediaEntry* mep = tep->hasMedia() ? tep->getMediaData() : NULL; + if(!mep) + return; + + LLPluginClassMedia* media_plugin = NULL; + + viewer_media_t media_impl = LLViewerMedia::getMediaImplFromTextureID(mep->getMediaID()); + + if(media_impl.notNull() && media_impl->hasMedia()) + { + media_plugin = media_impl->getMediaPlugin(); + + if (media_plugin && !(media_plugin->pluginSupportsMediaTime())) + { + media_impl->navigateHome(); + } + } +} + void LLToolPie::handleDeselect() { diff --git a/indra/newview/lltoolpie.h b/indra/newview/lltoolpie.h index 3cf9cbde55..3660c68552 100644 --- a/indra/newview/lltoolpie.h +++ b/indra/newview/lltoolpie.h @@ -80,6 +80,8 @@ public: static void showObjectInspector(const LLUUID& object_id); static void showObjectInspector(const LLUUID& object_id, const S32& object_face); static void playCurrentMedia(const LLPickInfo& info); + static void VisitHomePage(const LLPickInfo& info); + private: BOOL outsideSlop (S32 x, S32 y, S32 start_x, S32 start_y); BOOL pickLeftMouseDownCallback(); diff --git a/indra/newview/skins/default/xui/en/inspect_object.xml b/indra/newview/skins/default/xui/en/inspect_object.xml index 76b6e2c173..fe492e0ae8 100644 --- a/indra/newview/skins/default/xui/en/inspect_object.xml +++ b/indra/newview/skins/default/xui/en/inspect_object.xml @@ -84,6 +84,17 @@ This is a really long description for an object being as how it is at least 80 c </text> <!-- Overlapping buttons for all default actions. Show "Buy" if for sale, "Sit" if can sit, etc. --> + <text + follows="all" + height="15" + left_delta="0" + name="object_media_url" + top_pad="-5" + width="291" + max_length = "50" + use_ellipses="true" + word_wrap="true"/> + <button follows="top|left" font="SansSerif" @@ -139,24 +150,16 @@ This is a really long description for an object being as how it is at least 80 c top_delta="0" width="75" /> <icon - name="secure_icon" + name="secure_browsing" image_name="map_infohub.tga" left_delta="80" width="16" height="16" - top_delta="0" + top_delta="2" + tool_tip="Secure Browsing" follows="left|top"/> - <!-- <text - follows="left|top" - height="30" - left_delta="20" - name="object_media_url" - top_pad="-20" - width="150" - use_ellipses="true" - word_wrap="true"> - non-overlapping buttons here --> + <!-- non-overlapping buttons here --> <menu_button follows="top|left" height="18" -- cgit v1.2.3 From 07dabef250596a68328fdadad4ba41b62d9b482b Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Fri, 30 Oct 2009 12:39:23 +0200 Subject: Fixed normal bug EXT-1972 Nearby chat: Please limit chat field with 254 characters for simple Latin; less for multi-byte characters --HG-- branch : product-engine --- indra/newview/llnearbychatbar.cpp | 1 - indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp index 217007fb15..32dc5e5927 100644 --- a/indra/newview/llnearbychatbar.cpp +++ b/indra/newview/llnearbychatbar.cpp @@ -224,7 +224,6 @@ BOOL LLNearbyChatBar::postBuild() mChatBox->setIgnoreTab(TRUE); mChatBox->setPassDelete(TRUE); mChatBox->setReplaceNewlinesWithSpaces(FALSE); - mChatBox->setMaxTextLength(1023); mChatBox->setEnableLineHistory(TRUE); mOutputMonitor = getChild<LLOutputMonitorCtrl>("chat_zone_indicator"); diff --git a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml index af00b96d27..2182163da5 100644 --- a/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_nearby_chat_bar.xml @@ -23,6 +23,7 @@ layout="topleft" left_delta="7" left="0" + max_length="254" name="chat_box" tool_tip="Press Enter to say, Ctrl+Enter to shout" top="0" -- cgit v1.2.3 From f4424f8867eec64f770715d1d44ea4276c8129af Mon Sep 17 00:00:00 2001 From: Dmitry Oleshko <doleshko@productengine.com> Date: Fri, 30 Oct 2009 13:24:49 +0200 Subject: fixed normal bug (EXT-1971) Add fade time period for nearby chat bubbles --HG-- branch : product-engine --- indra/newview/app_settings/settings.xml | 25 +++++++++++++++++++++- indra/newview/llnearbychathandler.cpp | 2 ++ indra/newview/lltoast.cpp | 6 ++++-- indra/newview/lltoast.h | 4 +++- .../skins/default/xui/en/panel_chat_item.xml | 6 +++--- 5 files changed, 36 insertions(+), 7 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 5fc0cb6ff8..af702db5f0 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4886,7 +4886,7 @@ <key>Value</key> <integer>10</integer> </map> - <key>ToastOpaqueTime</key> + <key>ToastFadingTime</key> <map> <key>Comment</key> <string>Number of seconds while a toast is fading </string> @@ -4898,6 +4898,29 @@ <integer>1</integer> </map> <key>StartUpToastLifeTime</key> + <key>NearbyToastFadingTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a nearby chat toast is fading </string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>3</integer> + </map> + <key>NearbyToastLifeTime</key> + <map> + <key>Comment</key> + <string>Number of seconds while a nearby chat toast exists</string> + <key>Persist</key> + <integer>1</integer> + <key>Type</key> + <string>S32</string> + <key>Value</key> + <integer>23</integer> + </map> + <key>StartUpToastLifeTime</key> <map> <key>Comment</key> <string>Number of seconds while a StartUp toast exist</string> diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 6b0d6d61e0..aef0886be4 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -162,6 +162,8 @@ bool LLNearbyChatScreenChannel::createPoolToast() LLToast::Params p; p.panel = panel; + p.lifetime_secs = gSavedSettings.getS32("NearbyToastLifeTime"); + p.fading_time_secs = gSavedSettings.getS32("NearbyToastFadingTime"); LLToast* toast = new LLToast(p); diff --git a/indra/newview/lltoast.cpp b/indra/newview/lltoast.cpp index 24824a095c..903df21e78 100644 --- a/indra/newview/lltoast.cpp +++ b/indra/newview/lltoast.cpp @@ -49,13 +49,15 @@ LLToast::Params::Params() enable_hide_btn("enable_hide_btn", true), force_show("force_show", false), force_store("force_store", false), + fading_time_secs("fading_time_secs", gSavedSettings.getS32("ToastFadingTime")), lifetime_secs("lifetime_secs", gSavedSettings.getS32("NotificationToastLifeTime")) {}; LLToast::LLToast(const LLToast::Params& p) : LLModalDialog(LLSD(), p.is_modal), mPanel(p.panel), - mToastLifetime(p.lifetime_secs), + mToastLifetime(p.lifetime_secs), + mToastFadingTime(p.fading_time_secs), mNotificationID(p.notif_id), mSessionID(p.session_id), mCanFade(p.can_fade), @@ -127,7 +129,7 @@ bool LLToast::lifetimeHasExpired() if (mTimer.getStarted()) { F32 elapsed_time = mTimer.getElapsedTimeF32(); - if ((mToastLifetime - elapsed_time) <= gSavedSettings.getS32("ToastOpaqueTime")) + if ((mToastLifetime - elapsed_time) <= mToastFadingTime) { setBackgroundOpaque(FALSE); } diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index 0698c94880..b670f47045 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -63,7 +63,8 @@ public: Optional<LLUUID> notif_id, //notification ID session_id; //im session ID Optional<LLNotificationPtr> notification; - Optional<F32> lifetime_secs; + Optional<F32> lifetime_secs, + fading_time_secs; // Number of seconds while a toast is fading Optional<toast_callback_t> on_delete_toast, on_mouse_enter; Optional<bool> can_fade, @@ -157,6 +158,7 @@ private: // timer counts a lifetime of a toast LLTimer mTimer; F32 mToastLifetime; // in seconds + F32 mToastFadingTime; // in seconds LLPanel* mPanel; LLButton* mHideBtn; diff --git a/indra/newview/skins/default/xui/en/panel_chat_item.xml b/indra/newview/skins/default/xui/en/panel_chat_item.xml index 78f53562cd..05b04bbf8e 100644 --- a/indra/newview/skins/default/xui/en/panel_chat_item.xml +++ b/indra/newview/skins/default/xui/en/panel_chat_item.xml @@ -5,10 +5,10 @@ name="instant_message" width="300" height="180" - background_opaque="false" - background_visible="true" + background_opaque="true" + background_visible="false" follows="left|top|right|bottom" - bg_alpha_color="0.3 0.3 0.3 1.0"> + bg_alpha_color="0.3 0.3 0.3 0"> <panel width="250" height="30" background_visible="true" background_opaque="false" bg_alpha_color="0.0 0.0 0.0 1.0" name="msg_caption"> <avatar_icon top="25" left="10" width="20" height="20" follows="left|top" -- cgit v1.2.3 From 7dd9fb280663dfd0842b69e8c5f706fd96b8cf75 Mon Sep 17 00:00:00 2001 From: Dmitry Oleshko <doleshko@productengine.com> Date: Fri, 30 Oct 2009 14:18:07 +0200 Subject: fixed normal bug (EXT-1934) [BSI] Revert EXT-543 - Notification chiclet should not count IM/Group messages --HG-- branch : product-engine --- indra/newview/llchiclet.cpp | 21 ++------------------- indra/newview/llchiclet.h | 8 +++----- indra/newview/llimfloater.cpp | 2 -- indra/newview/llsyswellwindow.cpp | 1 - 4 files changed, 5 insertions(+), 27 deletions(-) diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index 670f8717a2..bad61101c1 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -57,8 +57,6 @@ static LLDefaultChildRegistry::Register<LLIMP2PChiclet> t4("chiclet_im_p2p"); static LLDefaultChildRegistry::Register<LLIMGroupChiclet> t5("chiclet_im_group"); S32 LLNotificationChiclet::mUreadSystemNotifications = 0; -S32 LLNotificationChiclet::mUreadIMNotifications = 0; - boost::signals2::signal<LLChiclet* (const LLUUID&), LLIMChiclet::CollectChicletCombiner<std::list<LLChiclet*> > > @@ -99,7 +97,6 @@ LLNotificationChiclet::LLNotificationChiclet(const Params& p) // connect counter handlers to the signals connectCounterUpdatersToSignal("notify"); connectCounterUpdatersToSignal("groupnotify"); - connectCounterUpdatersToSignal("notifytoast"); } LLNotificationChiclet::~LLNotificationChiclet() @@ -113,16 +110,8 @@ void LLNotificationChiclet::connectCounterUpdatersToSignal(std::string notificat LLNotificationsUI::LLEventHandler* n_handler = manager->getHandlerForNotification(notification_type); if(n_handler) { - if(notification_type == "notifytoast") - { - n_handler->setNewNotificationCallback(boost::bind(&LLNotificationChiclet::updateUreadIMNotifications, this)); - n_handler->setDelNotification(boost::bind(&LLNotificationChiclet::updateUreadIMNotifications, this)); - } - else - { - n_handler->setNewNotificationCallback(boost::bind(&LLNotificationChiclet::incUreadSystemNotifications, this)); - n_handler->setDelNotification(boost::bind(&LLNotificationChiclet::decUreadSystemNotifications, this)); - } + n_handler->setNewNotificationCallback(boost::bind(&LLNotificationChiclet::incUreadSystemNotifications, this)); + n_handler->setDelNotification(boost::bind(&LLNotificationChiclet::decUreadSystemNotifications, this)); } } @@ -147,12 +136,6 @@ void LLNotificationChiclet::setToggleState(BOOL toggled) { mButton->setToggleState(toggled); } -void LLNotificationChiclet::updateUreadIMNotifications() -{ - mUreadIMNotifications = gIMMgr->getNumberOfUnreadIM(); - setCounter(mUreadSystemNotifications + mUreadIMNotifications); -} - ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// diff --git a/indra/newview/llchiclet.h b/indra/newview/llchiclet.h index d1153a075d..6eefd9829f 100644 --- a/indra/newview/llchiclet.h +++ b/indra/newview/llchiclet.h @@ -608,10 +608,9 @@ public: /*virtual*/ ~ LLNotificationChiclet(); - // methods for updating a number of unread System or IM notifications - void incUreadSystemNotifications() { setCounter(++mUreadSystemNotifications + mUreadIMNotifications); } - void decUreadSystemNotifications() { setCounter(--mUreadSystemNotifications + mUreadIMNotifications); } - void updateUreadIMNotifications(); + // methods for updating a number of unread System notifications + void incUreadSystemNotifications() { setCounter(++mUreadSystemNotifications); } + void decUreadSystemNotifications() { setCounter(--mUreadSystemNotifications); } void setToggleState(BOOL toggled); protected: @@ -622,7 +621,6 @@ protected: friend class LLUICtrlFactory; static S32 mUreadSystemNotifications; - static S32 mUreadIMNotifications; protected: LLButton* mButton; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index b9c068b583..b21df87093 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -409,8 +409,6 @@ bool LLIMFloater::toggle(const LLUUID& session_id) { // ensure the list of messages is updated when floater is made visible show(session_id); - // update number of unread notifications in the SysWell - LLBottomTray::getInstance()->getSysWell()->updateUreadIMNotifications(); return true; } } diff --git a/indra/newview/llsyswellwindow.cpp b/indra/newview/llsyswellwindow.cpp index 93a931dc78..419603e14e 100644 --- a/indra/newview/llsyswellwindow.cpp +++ b/indra/newview/llsyswellwindow.cpp @@ -427,7 +427,6 @@ void LLSysWellWindow::sessionRemoved(const LLUUID& sessionId) { delIMRow(sessionId); reshapeWindow(); - LLBottomTray::getInstance()->getSysWell()->updateUreadIMNotifications(); } void LLSysWellWindow::sessionIDUpdated(const LLUUID& old_session_id, const LLUUID& new_session_id) -- cgit v1.2.3 From 5d757d2b5f425bde269bd3ec310862bd5c22fe41 Mon Sep 17 00:00:00 2001 From: Mike Antipov <mantipov@productengine.com> Date: Fri, 30 Oct 2009 14:23:32 +0200 Subject: Implemented normal task EXT-2014 (Places - Landmarks: Collapsed accordion panels should expand while filtering if they contain matched items) --HG-- branch : product-engine --- indra/newview/llpanellandmarks.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp index 3d0db71045..48a93f0d42 100644 --- a/indra/newview/llpanellandmarks.cpp +++ b/indra/newview/llpanellandmarks.cpp @@ -131,6 +131,9 @@ void LLLandmarksPanel::onSearchEdit(const std::string& string) { LLAccordionCtrlTab* tab = *iter; tab->setVisible(true); + + // expand accordion to see matched items in all ones. See EXT-2014. + tab->changeOpenClose(false); } } @@ -883,7 +886,7 @@ bool LLLandmarksPanel::handleDragAndDropToTrash(BOOL drop, EDragAndDropType carg return true; } - +// static void LLLandmarksPanel::doIdle(void* landmarks_panel) { LLLandmarksPanel* panel = (LLLandmarksPanel* ) landmarks_panel; -- cgit v1.2.3 From 0a6f3fadcf97d1055a5cf78ee9917469b22ea094 Mon Sep 17 00:00:00 2001 From: Yuri Chebotarev <ychebotarev@productengine.com> Date: Fri, 30 Oct 2009 14:29:13 +0200 Subject: fix normal bug EXT-1861 IM from Object to appear in Nearby Chat --HG-- branch : product-engine --- indra/newview/llnearbychathandler.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index 6b0d6d61e0..1668a6d999 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -326,6 +326,12 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg) initChannel(); } + //only messages from AGENTS + if(CHAT_SOURCE_OBJECT == chat_msg.mSourceType) + { + return;//dn't show toast for messages from objects + } + LLUUID id; id.generate(); -- cgit v1.2.3 From a1cc8e8a3370b3a44197cd364fefd2e0a71ae23c Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan <dzaporozhan@productengine.com> Date: Fri, 30 Oct 2009 15:28:39 +0200 Subject: Fixed normal bug EXT-1970 Limit Profile info description for the following fields: Second/first life description and Second Life Groups to 512 chars --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_edit_profile.xml | 2 ++ indra/newview/skins/default/xui/en/panel_profile.xml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/indra/newview/skins/default/xui/en/panel_edit_profile.xml b/indra/newview/skins/default/xui/en/panel_edit_profile.xml index b002034a08..fedc49ae87 100644 --- a/indra/newview/skins/default/xui/en/panel_edit_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_edit_profile.xml @@ -136,6 +136,7 @@ layout="topleft" left="120" top="18" + max_length="512" name="sl_description_edit" width="173" word_wrap="true"> @@ -188,6 +189,7 @@ height="100" layout="topleft" left="120" + max_length="512" top="142" name="fl_description_edit" width="173" diff --git a/indra/newview/skins/default/xui/en/panel_profile.xml b/indra/newview/skins/default/xui/en/panel_profile.xml index 73a759a8ba..5af7d7d674 100644 --- a/indra/newview/skins/default/xui/en/panel_profile.xml +++ b/indra/newview/skins/default/xui/en/panel_profile.xml @@ -81,6 +81,7 @@ height="95" layout="topleft" left="107" + max_length="512" name="sl_description_edit" top_pad="-3" width="173" @@ -123,6 +124,7 @@ height="95" layout="topleft" left="107" + max_length="512" name="fl_description_edit" top_pad="-3" width="173" -- cgit v1.2.3 From 283b862814996dad24ce1e896122465fede118a1 Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com> Date: Fri, 30 Oct 2009 09:57:56 -0400 Subject: Changed MapAvatarColor to Green. http://jira.secondlife.com/browse/EXT-1486 --- indra/newview/skins/default/colors.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 287c997c65..6e22472153 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -408,7 +408,7 @@ reference="White" /> <color name="MapAvatarColor" - reference="White" /> + reference="Green" /> <color name="MapAvatarFriendColor" reference="Unused?" /> -- cgit v1.2.3 From ff97c319959da28ff9abd59a98a63307d6ed8d34 Mon Sep 17 00:00:00 2001 From: Yuri Chebotarev <ychebotarev@productengine.com> Date: Fri, 30 Oct 2009 17:00:23 +0200 Subject: fix task EXT-1960 Region messages, should they be displayed in the local chat? and working on EXT-239 Save chat window state and position between sessions (not finished) --HG-- branch : product-engine --- indra/llui/llfloater.cpp | 36 ++++++++++++++++++++++++++++++++++++ indra/llui/llfloater.h | 4 ++++ indra/llui/llfloaterreg.cpp | 20 ++++++++++++++++++++ indra/llui/llfloaterreg.h | 4 ++++ indra/newview/llviewermessage.cpp | 8 ++++++-- 5 files changed, 70 insertions(+), 2 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index 021e2e94ac..e5f35f7137 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -189,6 +189,7 @@ LLFloater::Params::Params() can_close("can_close", true), can_drag_on_left("can_drag_on_left", false), can_tear_off("can_tear_off", true), + save_dock_state("save_dock_state", false), save_rect("save_rect", false), save_visibility("save_visibility", false), open_callback("open_callback"), @@ -483,6 +484,7 @@ LLFloater::~LLFloater() storeRectControl(); setVisible(false); // We're not visible if we're destroyed storeVisibilityControl(); + storeDockStateControl(); } void LLFloater::storeRectControl() @@ -501,6 +503,15 @@ void LLFloater::storeVisibilityControl() } } +void LLFloater::storeDockStateControl() +{ + if( !sQuitting && mDocStateControl.size() > 1 ) + { + LLUI::sSettingGroups["floater"]->setBOOL( mDocStateControl, isDocked() ); + } +} + + void LLFloater::setVisible( BOOL visible ) { LLPanel::setVisible(visible); // calls handleVisibilityChange() @@ -759,6 +770,16 @@ void LLFloater::applyRectControl() } } +void LLFloater::applyDockState() +{ + if (mDocStateControl.size() > 1) + { + bool dockState = LLUI::sSettingGroups["floater"]->getBOOL(mDocStateControl); + setDocked(dockState); + } + +} + void LLFloater::applyTitle() { if (!mDragHandle) @@ -1376,7 +1397,10 @@ void LLFloater::setDocked(bool docked, bool pop_on_undock) mButtonsEnabled[BUTTON_DOCK] = !mDocked; mButtonsEnabled[BUTTON_UNDOCK] = mDocked; updateButtons(); + + storeDockStateControl(); } + } // static @@ -2488,6 +2512,11 @@ void LLFloater::setInstanceName(const std::string& name) { mVisibilityControl = LLFloaterReg::declareVisibilityControl(mInstanceName); } + if(!mDocStateControl.empty()) + { + mDocStateControl = LLFloaterReg::declareDockStateControl(mInstanceName); + } + } } @@ -2555,6 +2584,11 @@ void LLFloater::initFromParams(const LLFloater::Params& p) { mVisibilityControl = "t"; // flag to build mVisibilityControl name once mInstanceName is set } + + if(p.save_dock_state) + { + mDocStateControl = "t"; // flag to build mDocStateControl name once mInstanceName is set + } // open callback if (p.open_callback.isProvided()) @@ -2616,6 +2650,8 @@ bool LLFloater::initFloaterXML(LLXMLNodePtr node, LLView *parent, LLXMLNodePtr o moveResizeHandlesToFront(); + applyDockState(); + return true; // *TODO: Error checking } diff --git a/indra/llui/llfloater.h b/indra/llui/llfloater.h index 2fdaecf59a..3832f77adf 100644 --- a/indra/llui/llfloater.h +++ b/indra/llui/llfloater.h @@ -124,6 +124,7 @@ public: can_tear_off, save_rect, save_visibility, + save_dock_state, can_dock; Optional<CommitCallbackParam> open_callback, @@ -277,8 +278,10 @@ protected: void setRectControl(const std::string& rectname) { mRectControl = rectname; }; void applyRectControl(); + void applyDockState(); void storeRectControl(); void storeVisibilityControl(); + void storeDockStateControl(); void setKey(const LLSD& key); void setInstanceName(const std::string& name); @@ -316,6 +319,7 @@ public: protected: std::string mRectControl; std::string mVisibilityControl; + std::string mDocStateControl; LLSD mKey; // Key used for retrieving instances; set (for now) by LLFLoaterReg LLDragHandle* mDragHandle; diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index 3c5a8a6921..d60a879410 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -363,6 +363,26 @@ std::string LLFloaterReg::declareVisibilityControl(const std::string& name) return controlname; } +//static +std::string LLFloaterReg::declareDockStateControl(const std::string& name) +{ + std::string controlname = getDockStateControlName(name); + LLUI::sSettingGroups["floater"]->declareBOOL(controlname, FALSE, + llformat("Window Docking state for %s", name.c_str()), + TRUE); + return controlname; + +} + +//static +std::string LLFloaterReg::getDockStateControlName(const std::string& name) +{ + std::string res = std::string("floater_dock_") + name; + LLStringUtil::replaceChar( res, ' ', '_' ); + return res; +} + + //static void LLFloaterReg::registerControlVariables() { diff --git a/indra/llui/llfloaterreg.h b/indra/llui/llfloaterreg.h index 451bd1dbe3..634a235926 100644 --- a/indra/llui/llfloaterreg.h +++ b/indra/llui/llfloaterreg.h @@ -121,6 +121,10 @@ public: static std::string declareRectControl(const std::string& name); static std::string getVisibilityControlName(const std::string& name); static std::string declareVisibilityControl(const std::string& name); + + static std::string declareDockStateControl(const std::string& name); + static std::string getDockStateControlName(const std::string& name); + static void registerControlVariables(); // Callback wrappers diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index ec6ef92a54..8b7df63884 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -1595,8 +1595,12 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) // Claim to be from a local agent so it doesn't go into // console. chat.mText = name + separator_string + message.substr(message_offset); - BOOL local_agent = TRUE; - LLFloaterChat::addChat(chat, FALSE, local_agent); + + LLNearbyChat* nearby_chat = LLFloaterReg::getTypedInstance<LLNearbyChat>("nearby_chat", LLSD()); + if(nearby_chat) + { + nearby_chat->addMessage(chat); + } } else { -- cgit v1.2.3 From 478f3d075b778740abe12f92c00ad6527545ee6c Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com> Date: Fri, 30 Oct 2009 12:23:23 -0400 Subject: Added support for "selected" (expanded) state of accordion headers. http://jira.secondlife.com/browse/EXT-1530 --- indra/newview/skins/default/textures/textures.xml | 2 ++ indra/newview/skins/default/xui/en/widgets/accordion_tab.xml | 1 + 2 files changed, 3 insertions(+) diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 401f32c908..f0d27ac11d 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -6,6 +6,8 @@ <texture name="Accordion_ArrowOpened_Press" file_name="containers/Accordion_ArrowOpened_Press.png" preload="false" /> <texture name="Accordion_Off" file_name="containers/Accordion_Off.png" preload="false" /> <texture name="Accordion_Press" file_name="containers/Accordion_Press.png" preload="false" /> + <texture name="Accordion_Over" file_name="containers/Accordion_Over.png" preload="false" /> + <texture name="Accordion_Selected" file_name="containers/Accordion_Selected.png" preload="false" /> <texture name="Activate_Checkmark" file_name="taskpanel/Activate_Checkmark.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml index dabcb1038b..fcfe89c653 100644 --- a/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml +++ b/indra/newview/skins/default/xui/en/widgets/accordion_tab.xml @@ -9,4 +9,5 @@ header_image="Accordion_Off" header_image_over="Accordion_Over" header_image_pressed="Accordion_Press" + header_image_selected="Accordion_Selected" /> -- cgit v1.2.3 From 67e7a127207900cf0d4f1fb9b7acb6147415d0d5 Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com> Date: Fri, 30 Oct 2009 12:51:25 -0400 Subject: Added graphic from 80/20. http://jira.secondlife.com/browse/EXT-1530 --- .../default/textures/containers/Accordion_Selected.png | Bin 0 -> 228 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 indra/newview/skins/default/textures/containers/Accordion_Selected.png diff --git a/indra/newview/skins/default/textures/containers/Accordion_Selected.png b/indra/newview/skins/default/textures/containers/Accordion_Selected.png new file mode 100644 index 0000000000..0616dea6a3 Binary files /dev/null and b/indra/newview/skins/default/textures/containers/Accordion_Selected.png differ -- cgit v1.2.3 From 391535a513d20edd05b5590b86fcb05113c92845 Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Fri, 30 Oct 2009 10:21:09 -0700 Subject: Kill unneeded borders in movement controls. Eliminated unneeded minimize button. Not reviewed. --- indra/newview/skins/default/xui/en/floater_moveview.xml | 6 +++--- indra/newview/skins/default/xui/en/widgets/panel.xml | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_moveview.xml b/indra/newview/skins/default/xui/en/floater_moveview.xml index 01a1b95a9a..02cbef5987 100644 --- a/indra/newview/skins/default/xui/en/floater_moveview.xml +++ b/indra/newview/skins/default/xui/en/floater_moveview.xml @@ -3,7 +3,7 @@ legacy_header_height="18" can_dock="true" can_close="true" - can_minimize="true" + can_minimize="false" center_horiz="true" follows="bottom" height="110" @@ -38,7 +38,7 @@ Fly Backwards (press Down Arrow or S) </string> <panel - border="true" + border="false" height="83" follows="left|top" layout="topleft" @@ -136,7 +136,7 @@ </panel> <!-- Width and height of this panel should be synchronized with panel_stand_stop_flying.xml --> <panel - border="true" + border="false" height="27" layout="topleft" left="0" diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index 127f0f40e8..1bd5a5bda2 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <!-- Optional parameters: + border - show border around panel bg_opaque_image - image name for "in-front" panel look bg_alpha_image - image name for "in-back" or transparent panel look --> -- cgit v1.2.3 From 91b54876b7422422326646e5b4581631883f1e69 Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Fri, 30 Oct 2009 10:48:10 -0700 Subject: Adds an example plugin and corresponding changes to LLMediaPluginTest test app. We do not copy over the example plugin to the Second Life client plugin dir. --- indra/cmake/ExamplePlugin.cmake | 16 + indra/media_plugins/CMakeLists.txt | 2 + indra/media_plugins/example/CMakeLists.txt | 74 ++++ .../media_plugins/example/media_plugin_example.cpp | 488 +++++++++++++++++++++ indra/test_apps/llplugintest/CMakeLists.txt | 7 + indra/test_apps/llplugintest/bookmarks.txt | 1 + indra/test_apps/llplugintest/llmediaplugintest.cpp | 22 +- 7 files changed, 600 insertions(+), 10 deletions(-) create mode 100644 indra/cmake/ExamplePlugin.cmake create mode 100644 indra/media_plugins/example/CMakeLists.txt create mode 100644 indra/media_plugins/example/media_plugin_example.cpp diff --git a/indra/cmake/ExamplePlugin.cmake b/indra/cmake/ExamplePlugin.cmake new file mode 100644 index 0000000000..599787ad21 --- /dev/null +++ b/indra/cmake/ExamplePlugin.cmake @@ -0,0 +1,16 @@ +# -*- cmake -*- +include(Linking) +include(Prebuilt) + +if (STANDALONE) + set(EXAMPLEPLUGIN OFF CACHE BOOL + "EXAMPLEPLUGIN support for the llplugin/llmedia test apps.") +else (STANDALONE) + set(EXAMPLEPLUGIN ON CACHE BOOL + "EXAMPLEPLUGIN support for the llplugin/llmedia test apps.") +endif (STANDALONE) + +if (WINDOWS) +elseif (DARWIN) +elseif (LINUX) +endif (WINDOWS) diff --git a/indra/media_plugins/CMakeLists.txt b/indra/media_plugins/CMakeLists.txt index d35afd8cbd..cc03d9cb72 100644 --- a/indra/media_plugins/CMakeLists.txt +++ b/indra/media_plugins/CMakeLists.txt @@ -9,3 +9,5 @@ add_subdirectory(gstreamer010) if (WINDOWS OR DARWIN) add_subdirectory(quicktime) endif (WINDOWS OR DARWIN) + +add_subdirectory(example) diff --git a/indra/media_plugins/example/CMakeLists.txt b/indra/media_plugins/example/CMakeLists.txt new file mode 100644 index 0000000000..4d82f2747c --- /dev/null +++ b/indra/media_plugins/example/CMakeLists.txt @@ -0,0 +1,74 @@ +# -*- cmake -*- + +project(media_plugin_example) + +include(00-Common) +include(LLCommon) +include(LLImage) +include(LLPlugin) +include(LLMath) +include(LLRender) +include(LLWindow) +include(Linking) +include(PluginAPI) +include(MediaPluginBase) +include(FindOpenGL) + +include(ExamplePlugin) + +include_directories( + ${LLPLUGIN_INCLUDE_DIRS} + ${MEDIA_PLUGIN_BASE_INCLUDE_DIRS} + ${LLCOMMON_INCLUDE_DIRS} + ${LLMATH_INCLUDE_DIRS} + ${LLIMAGE_INCLUDE_DIRS} + ${LLRENDER_INCLUDE_DIRS} + ${LLWINDOW_INCLUDE_DIRS} +) + + +### media_plugin_example + +set(media_plugin_example_SOURCE_FILES + media_plugin_example.cpp + ) + +add_library(media_plugin_example + SHARED + ${media_plugin_example_SOURCE_FILES} +) + +target_link_libraries(media_plugin_example + ${LLPLUGIN_LIBRARIES} + ${MEDIA_PLUGIN_BASE_LIBRARIES} + ${LLCOMMON_LIBRARIES} + ${EXAMPLE_PLUGIN_LIBRARIES} + ${PLUGIN_API_WINDOWS_LIBRARIES} +) + +add_dependencies(media_plugin_example + ${LLPLUGIN_LIBRARIES} + ${MEDIA_PLUGIN_BASE_LIBRARIES} + ${LLCOMMON_LIBRARIES} +) + +if (WINDOWS) + set_target_properties( + media_plugin_example + PROPERTIES + LINK_FLAGS "/MANIFEST:NO" + ) +endif (WINDOWS) + +if (DARWIN) + # Don't prepend 'lib' to the executable name, and don't embed a full path in the library's install name + set_target_properties( + media_plugin_example + PROPERTIES + PREFIX "" + BUILD_WITH_INSTALL_RPATH 1 + INSTALL_NAME_DIR "@executable_path" + LINK_FLAGS "-exported_symbols_list ${CMAKE_CURRENT_SOURCE_DIR}/../base/media_plugin_base.exp" + ) + +endif (DARWIN) \ No newline at end of file diff --git a/indra/media_plugins/example/media_plugin_example.cpp b/indra/media_plugins/example/media_plugin_example.cpp new file mode 100644 index 0000000000..e873a0d034 --- /dev/null +++ b/indra/media_plugins/example/media_plugin_example.cpp @@ -0,0 +1,488 @@ +/** + * @file media_plugin_example.cpp + * @brief Example plugin for LLMedia API plugin system + * + * $LicenseInfo:firstyear=2008&license=viewergpl$ + * + * Copyright (c) 2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlife.com/developers/opensource/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at http://secondlife.com/developers/opensource/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ + +#include "linden_common.h" + +#include "llgl.h" +#include "llplugininstance.h" +#include "llpluginmessage.h" +#include "llpluginmessageclasses.h" +#include "media_plugin_base.h" + +#include <time.h> + +//////////////////////////////////////////////////////////////////////////////// +// +class MediaPluginExample : + public MediaPluginBase +{ + public: + MediaPluginExample( LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data ); + ~MediaPluginExample(); + + /*virtual*/ void receiveMessage( const char* message_string ); + + private: + bool init(); + void update( int milliseconds ); + void write_pixel( int x, int y, unsigned char r, unsigned char g, unsigned char b ); + bool mFirstTime; + + time_t mLastUpdateTime; + enum Constants { ENumObjects = 10 }; + unsigned char* mBackgroundPixels; + int mColorR[ ENumObjects ]; + int mColorG[ ENumObjects ]; + int mColorB[ ENumObjects ]; + int mXpos[ ENumObjects ]; + int mYpos[ ENumObjects ]; + int mXInc[ ENumObjects ]; + int mYInc[ ENumObjects ]; + int mBlockSize[ ENumObjects ]; + bool mMouseButtonDown; + bool mStopAction; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +MediaPluginExample::MediaPluginExample( LLPluginInstance::sendMessageFunction host_send_func, void *host_user_data ) : + MediaPluginBase( host_send_func, host_user_data ) +{ + mFirstTime = true; + mWidth = 0; + mHeight = 0; + mDepth = 4; + mPixels = 0; + mMouseButtonDown = false; + mStopAction = false; + mLastUpdateTime = 0; +} + +//////////////////////////////////////////////////////////////////////////////// +// +MediaPluginExample::~MediaPluginExample() +{ +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginExample::receiveMessage( const char* message_string ) +{ + LLPluginMessage message_in; + + if ( message_in.parse( message_string ) >= 0 ) + { + std::string message_class = message_in.getClass(); + std::string message_name = message_in.getName(); + + if ( message_class == LLPLUGIN_MESSAGE_CLASS_BASE ) + { + if ( message_name == "init" ) + { + LLPluginMessage message( "base", "init_response" ); + LLSD versions = LLSD::emptyMap(); + versions[ LLPLUGIN_MESSAGE_CLASS_BASE ] = LLPLUGIN_MESSAGE_CLASS_BASE_VERSION; + versions[ LLPLUGIN_MESSAGE_CLASS_MEDIA ] = LLPLUGIN_MESSAGE_CLASS_MEDIA_VERSION; + versions[ LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER ] = LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER_VERSION; + message.setValueLLSD( "versions", versions ); + + std::string plugin_version = "Example media plugin, Example Version 1.0.0.0"; + message.setValue( "plugin_version", plugin_version ); + sendMessage( message ); + + // Plugin gets to decide the texture parameters to use. + message.setMessage( LLPLUGIN_MESSAGE_CLASS_MEDIA, "texture_params" ); + message.setValueS32( "default_width", mWidth ); + message.setValueS32( "default_height", mHeight ); + message.setValueS32( "depth", mDepth ); + message.setValueU32( "internalformat", GL_RGBA ); + message.setValueU32( "format", GL_RGBA ); + message.setValueU32( "type", GL_UNSIGNED_BYTE ); + message.setValueBoolean( "coords_opengl", false ); + sendMessage( message ); + } + else + if ( message_name == "idle" ) + { + // no response is necessary here. + F64 time = message_in.getValueReal( "time" ); + + // Convert time to milliseconds for update() + update( time ); + } + else + if ( message_name == "cleanup" ) + { + // clean up here + } + else + if ( message_name == "shm_added" ) + { + SharedSegmentInfo info; + info.mAddress = message_in.getValuePointer( "address" ); + info.mSize = ( size_t )message_in.getValueS32( "size" ); + std::string name = message_in.getValue( "name" ); + + mSharedSegments.insert( SharedSegmentMap::value_type( name, info ) ); + + } + else + if ( message_name == "shm_remove" ) + { + std::string name = message_in.getValue( "name" ); + + SharedSegmentMap::iterator iter = mSharedSegments.find( name ); + if( iter != mSharedSegments.end() ) + { + if ( mPixels == iter->second.mAddress ) + { + // This is the currently active pixel buffer. + // Make sure we stop drawing to it. + mPixels = NULL; + mTextureSegmentName.clear(); + }; + mSharedSegments.erase( iter ); + } + else + { + //std::cerr << "MediaPluginExample::receiveMessage: unknown shared memory region!" << std::endl; + }; + + // Send the response so it can be cleaned up. + LLPluginMessage message( "base", "shm_remove_response" ); + message.setValue( "name", name ); + sendMessage( message ); + } + else + { + //std::cerr << "MediaPluginExample::receiveMessage: unknown base message: " << message_name << std::endl; + }; + } + else + if ( message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA ) + { + if ( message_name == "size_change" ) + { + std::string name = message_in.getValue( "name" ); + S32 width = message_in.getValueS32( "width" ); + S32 height = message_in.getValueS32( "height" ); + S32 texture_width = message_in.getValueS32( "texture_width" ); + S32 texture_height = message_in.getValueS32( "texture_height" ); + + if ( ! name.empty() ) + { + // Find the shared memory region with this name + SharedSegmentMap::iterator iter = mSharedSegments.find( name ); + if ( iter != mSharedSegments.end() ) + { + mPixels = ( unsigned char* )iter->second.mAddress; + mWidth = width; + mHeight = height; + + mTextureWidth = texture_width; + mTextureHeight = texture_height; + + init(); + }; + }; + + LLPluginMessage message( LLPLUGIN_MESSAGE_CLASS_MEDIA, "size_change_response" ); + message.setValue( "name", name ); + message.setValueS32( "width", width ); + message.setValueS32( "height", height ); + message.setValueS32( "texture_width", texture_width ); + message.setValueS32( "texture_height", texture_height ); + sendMessage( message ); + } + else + if ( message_name == "load_uri" ) + { + std::string uri = message_in.getValue( "uri" ); + if ( ! uri.empty() ) + { + }; + } + else + if ( message_name == "mouse_event" ) + { + std::string event = message_in.getValue( "event" ); + S32 button = message_in.getValueS32( "button" ); + + // left mouse button + if ( button == 0 ) + { + int mouse_x = message_in.getValueS32( "x" ); + int mouse_y = message_in.getValueS32( "y" ); + std::string modifiers = message_in.getValue( "modifiers" ); + + if ( event == "move" ) + { + if ( mMouseButtonDown ) + write_pixel( mouse_x, mouse_y, rand() % 0x80 + 0x80, rand() % 0x80 + 0x80, rand() % 0x80 + 0x80 ); + } + else + if ( event == "down" ) + { + mMouseButtonDown = true; + } + else + if ( event == "up" ) + { + mMouseButtonDown = false; + } + else + if ( event == "double_click" ) + { + }; + }; + } + else + if ( message_name == "key_event" ) + { + std::string event = message_in.getValue( "event" ); + S32 key = message_in.getValueS32( "key" ); + std::string modifiers = message_in.getValue( "modifiers" ); + + if ( event == "down" ) + { + if ( key == ' ') + { + mLastUpdateTime = 0; + update( 0 ); + }; + }; + } + else + { + //std::cerr << "MediaPluginExample::receiveMessage: unknown media message: " << message_string << std::endl; + }; + } + else + if ( message_class == LLPLUGIN_MESSAGE_CLASS_MEDIA_BROWSER ) + { + if ( message_name == "browse_reload" ) + { + mLastUpdateTime = 0; + mFirstTime = true; + mStopAction = false; + update( 0 ); + } + else + if ( message_name == "browse_stop" ) + { + for( int n = 0; n < ENumObjects; ++n ) + mXInc[ n ] = mYInc[ n ] = 0; + + mStopAction = true; + update( 0 ); + } + else + { + //std::cerr << "MediaPluginExample::receiveMessage: unknown media_browser message: " << message_string << std::endl; + }; + } + else + { + //std::cerr << "MediaPluginExample::receiveMessage: unknown message class: " << message_class << std::endl; + }; + }; +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginExample::write_pixel( int x, int y, unsigned char r, unsigned char g, unsigned char b ) +{ + // make sure we don't write outside the buffer + if ( ( x < 0 ) || ( x >= mWidth ) || ( y < 0 ) || ( y >= mHeight ) ) + return; + + if ( mBackgroundPixels != NULL ) + { + unsigned char *pixel = mBackgroundPixels; + pixel += y * mWidth * mDepth; + pixel += ( x * mDepth ); + pixel[ 0 ] = b; + pixel[ 1 ] = g; + pixel[ 2 ] = r; + + setDirty( x, y, x + 1, y + 1 ); + }; +} + +//////////////////////////////////////////////////////////////////////////////// +// +void MediaPluginExample::update( int milliseconds ) +{ + if ( mWidth < 1 || mWidth > 2048 || mHeight < 1 || mHeight > 2048 ) + return; + + if ( mPixels == 0 ) + return; + + if ( mFirstTime ) + { + for( int n = 0; n < ENumObjects; ++n ) + { + mXpos[ n ] = ( mWidth / 2 ) + rand() % ( mWidth / 16 ) - ( mWidth / 32 ); + mYpos[ n ] = ( mHeight / 2 ) + rand() % ( mHeight / 16 ) - ( mHeight / 32 ); + + mColorR[ n ] = rand() % 0x60 + 0x60; + mColorG[ n ] = rand() % 0x60 + 0x60; + mColorB[ n ] = rand() % 0x60 + 0x60; + + mXInc[ n ] = 0; + while ( mXInc[ n ] == 0 ) + mXInc[ n ] = rand() % 7 - 3; + + mYInc[ n ] = 0; + while ( mYInc[ n ] == 0 ) + mYInc[ n ] = rand() % 9 - 4; + + mBlockSize[ n ] = rand() % 0x30 + 0x10; + }; + + delete [] mBackgroundPixels; + + mBackgroundPixels = new unsigned char[ mWidth * mHeight * mDepth ]; + + mFirstTime = false; + }; + + if ( mStopAction ) + return; + + if ( time( NULL ) > mLastUpdateTime + 3 ) + { + const int num_squares = rand() % 20 + 4; + int sqr1_r = rand() % 0x80 + 0x20; + int sqr1_g = rand() % 0x80 + 0x20; + int sqr1_b = rand() % 0x80 + 0x20; + int sqr2_r = rand() % 0x80 + 0x20; + int sqr2_g = rand() % 0x80 + 0x20; + int sqr2_b = rand() % 0x80 + 0x20; + + for ( int y1 = 0; y1 < num_squares; ++y1 ) + { + for ( int x1 = 0; x1 < num_squares; ++x1 ) + { + int px_start = mWidth * x1 / num_squares; + int px_end = ( mWidth * ( x1 + 1 ) ) / num_squares; + int py_start = mHeight * y1 / num_squares; + int py_end = ( mHeight * ( y1 + 1 ) ) / num_squares; + + for( int y2 = py_start; y2 < py_end; ++y2 ) + { + for( int x2 = px_start; x2 < px_end; ++x2 ) + { + int rowspan = mWidth * mDepth; + + if ( ( y1 % 2 ) ^ ( x1 % 2 ) ) + { + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 0 ] = sqr1_r; + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 1 ] = sqr1_g; + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 2 ] = sqr1_b; + } + else + { + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 0 ] = sqr2_r; + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 1 ] = sqr2_g; + mBackgroundPixels[ y2 * rowspan + x2 * mDepth + 2 ] = sqr2_b; + }; + }; + }; + }; + }; + + time( &mLastUpdateTime ); + }; + + memcpy( mPixels, mBackgroundPixels, mWidth * mHeight * mDepth ); + + for( int n = 0; n < ENumObjects; ++n ) + { + if ( rand() % 50 == 0 ) + { + mXInc[ n ] = 0; + while ( mXInc[ n ] == 0 ) + mXInc[ n ] = rand() % 7 - 3; + + mYInc[ n ] = 0; + while ( mYInc[ n ] == 0 ) + mYInc[ n ] = rand() % 9 - 4; + }; + + if ( mXpos[ n ] + mXInc[ n ] < 0 || mXpos[ n ] + mXInc[ n ] >= mWidth - mBlockSize[ n ] ) + mXInc[ n ] =- mXInc[ n ]; + + if ( mYpos[ n ] + mYInc[ n ] < 0 || mYpos[ n ] + mYInc[ n ] >= mHeight - mBlockSize[ n ] ) + mYInc[ n ] =- mYInc[ n ]; + + mXpos[ n ] += mXInc[ n ]; + mYpos[ n ] += mYInc[ n ]; + + for( int y = 0; y < mBlockSize[ n ]; ++y ) + { + for( int x = 0; x < mBlockSize[ n ]; ++x ) + { + mPixels[ ( mXpos[ n ] + x ) * mDepth + ( mYpos[ n ] + y ) * mDepth * mWidth + 0 ] = mColorR[ n ]; + mPixels[ ( mXpos[ n ] + x ) * mDepth + ( mYpos[ n ] + y ) * mDepth * mWidth + 1 ] = mColorG[ n ]; + mPixels[ ( mXpos[ n ] + x ) * mDepth + ( mYpos[ n ] + y ) * mDepth * mWidth + 2 ] = mColorB[ n ]; + }; + }; + }; + + setDirty( 0, 0, mWidth, mHeight ); +}; + +//////////////////////////////////////////////////////////////////////////////// +// +bool MediaPluginExample::init() +{ + LLPluginMessage message( LLPLUGIN_MESSAGE_CLASS_MEDIA, "name_text" ); + message.setValue( "name", "Example Plugin" ); + sendMessage( message ); + + return true; +}; + +//////////////////////////////////////////////////////////////////////////////// +// +int init_media_plugin( LLPluginInstance::sendMessageFunction host_send_func, + void* host_user_data, + LLPluginInstance::sendMessageFunction *plugin_send_func, + void **plugin_user_data ) +{ + MediaPluginExample* self = new MediaPluginExample( host_send_func, host_user_data ); + *plugin_send_func = MediaPluginExample::staticReceiveMessage; + *plugin_user_data = ( void* )self; + + return 0; +} diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt index 88c4ba8ad9..53b981cccd 100644 --- a/indra/test_apps/llplugintest/CMakeLists.txt +++ b/indra/test_apps/llplugintest/CMakeLists.txt @@ -293,6 +293,7 @@ add_dependencies(llmediaplugintest SLPlugin media_plugin_quicktime media_plugin_webkit + media_plugin_example ${LLPLUGIN_LIBRARIES} ${LLMESSAGE_LIBRARIES} ${LLCOMMON_LIBRARIES} @@ -369,6 +370,12 @@ if (DARWIN OR WINDOWS) DEPENDS ${BUILT_QUICKTIME_PLUGIN} ) + get_target_property(BUILT_EXAMPLE_PLUGIN media_plugin_example LOCATION) + add_custom_command(TARGET llmediaplugintest POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${BUILT_EXAMPLE_PLUGIN} ${PLUGINS_DESTINATION_DIR} + DEPENDS ${BUILT_EXAMPLE_PLUGIN} + ) + # copy over bookmarks file if llmediaplugintest gets built get_target_property(BUILT_LLMEDIAPLUGINTEST llmediaplugintest LOCATION) add_custom_command(TARGET llmediaplugintest POST_BUILD diff --git a/indra/test_apps/llplugintest/bookmarks.txt b/indra/test_apps/llplugintest/bookmarks.txt index ef34167b29..b8b83df386 100644 --- a/indra/test_apps/llplugintest/bookmarks.txt +++ b/indra/test_apps/llplugintest/bookmarks.txt @@ -34,3 +34,4 @@ (QT) Movie - The Informers,http://movies.apple.com/movies/independent/theinformers/theinformers_h.320.mov (QT) Animated GIF,http://upload.wikimedia.org/wikipedia/commons/4/44/Optical.greysquares.arp-animated.gif (QT) Apple Text Descriptors,http://ubrowser.com/tmp/apple_text.txt +(EX) Example Plugin,example://blah diff --git a/indra/test_apps/llplugintest/llmediaplugintest.cpp b/indra/test_apps/llplugintest/llmediaplugintest.cpp index 553d1ab131..d987915bb8 100644 --- a/indra/test_apps/llplugintest/llmediaplugintest.cpp +++ b/indra/test_apps/llplugintest/llmediaplugintest.cpp @@ -138,8 +138,6 @@ LLMediaPluginTest::LLMediaPluginTest( int app_window, int window_width, int wind mMediaBrowserControlBackButtonFlag( true ), mMediaBrowserControlForwardButtonFlag( true ), mHomeWebUrl( "http://www.google.com/" ) - //mHomeWebUrl( "file:///C|/Program Files/QuickTime/Sample.mov" ) - //mHomeWebUrl( "http://movies.apple.com/movies/wb/watchmen/watchmen-tlr2_480p.mov" ) { // debugging spam std::cout << std::endl << " GLUT version: " << "3.7.6" << std::endl; // no way to get real version from GLUT @@ -277,8 +275,6 @@ void LLMediaPluginTest::bindTexture(GLuint texture, GLint row_length, GLint alig { glEnable( GL_TEXTURE_2D ); -// std::cerr << "binding texture " << texture << std::endl; - glBindTexture( GL_TEXTURE_2D, texture ); glPixelStorei( GL_UNPACK_ROW_LENGTH, row_length ); glPixelStorei( GL_UNPACK_ALIGNMENT, alignment ); @@ -410,7 +406,7 @@ void LLMediaPluginTest::draw( int draw_type ) // only bother with pick if we have something to render // Actually, we need to pick even if we're not ready to render. // Otherwise you can't select and remove a panel which has gone bad. -// if ( mMediaPanels[ panel ]->mReadyToRender ) + //if ( mMediaPanels[ panel ]->mReadyToRender ) { glMatrixMode( GL_TEXTURE ); glPushMatrix(); @@ -621,10 +617,10 @@ void LLMediaPluginTest::idle() if ( mSelectedPanel ) { // set volume based on slider if we have time media -// if ( mGluiMediaTimeControlWindowFlag ) -// { -// mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); -// }; + //if ( mGluiMediaTimeControlWindowFlag ) + //{ + // mSelectedPanel->mMediaSource->setVolume( (float)mMediaTimeControlVolume / 100.0f ); + //}; // NOTE: it is absurd that we need cache the state of GLUI controls // but enabling/disabling controls drags framerate from 500+ @@ -1463,6 +1459,9 @@ std::string LLMediaPluginTest::mimeTypeFromUrl( std::string& url ) else if ( url.find( ".txt" ) != std::string::npos ) // Apple Text descriptors mime_type = "video/quicktime"; + else + if ( url.find( "example://" ) != std::string::npos ) // Example plugin + mime_type = "example/example"; return mime_type; } @@ -1487,6 +1486,9 @@ std::string LLMediaPluginTest::pluginNameFromMimeType( std::string& mime_type ) else if ( mime_type == "text/html" ) plugin_name = "media_plugin_webkit.dll"; + else + if ( mime_type == "example/example" ) + plugin_name = "media_plugin_example.dll"; #elif LL_LINUX std::string plugin_name( "libmedia_plugin_null.so" ); @@ -1799,7 +1801,7 @@ void LLMediaPluginTest::getRandomMediaSize( int& width, int& height, std::string // adjust this random size if it's a browser so we get // a more useful size for testing.. - if ( mime_type == "text/html" ) + if ( mime_type == "text/html" || mime_type == "example/example" ) { width = ( ( rand() % 100 ) + 100 ) * 4; height = ( width * ( ( rand() % 400 ) + 1000 ) ) / 1000; -- cgit v1.2.3 From b44496495218ab6d005a065625dd5232af4869ce Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Fri, 30 Oct 2009 11:37:16 -0700 Subject: EXT-1962 Back button drop down menu now aligns to button. LLNavigationBar was passing coordinates to LLMenuGL::showPopup() in the wrong coordinate frame. Added comments to LLMenuGL to clarify which coordinate frame to use. Not reviewed. --- indra/llui/llmenugl.cpp | 4 ++-- indra/llui/llmenugl.h | 2 +- indra/newview/llnavigationbar.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 6e058e4c62..91e7e46195 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -2894,8 +2894,8 @@ void hide_top_view( LLView* view ) } -// x and y are the desired location for the popup, NOT necessarily the -// mouse location +// x and y are the desired location for the popup, in the spawning_view's +// coordinate frame, NOT necessarily the mouse location // static void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) { diff --git a/indra/llui/llmenugl.h b/indra/llui/llmenugl.h index 48887ec352..09d9e407c7 100644 --- a/indra/llui/llmenugl.h +++ b/indra/llui/llmenugl.h @@ -505,7 +505,7 @@ public: void buildDrawLabels(); void createJumpKeys(); - // Show popup at a specific location. + // Show popup at a specific location, in the spawn_view's coordinate frame static void showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y); // Whether to drop shadow menu bar diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp index 9a05812847..e63daac4af 100644 --- a/indra/newview/llnavigationbar.cpp +++ b/indra/newview/llnavigationbar.cpp @@ -517,8 +517,8 @@ void LLNavigationBar::showTeleportHistoryMenu() // *TODO: why to draw/update anything before showing the menu? mTeleportHistoryMenu->buildDrawLabels(); mTeleportHistoryMenu->updateParent(LLMenuGL::sMenuContainer); - LLRect btnBackRect = mBtnBack->getRect(); - LLMenuGL::showPopup(this, mTeleportHistoryMenu, btnBackRect.mLeft, btnBackRect.mBottom); + const S32 MENU_SPAWN_PAD = -1; + LLMenuGL::showPopup(mBtnBack, mTeleportHistoryMenu, 0, MENU_SPAWN_PAD); // *HACK pass the mouse capturing to the drop-down menu gFocusMgr.setMouseCapture( NULL ); -- cgit v1.2.3 From 0d9682113d28b9814374a784a9724aa1ba4bb942 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Fri, 30 Oct 2009 11:43:45 -0700 Subject: EXT-1980 - Bottom bar buttons retain highlight EXT-1936 - [BSI] Reversion - clicking on avatar name in group chat should bring up profile also fixed buttons not working on avatar list in IM window reviewed by Leyla --- indra/llui/llpanel.cpp | 2 -- indra/llui/llradiogroup.cpp | 2 +- indra/llui/lltexteditor.cpp | 34 ++++++++++++---------- indra/llui/lluictrl.cpp | 3 +- indra/llui/lluictrl.h | 3 +- indra/newview/llviewerwindow.cpp | 22 ++++++++++++-- .../skins/default/xui/en/panel_bottomtray.xml | 1 + .../newview/skins/default/xui/en/widgets/panel.xml | 3 +- 8 files changed, 46 insertions(+), 24 deletions(-) diff --git a/indra/llui/llpanel.cpp b/indra/llui/llpanel.cpp index 095200ddc3..56f3edd704 100644 --- a/indra/llui/llpanel.cpp +++ b/indra/llui/llpanel.cpp @@ -104,8 +104,6 @@ LLPanel::LLPanel(const LLPanel::Params& p) mEnableCallbackRegistrar(false), mXMLFilename(p.filename) { - setIsChrome(FALSE); - if (p.has_border) { addBorder(p.border); diff --git a/indra/llui/llradiogroup.cpp b/indra/llui/llradiogroup.cpp index f9f0307d17..86bd2f05ce 100644 --- a/indra/llui/llradiogroup.cpp +++ b/indra/llui/llradiogroup.cpp @@ -106,7 +106,7 @@ void LLRadioGroup::setIndexEnabled(S32 index, BOOL enabled) child->setEnabled(enabled); if (index == mSelectedIndex && enabled == FALSE) { - mSelectedIndex = -1; + setSelectedIndex(-1); } break; } diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index f0238dba49..3ce5a0320b 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -652,6 +652,13 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask) { BOOL handled = FALSE; + // set focus first, in case click callbacks want to change it + // RN: do we really need to have a tab stop? + if (hasTabStop()) + { + setFocus( TRUE ); + } + // Let scrollbar have first dibs handled = LLTextBase::handleMouseDown(x, y, mask); @@ -694,12 +701,6 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask) handled = TRUE; } - if (hasTabStop()) - { - setFocus( TRUE ); - handled = TRUE; - } - // Delay cursor flashing resetCursorBlink(); @@ -708,29 +709,32 @@ BOOL LLTextEditor::handleMouseDown(S32 x, S32 y, MASK mask) BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask) { - BOOL handled = LLTextBase::handleRightMouseDown(x, y, mask); - if (!handled && hasTabStop()) + if (hasTabStop()) + { + setFocus(TRUE); + } + if (!LLTextBase::handleRightMouseDown(x, y, mask)) { - setFocus( TRUE ); showContextMenu(x, y); - handled = TRUE; } - return handled; + return TRUE; } BOOL LLTextEditor::handleMiddleMouseDown(S32 x, S32 y, MASK mask) { - BOOL handled = FALSE; - handled = LLTextBase::handleMouseDown(x, y, mask); + if (hasTabStop()) + { + setFocus(TRUE); + } - if (!handled) + if (!LLTextBase::handleMouseDown(x, y, mask)) { - setFocus( TRUE ); if( canPastePrimary() ) { setCursorAtLocalPos( x, y, true ); + // does not rely on focus being set pastePrimary(); } } diff --git a/indra/llui/lluictrl.cpp b/indra/llui/lluictrl.cpp index 0faff5eff6..08fc8fb784 100644 --- a/indra/llui/lluictrl.cpp +++ b/indra/llui/lluictrl.cpp @@ -42,6 +42,7 @@ static LLDefaultChildRegistry::Register<LLUICtrl> r("ui_ctrl"); LLUICtrl::Params::Params() : tab_stop("tab_stop", true), + chrome("chrome", false), label("label"), initial_value("value"), init_callback("init_callback"), @@ -86,6 +87,7 @@ void LLUICtrl::initFromParams(const Params& p) { LLView::initFromParams(p); + setIsChrome(p.chrome); setControlName(p.control_name); if(p.enabled_controls.isProvided()) { @@ -582,7 +584,6 @@ void LLUICtrl::setIsChrome(BOOL is_chrome) // virtual BOOL LLUICtrl::getIsChrome() const { - LLView* parent_ctrl = getParent(); while(parent_ctrl) { diff --git a/indra/llui/lluictrl.h b/indra/llui/lluictrl.h index 45fe47772b..dd22851100 100644 --- a/indra/llui/lluictrl.h +++ b/indra/llui/lluictrl.h @@ -126,7 +126,8 @@ public: struct Params : public LLInitParam::Block<Params, LLView::Params> { Optional<std::string> label; - Optional<bool> tab_stop; + Optional<bool> tab_stop, + chrome; Optional<LLSD> initial_value; Optional<CommitCallbackParam> init_callback, diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index ba32e07464..b574a9c110 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2424,19 +2424,35 @@ void LLViewerWindow::updateUI() BOOL handled_by_top_ctrl = FALSE; LLUICtrl* top_ctrl = gFocusMgr.getTopCtrl(); LLMouseHandler* mouse_captor = gFocusMgr.getMouseCapture(); + LLView* captor_view = dynamic_cast<LLView*>(mouse_captor); + + //FIXME: only include captor and captor's ancestors if mouse is truly over them --RN //build set of views containing mouse cursor by traversing UI hierarchy and testing //screen rect against mouse cursor view_handle_set_t mouse_hover_set; - // start at current mouse captor (if is a view) or UI root - LLView* root_view = NULL; - root_view = dynamic_cast<LLView*>(mouse_captor); + // constraint mouse enter events to children of mouse captor + LLView* root_view = captor_view; + + // if mouse captor doesn't exist or isn't a LLView + // then allow mouse enter events on entire UI hierarchy if (!root_view) { root_view = mRootView; } + // include all ancestors of captor_view as automatically having mouse + if (captor_view) + { + LLView* captor_parent_view = captor_view->getParent(); + while(captor_parent_view) + { + mouse_hover_set.insert(captor_parent_view->getHandle()); + captor_parent_view = captor_parent_view->getParent(); + } + } + // aggregate visible views that contain mouse cursor in display order // while the top_ctrl contains the mouse cursor, only it and its descendants will receive onMouseEnter events diff --git a/indra/newview/skins/default/xui/en/panel_bottomtray.xml b/indra/newview/skins/default/xui/en/panel_bottomtray.xml index 9065c6b3e8..73a1bae1c6 100644 --- a/indra/newview/skins/default/xui/en/panel_bottomtray.xml +++ b/indra/newview/skins/default/xui/en/panel_bottomtray.xml @@ -10,6 +10,7 @@ left="0" name="bottom_tray" top="28" + chrome="true" border_visible="false" width="1000"> <layout_stack diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml index b81a70b845..2bcdd26f82 100644 --- a/indra/newview/skins/default/xui/en/widgets/panel.xml +++ b/indra/newview/skins/default/xui/en/widgets/panel.xml @@ -2,4 +2,5 @@ <panel bg_opaque_color="PanelFocusBackgroundColor" bg_alpha_color="PanelDefaultBackgroundColor" background_visible="false" - background_opaque="false"/> \ No newline at end of file + background_opaque="false" + chrome="false"/> \ No newline at end of file -- cgit v1.2.3 From e5f6f063c199a30297776801704caa8e41b609a3 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 30 Oct 2009 12:05:11 -0700 Subject: DEV-41705 - introduce new floater for nearby media based on Brian's design --- indra/newview/CMakeLists.txt | 2 ++ indra/newview/llviewerfloaterreg.cpp | 3 +++ indra/newview/skins/default/xui/en/menu_viewer.xml | 12 ++++++++++++ 3 files changed, 17 insertions(+) diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt index a7681e4a1d..0133d2222d 100644 --- a/indra/newview/CMakeLists.txt +++ b/indra/newview/CMakeLists.txt @@ -185,6 +185,7 @@ set(viewer_SOURCE_FILES llfloatermediasettings.cpp llfloatermemleak.cpp llfloaternamedesc.cpp + llfloaternearbymedia.cpp llfloaternotificationsconsole.cpp llfloateropenobject.cpp llfloaterparcel.cpp @@ -665,6 +666,7 @@ set(viewer_HEADER_FILES llfloatermediasettings.h llfloatermemleak.h llfloaternamedesc.h + llfloaternearbymedia.h llfloaternotificationsconsole.h llfloateropenobject.h llfloaterparcel.h diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index dace3f875f..9ca2d3f61d 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -80,6 +80,7 @@ #include "llfloatermap.h" #include "llfloatermemleak.h" #include "llfloaternamedesc.h" +#include "llfloaternearbymedia.h" #include "llfloaternotificationsconsole.h" #include "llfloateropenobject.h" #include "llfloaterpay.h" @@ -187,6 +188,8 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("mute_object_by_name", "floater_mute_object.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterGetBlockedObjectName>); LLFloaterReg::add("mini_map", "floater_map.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterMap>); LLFloaterReg::add("syswell_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLSysWellWindow>); + + LLFloaterReg::add("nearby_media", "floater_nearby_media.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNearbyMedia>); LLFloaterReg::add("notifications_console", "floater_notifications_console.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterNotificationConsole>); diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index a59a8b065f..3f63f493b1 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -167,6 +167,18 @@ function="Floater.Toggle" parameter="active_speakers" /> </menu_item_check> + <menu_item_check + label="Nearby Media" + layout="topleft" + name="Nearby Media" + shortcut="control|alt|N"> + <menu_item_check.on_check + function="Floater.Visible" + parameter="nearby_media" /> + <menu_item_check.on_click + function="Floater.Toggle" + parameter="nearby_media" /> + </menu_item_check> <!--menu_item_check label="Block List" layout="topleft" -- cgit v1.2.3 From 5702da187ddda62fd19e40c94ed35665c6d6101e Mon Sep 17 00:00:00 2001 From: callum <none@none> Date: Fri, 30 Oct 2009 12:53:13 -0700 Subject: Implementation for DEV-41993 Mutes media on preview widget in media settings/general panel --- indra/newview/llpanelmediasettingsgeneral.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/indra/newview/llpanelmediasettingsgeneral.cpp b/indra/newview/llpanelmediasettingsgeneral.cpp index 6a3617f008..a198499b47 100644 --- a/indra/newview/llpanelmediasettingsgeneral.cpp +++ b/indra/newview/llpanelmediasettingsgeneral.cpp @@ -134,6 +134,11 @@ void LLPanelMediaSettingsGeneral::draw() LLPluginClassMedia* media_plugin = mPreviewMedia->getMediaPlugin(); if( media_plugin ) { + // turn off volume (if we can) for preview. Note: this really only + // works for QuickTime movies right now - no way to control the + // volume of a flash app embedded in a page for example + media_plugin->setVolume( 0 ); + // some controls are only appropriate for time or browser type plugins // so we selectively enable/disable them - need to do it in draw // because the information from plugins arrives assynchronously -- cgit v1.2.3 From 043d2d1f9dbdacff46e24f73b184dac8532d2db6 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 12:33:25 -0700 Subject: Hooks for the "nearby media" UI. Added LLViewerMediaImpl::set/getDisabled(), which will prevent a media instance from loading. Added LLViewerMedia::set/getInWorldMediaDisabled(), which will disable all inworld media fom loading. Added LLViewerMedia::getPriorityList() and made the priority comparitor public. --- indra/newview/llviewermedia.cpp | 56 ++++++++++++++++++++++++++++++++++------- indra/newview/llviewermedia.h | 20 +++++++++++++++ 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index e2d9f5a2c9..e8835b34f0 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -168,8 +168,7 @@ public: viewer_media_t mMediaImpl; bool mInitialized; }; -typedef std::vector<LLViewerMediaImpl*> impl_list; -static impl_list sViewerMediaImplList; +static LLViewerMedia::impl_list sViewerMediaImplList; static LLTimer sMediaCreateTimer; static const F32 LLVIEWERMEDIA_CREATE_DELAY = 1.0f; static F32 sGlobalVolume = 1.0f; @@ -183,8 +182,8 @@ static void add_media_impl(LLViewerMediaImpl* media) ////////////////////////////////////////////////////////////////////////////////////////// static void remove_media_impl(LLViewerMediaImpl* media) { - impl_list::iterator iter = sViewerMediaImplList.begin(); - impl_list::iterator end = sViewerMediaImplList.end(); + LLViewerMedia::impl_list::iterator iter = sViewerMediaImplList.begin(); + LLViewerMedia::impl_list::iterator end = sViewerMediaImplList.end(); for(; iter != end; iter++) { @@ -203,6 +202,7 @@ class LLViewerMediaMuteListObserver : public LLMuteListObserver static LLViewerMediaMuteListObserver sViewerMediaMuteListObserver; static bool sViewerMediaMuteListObserverInitialized = false; +static bool sInWorldMediaDisabled = false; ////////////////////////////////////////////////////////////////////////////////////////// @@ -428,15 +428,31 @@ void LLViewerMedia::muteListChanged() } } +////////////////////////////////////////////////////////////////////////////////////////// +// static +void LLViewerMedia::setInWorldMediaDisabled(bool disabled) +{ + sInWorldMediaDisabled = disabled; +} + +////////////////////////////////////////////////////////////////////////////////////////// +// static +bool LLViewerMedia::getInWorldMediaDisabled() +{ + return sInWorldMediaDisabled; +} + +static const impl_list &getPriorityList(); + // This is the predicate function used to sort sViewerMediaImplList by priority. -static inline bool compare_impl_interest(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) +bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) { - if(i1->mIsMuted || i1->mMediaSourceFailed) + if(i1->isForcedUnloaded()) { // Muted or failed items always go to the end of the list, period. return false; } - else if(i2->mIsMuted || i2->mMediaSourceFailed) + else if(i2->isForcedUnloaded()) { // Muted or failed items always go to the end of the list, period. return true; @@ -483,7 +499,7 @@ void LLViewerMedia::updateMedia() } // Sort the static instance list using our interest criteria - std::stable_sort(sViewerMediaImplList.begin(), sViewerMediaImplList.end(), compare_impl_interest); + std::stable_sort(sViewerMediaImplList.begin(), sViewerMediaImplList.end(), priorityComparitor); // Go through the list again and adjust according to priority. iter = sViewerMediaImplList.begin(); @@ -515,7 +531,7 @@ void LLViewerMedia::updateMedia() LLPluginClassMedia::EPriority new_priority = LLPluginClassMedia::PRIORITY_NORMAL; - if(pimpl->mIsMuted || pimpl->mMediaSourceFailed || (impl_count_total > (int)max_instances)) + if(pimpl->isForcedUnloaded() || (impl_count_total > (int)max_instances)) { // Never load muted or failed impls. // Hard limit on the number of instances that will be loaded at one time @@ -641,6 +657,7 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mNeedsMuteCheck(false), mPreviousMediaState(MEDIA_NONE), mPreviousMediaTime(0.0f), + mIsDisabled(false), mIsUpdated(false) { @@ -1649,6 +1666,27 @@ void LLViewerMediaImpl::resetPreviousMediaState() mPreviousMediaTime = 0.0f; } +////////////////////////////////////////////////////////////////////////////////////////// +// +bool LLViewerMediaImpl::isForcedUnloaded() +{ + if(mIsMuted || mMediaSourceFailed || mIsDisabled) + { + return true; + } + + if(sInWorldMediaDisabled) + { + // When inworld media is disabled, all instances that aren't marked as "used in UI" will not be loaded. + if(!mUsedInUI) + { + return true; + } + } + + return false; +} + ////////////////////////////////////////////////////////////////////////////////////////// void LLViewerMediaImpl::handleMediaEvent(LLPluginClassMedia* plugin, LLPluginClassMediaOwner::EMediaEvent event) { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 5444abf854..043259a235 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -66,10 +66,15 @@ private: observerListType mObservers; }; +class LLViewerMediaImpl; + class LLViewerMedia { LOG_CLASS(LLViewerMedia); public: + + typedef std::vector<LLViewerMediaImpl*> impl_list; + // Special case early init for just web browser component // so we can show login screen. See .cpp file for details. JC @@ -97,6 +102,14 @@ class LLViewerMedia static void mediaStop(void*); static F32 getVolume(); static void muteListChanged(); + static void setInWorldMediaDisabled(bool disabled); + static bool getInWorldMediaDisabled(); + + // Returns the priority-sorted list of all media impls. + static const impl_list &getPriorityList(); + + // This is the comparitor used to sort the list. + static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) }; // Implementation functions not exported into header file @@ -179,6 +192,12 @@ public: bool hasMedia(); bool isMediaFailed() { return mMediaSourceFailed; }; void resetPreviousMediaState(); + + void setDisabled(bool disabled) { mIsDisabled = disabled; }; + bool isMediaDisabled() { return mIsDisabled; }; + + // returns true if this instance should not be loaded (disabled, muted object, crashed, etc.) + bool isForcedUnloaded(); ECursorType getLastSetCursor() { return mLastSetCursor; }; @@ -301,6 +320,7 @@ public: bool mNeedsMuteCheck; int mPreviousMediaState; F64 mPreviousMediaTime; + bool mIsDisabled; private: BOOL mIsUpdated ; -- cgit v1.2.3 From b6df544fc0842464235646293e1ccbd7d2941324 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 12:38:07 -0700 Subject: Fix for typo in my last commit. --- indra/newview/llviewermedia.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 043259a235..9d814b85b3 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -109,7 +109,7 @@ class LLViewerMedia static const impl_list &getPriorityList(); // This is the comparitor used to sort the list. - static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) + static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); }; // Implementation functions not exported into header file -- cgit v1.2.3 From 130fe8184d4fbf451d7f8e586eeceb02692fa6ef Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 12:48:44 -0700 Subject: Fix a couple other build issues with my previous commit. --- indra/newview/llviewermedia.cpp | 7 +++++-- indra/newview/llviewermedia.h | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index e8835b34f0..92022441b7 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -442,7 +442,10 @@ bool LLViewerMedia::getInWorldMediaDisabled() return sInWorldMediaDisabled; } -static const impl_list &getPriorityList(); +const LLViewerMedia::impl_list &getPriorityList() +{ + return sViewerMediaImplList; +} // This is the predicate function used to sort sViewerMediaImplList by priority. bool LLViewerMedia::priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2) @@ -1668,7 +1671,7 @@ void LLViewerMediaImpl::resetPreviousMediaState() ////////////////////////////////////////////////////////////////////////////////////////// // -bool LLViewerMediaImpl::isForcedUnloaded() +bool LLViewerMediaImpl::isForcedUnloaded() const { if(mIsMuted || mMediaSourceFailed || mIsDisabled) { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 9d814b85b3..f997dc8c0e 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -197,7 +197,7 @@ public: bool isMediaDisabled() { return mIsDisabled; }; // returns true if this instance should not be loaded (disabled, muted object, crashed, etc.) - bool isForcedUnloaded(); + bool isForcedUnloaded() const; ECursorType getLastSetCursor() { return mLastSetCursor; }; -- cgit v1.2.3 From c6c90642739b5b482c6347ddb816789d23b6a3aa Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Fri, 30 Oct 2009 16:37:39 -0400 Subject: EXT-1565 Menu bar clock now shows Pacific (PDT/PST) time, as does any other UI widget that references "slt" in the XML. --- indra/llcommon/llstring.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index f2edd5c559..721e5670e7 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -963,30 +963,29 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token, // if never fell into those two ifs above, param must be utc if (secFromEpoch < 0) secFromEpoch = 0; - LLDate * datetime = new LLDate((F64)secFromEpoch); + LLDate datetime((F64)secFromEpoch); std::string code = LLStringOps::getDatetimeCode (token); // special case to handle timezone if (code == "%Z") { if (param == "utc") + { replacement = "GMT"; - else if (param == "slt") - replacement = "SLT"; - else if (param != "local") // *TODO Vadim: not local? then what? + } + else if (param == "local") + { + replacement = ""; // user knows their own timezone + } + else + { + // "slt" = Second Life Time, which is deprecated. + // If not utc or user local time, fallback to Pacific time replacement = LLStringOps::getDaylightSavings() ? "PDT" : "PST"; - - return true; - } - replacement = datetime->toHTTPDateString(code); - - if (code.empty()) - { - return false; - } - else - { + } return true; } + replacement = datetime.toHTTPDateString(code); + return !code.empty(); } // LLStringUtil::format recogizes the following patterns. -- cgit v1.2.3 From 346458e81108cbc102d3f4e1802b3779851490ee Mon Sep 17 00:00:00 2001 From: "Eric M. Tulla (BigPapi)" <tulla@lindenlab.com> Date: Fri, 30 Oct 2009 17:45:16 -0400 Subject: Fix for EXT-1817. Tattoos now default to transparent. Old behavior was setting your skin to white, since they were defaulting to the blank texture. -Reviewed by nyx --- indra/newview/app_settings/settings.xml | 11 ----------- indra/newview/llvoavatardefines.cpp | 11 +++-------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index f9d4a06de8..f3c4e96229 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -8996,17 +8996,6 @@ <key>Value</key> <string>5748decc-f629-461c-9a36-a35a221fe21f</string> </map> - <key>UIImgDefaultTattooUUID</key> - <map> - <key>Comment</key> - <string /> - <key>Persist</key> - <integer>0</integer> - <key>Type</key> - <string>String</string> - <key>Value</key> - <string>5748decc-f629-461c-9a36-a35a221fe21f</string> - </map> <key>UIImgDefaultUnderwearUUID</key> <map> <key>Comment</key> diff --git a/indra/newview/llvoavatardefines.cpp b/indra/newview/llvoavatardefines.cpp index 17b502ae80..5624f19c8d 100644 --- a/indra/newview/llvoavatardefines.cpp +++ b/indra/newview/llvoavatardefines.cpp @@ -68,9 +68,9 @@ LLVOAvatarDictionary::Textures::Textures() addEntry(TEX_EYES_ALPHA, new TextureEntry("eyes_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); addEntry(TEX_HAIR_ALPHA, new TextureEntry("hair_alpha", TRUE, BAKED_NUM_INDICES, "UIImgDefaultAlphaUUID", WT_ALPHA)); - addEntry(TEX_HEAD_TATTOO, new TextureEntry("head_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); - addEntry(TEX_UPPER_TATTOO, new TextureEntry("upper_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); - addEntry(TEX_LOWER_TATTOO, new TextureEntry("lower_tattoo", TRUE, BAKED_NUM_INDICES, "UIImgDefaultTattooUUID", WT_TATTOO)); + addEntry(TEX_HEAD_TATTOO, new TextureEntry("head_tattoo", TRUE, BAKED_NUM_INDICES, "", WT_TATTOO)); + addEntry(TEX_UPPER_TATTOO, new TextureEntry("upper_tattoo", TRUE, BAKED_NUM_INDICES, "", WT_TATTOO)); + addEntry(TEX_LOWER_TATTOO, new TextureEntry("lower_tattoo", TRUE, BAKED_NUM_INDICES, "", WT_TATTOO)); addEntry(TEX_HEAD_BAKED, new TextureEntry("head-baked", FALSE, BAKED_HEAD)); addEntry(TEX_UPPER_BAKED, new TextureEntry("upper-baked", FALSE, BAKED_UPPER)); @@ -248,8 +248,6 @@ EBakedTextureIndex LLVOAvatarDictionary::findBakedByRegionName(std::string name) //static const LLUUID LLVOAvatarDictionary::getDefaultTextureImageID(ETextureIndex index) { - /* switch( index ) - case TEX_UPPER_SHIRT: return LLUUID( gSavedSettings.getString("UIImgDefaultShirtUUID") ); */ const TextureEntry *texture_dict = getInstance()->getTexture(index); const std::string &default_image_name = texture_dict->mDefaultImageName; if (default_image_name == "") @@ -265,9 +263,6 @@ const LLUUID LLVOAvatarDictionary::getDefaultTextureImageID(ETextureIndex index) // static EWearableType LLVOAvatarDictionary::getTEWearableType(ETextureIndex index ) { - /* switch(index) - case TEX_UPPER_SHIRT: - return WT_SHIRT; */ return getInstance()->getTexture(index)->mWearableType; } -- cgit v1.2.3 From d34c8d633728300e7a46a3248ec2c23b01098477 Mon Sep 17 00:00:00 2001 From: "Justin C. Rounds (Chuck)" <chuck@lindenlab.com> Date: Fri, 30 Oct 2009 17:49:00 -0400 Subject: Made MapAvatarFriendColor Yellow (and added Yellow to color list). https://jira.secondlife.com/browse/EXT-2006 --- indra/newview/skins/default/colors.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/newview/skins/default/colors.xml b/indra/newview/skins/default/colors.xml index 6e22472153..1e0da13162 100644 --- a/indra/newview/skins/default/colors.xml +++ b/indra/newview/skins/default/colors.xml @@ -65,6 +65,9 @@ <color name="Blue" value="0 0 1 1" /> + <color + name="Yellow" + value="1 1 0 1" /> <color name="Unused?" value="1 0 1 1" /> @@ -411,7 +414,7 @@ reference="Green" /> <color name="MapAvatarFriendColor" - reference="Unused?" /> + reference="Yellow" /> <color name="MapAvatarSelfColor" value="0.53125 0 0.498047 1" /> -- cgit v1.2.3 From 59c6dc7ed6be989a9fd7a0688fe6e823d3b68baa Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Fri, 30 Oct 2009 17:54:22 -0400 Subject: Floaters can be resized again - fix for regression introduced yesterday by me. Floater drag handle visibility/enablement was getting lost during construction. Reviewed with Richard. --- indra/llui/llfloater.cpp | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/indra/llui/llfloater.cpp b/indra/llui/llfloater.cpp index c8e26ecaea..37ff15ac58 100644 --- a/indra/llui/llfloater.cpp +++ b/indra/llui/llfloater.cpp @@ -267,21 +267,14 @@ LLFloater::LLFloater(const LLSD& key, const LLFloater::Params& p) mButtonsEnabled[i] = FALSE; mButtons[i] = NULL; } - for (S32 i = 0; i < 4; i++) - { - mResizeBar[i] = NULL; - mResizeHandle[i] = NULL; - } + addDragHandle(); + addResizeCtrls(); initFromParams(p); // chrome floaters don't take focus at all setFocusRoot(!getIsChrome()); - addDragHandle(); - addResizeCtrls(); - enableResizeCtrls(mResizable); - initFloater(); } @@ -2560,7 +2553,7 @@ void LLFloater::setupParamsForExport(Params& p, LLView* parent) void LLFloater::initFromParams(const LLFloater::Params& p) { - // *NOTE: We have too many classes derived from LLPanel to retrofit them + // *NOTE: We have too many classes derived from LLFloater to retrofit them // all to pass in params via constructors. So we use this method. // control_name, tab_stop, focus_lost_callback, initial_value, rect, enabled, visible @@ -2574,11 +2567,10 @@ void LLFloater::initFromParams(const LLFloater::Params& p) setCanMinimize(p.can_minimize); setCanClose(p.can_close); setCanDock(p.can_dock); + setCanResize(p.can_resize); + setResizeLimits(p.min_width, p.min_height); mDragOnLeft = p.can_drag_on_left; - mResizable = p.can_resize; - mMinWidth = p.min_width; - mMinHeight = p.min_height; mHeaderHeight = p.header_height; mLegacyHeaderHeight = p.legacy_header_height; mSingleInstance = p.single_instance; -- cgit v1.2.3 From d6363c6c7ad32ecd12ca0bae849505a6181fb9e2 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 14:07:23 -0700 Subject: Fixed a couple problems with getPriorityList(). --- indra/newview/llviewermedia.cpp | 2 +- indra/newview/llviewermedia.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 92022441b7..f9e09036a8 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -442,7 +442,7 @@ bool LLViewerMedia::getInWorldMediaDisabled() return sInWorldMediaDisabled; } -const LLViewerMedia::impl_list &getPriorityList() +LLViewerMedia::impl_list &LLViewerMedia::getPriorityList() { return sViewerMediaImplList; } diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index f997dc8c0e..1a4d2cd3c6 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -106,7 +106,7 @@ class LLViewerMedia static bool getInWorldMediaDisabled(); // Returns the priority-sorted list of all media impls. - static const impl_list &getPriorityList(); + static impl_list &getPriorityList(); // This is the comparitor used to sort the list. static bool priorityComparitor(const LLViewerMediaImpl* i1, const LLViewerMediaImpl* i2); -- cgit v1.2.3 From 494b07668b86e3160ef3e549e207049c8a6870ee Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Fri, 30 Oct 2009 14:38:48 -0700 Subject: Add Inventory Look folder (open / closed) and Generic Object art EXT-2042 --- .../skins/default/textures/icons/Generic_Object_Small.png | Bin 0 -> 410 bytes .../skins/default/textures/icons/Inv_LookFolderClosed.png | Bin 0 -> 391 bytes .../skins/default/textures/icons/Inv_LookFolderOpen.png | Bin 0 -> 538 bytes indra/newview/skins/default/textures/textures.xml | 9 +++++++-- 4 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 indra/newview/skins/default/textures/icons/Generic_Object_Small.png create mode 100644 indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png create mode 100644 indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png diff --git a/indra/newview/skins/default/textures/icons/Generic_Object_Small.png b/indra/newview/skins/default/textures/icons/Generic_Object_Small.png new file mode 100644 index 0000000000..223874e631 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Generic_Object_Small.png differ diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png new file mode 100644 index 0000000000..f2ae828efc Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_LookFolderClosed.png differ diff --git a/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png b/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png new file mode 100644 index 0000000000..d454d4cd48 Binary files /dev/null and b/indra/newview/skins/default/textures/icons/Inv_LookFolderOpen.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f0d27ac11d..d2c0ab9ae2 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -98,6 +98,9 @@ <texture name="Generic_Group" file_name="icons/Generic_Group.png" preload="false" /> <texture name="Generic_Group_Large" file_name="icons/Generic_Group_Large.png" preload="false" /> + <texture name="Generic_Object_Medium" file_name="icons/Generic_Object_Medium.png" preload="false" /> + <texture name="Generic_Object_Small" file_name="icons/ Generic_Object_Small.png" preload="false" /> + <texture name="Generic_Object_Large" file_name="icons/Generic_Object_Large.png" preload="false" /> <texture name="Generic_Person" file_name="icons/Generic_Person.png" preload="false" /> <texture name="Generic_Person_Large" file_name="icons/Generic_Person_Large.png" preload="false" /> @@ -161,6 +164,8 @@ <texture name="Inv_Gloves" file_name="icons/Inv_Gloves.png" preload="false" /> <texture name="Inv_Hair" file_name="icons/Inv_Hair.png" preload="false" /> <texture name="Inv_Jacket" file_name="icons/Inv_Jacket.png" preload="false" /> + <texture name="Inv_LookFolderOpen" file_name="icons/Inv_LookFolderOpen.png" preload="false" /> + <texture name="Inv_LookFolderClosed" file_name="icons/Inv_LookFolderClosed.png" preload="false" /> <texture name="Inv_Landmark" file_name="icons/Inv_Landmark.png" preload="false" /> <texture name="Inv_Notecard" file_name="icons/Inv_Notecard.png" preload="false" /> <texture name="Inv_Object" file_name="icons/Inv_Object.png" preload="false" /> @@ -433,9 +438,9 @@ <texture name="Widget_DownArrow" file_name="icons/Widget_DownArrow.png" preload="true" /> <texture name="Widget_UpArrow" file_name="icons/Widget_UpArrow.png" preload="true" /> - <texture name="Window_Background" file_name="windows/Window_Background.png" preload="true" + <texture name="Window_Background" file_name="windows/Window_Background.png" preload="true" scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> - <texture name="Window_Foreground" file_name="windows/Window_Foreground.png" preload="true" + <texture name="Window_Foreground" file_name="windows/Window_Foreground.png" preload="true" scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> <texture name="Window_NoTitle_Background" file_name="windows/Window_NoTitle_Background.png" preload="true" scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> -- cgit v1.2.3 From 1fbacbaa9ac002f7f5ae9a0a18ef985a8ec934c7 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 14:52:33 -0700 Subject: Partial implementation of LLFloaterNearbyMedia::refreshList(), with many TODO sections and a bit of ifdef-ed out pseudocode. Initial pass at LLViewerMediaImpl::getProximity(). Currently it just returns the position in the priority list, but that will change. --- indra/newview/llviewermedia.cpp | 15 +++++++++++++++ indra/newview/llviewermedia.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index f9e09036a8..249b55d2ab 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -512,6 +512,7 @@ void LLViewerMedia::updateMedia() int impl_count_total = 0; int impl_count_interest_low = 0; int impl_count_interest_normal = 0; + int i = 0; #if 0 LL_DEBUGS("PluginPriority") << "Sorted impls:" << llendl; @@ -602,6 +603,17 @@ void LLViewerMedia::updateMedia() } pimpl->setPriority(new_priority); + + if(!pimpl->getUsedInUI()) + { + // Any impls used in the UI should not be in the proximity list. + pimpl->mProximity = -1; + } + else + { + // Other impls just get the same ordering as the priority list (for now). + pimpl->mProximity = i; + } #if 0 LL_DEBUGS("PluginPriority") << " " << pimpl @@ -614,6 +626,8 @@ void LLViewerMedia::updateMedia() #endif total_cpu += pimpl->getCPUUsage(); + + i++; } LL_DEBUGS("PluginPriority") << "Total reported CPU usage is " << total_cpu << llendl; @@ -661,6 +675,7 @@ LLViewerMediaImpl::LLViewerMediaImpl( const LLUUID& texture_id, mPreviousMediaState(MEDIA_NONE), mPreviousMediaTime(0.0f), mIsDisabled(false), + mProximity(-1), mIsUpdated(false) { diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index 1a4d2cd3c6..ee7f84b4cd 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -257,6 +257,7 @@ public: void calculateInterest(); F64 getInterest() const { return mInterest; }; F64 getApproximateTextureInterest(); + S32 getProximity() { return mProximity; }; // Mark this object as being used in a UI panel instead of on a prim // This will be used as part of the interest sorting algorithm. @@ -321,6 +322,7 @@ public: int mPreviousMediaState; F64 mPreviousMediaTime; bool mIsDisabled; + S32 mProximity; private: BOOL mIsUpdated ; -- cgit v1.2.3 From b4ef9d2ab54dd0ba1893b38a7872b62495ea1073 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Fri, 30 Oct 2009 15:38:39 -0700 Subject: EXT-2046 Add You are Here and For Sale icons --- .../skins/default/textures/icons/ForSale_Badge.png | Bin 0 -> 5727 bytes .../skins/default/textures/icons/YouAreHere_Badge.png | Bin 0 -> 6143 bytes indra/newview/skins/default/textures/textures.xml | 3 +++ 3 files changed, 3 insertions(+) create mode 100644 indra/newview/skins/default/textures/icons/ForSale_Badge.png create mode 100644 indra/newview/skins/default/textures/icons/YouAreHere_Badge.png diff --git a/indra/newview/skins/default/textures/icons/ForSale_Badge.png b/indra/newview/skins/default/textures/icons/ForSale_Badge.png new file mode 100644 index 0000000000..5bee570cee Binary files /dev/null and b/indra/newview/skins/default/textures/icons/ForSale_Badge.png differ diff --git a/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png b/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png new file mode 100644 index 0000000000..c057e9743d Binary files /dev/null and b/indra/newview/skins/default/textures/icons/YouAreHere_Badge.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index d2c0ab9ae2..79c70c4d8f 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -93,6 +93,7 @@ <texture name="FileMenu_BarSelect" file_name="navbar/FileMenu_BarSelect.png" preload="false" scale.left="2" scale.top="0" scale.right="2" scale.bottom="0" /> <texture name="FileMenu_BG" file_name="navbar/FileMenu_BG.png" preload="false" /> + <texture name="ForSale_Badge" file_name="icons/ForSale_Badge.png" preload="false" /> <texture name="ForwardArrow_Off" file_name="icons/ForwardArrow_Off.png" preload="false" /> <texture name="ForwardArrow_Press" file_name="icons/ForwardArrow_Press.png" preload="false" /> @@ -447,6 +448,8 @@ <texture name="Window_NoTitle_Foreground" file_name="windows/Window_NoTitle_Foreground.png" preload="true" scale.left="4" scale.top="24" scale.right="26" scale.bottom="4" /> + <texture name="YouAreHere_Badge" file_name="icons/YouAreHere_Badge.png" preload="false" /> + <!--WARNING OLD ART *do not use*--> <texture name="btn_chatbar.tga" scale.left="20" scale.top="24" scale.right="44" scale.bottom="0" /> -- cgit v1.2.3 From c54faf28236dce5cf35233bf37ae64bd6837776f Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 30 Oct 2009 16:01:58 -0700 Subject: Fix crash in LLMultiFloater::setCanResize() Reviewed (conceptually) by Richard and James --- indra/llui/llfloaterreg.cpp | 2 +- indra/llui/llmultifloater.cpp | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/indra/llui/llfloaterreg.cpp b/indra/llui/llfloaterreg.cpp index d60a879410..8bb9e0d9ff 100644 --- a/indra/llui/llfloaterreg.cpp +++ b/indra/llui/llfloaterreg.cpp @@ -127,7 +127,7 @@ LLFloater* LLFloaterReg::getInstance(const std::string& name, const LLSD& key) bool success = LLUICtrlFactory::getInstance()->buildFloater(res, xui_file, NULL); if (!success) { - llwarns << "Failed to buid floater type: '" << name << "'." << llendl; + llwarns << "Failed to build floater type: '" << name << "'." << llendl; return NULL; } diff --git a/indra/llui/llmultifloater.cpp b/indra/llui/llmultifloater.cpp index 7d21c7e0c1..78738c826d 100644 --- a/indra/llui/llmultifloater.cpp +++ b/indra/llui/llmultifloater.cpp @@ -434,6 +434,7 @@ void LLMultiFloater::onTabSelected() void LLMultiFloater::setCanResize(BOOL can_resize) { LLFloater::setCanResize(can_resize); + if (!mTabContainer) return; if (isResizable() && mTabContainer->getTabPosition() == LLTabContainer::BOTTOM) { mTabContainer->setRightTabBtnOffset(RESIZE_HANDLE_WIDTH); @@ -457,6 +458,8 @@ BOOL LLMultiFloater::postBuild() } mTabContainer = getChild<LLTabContainer>("Preview Tabs"); + + setCanResize(mResizable); return TRUE; } -- cgit v1.2.3 From 9abcf6684e86b0b8c2d343ccd4864b2e854be3d7 Mon Sep 17 00:00:00 2001 From: Rick Pasetto <rick@lindenlab.com> Date: Fri, 30 Oct 2009 16:08:49 -0700 Subject: Add implementation for adding and removing items to and from the nearby media list scroll control --- indra/newview/llviewermedia.cpp | 2 +- indra/newview/llviewermedia.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 249b55d2ab..b623185e0b 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -1597,7 +1597,7 @@ LLViewerMediaTexture* LLViewerMediaImpl::updatePlaceholderImage() ////////////////////////////////////////////////////////////////////////////////////////// -LLUUID LLViewerMediaImpl::getMediaTextureID() +LLUUID LLViewerMediaImpl::getMediaTextureID() const { return mTextureId; } diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index ee7f84b4cd..b04432730a 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -172,7 +172,7 @@ public: bool handleUnicodeCharHere(llwchar uni_char); bool canNavigateForward(); bool canNavigateBack(); - std::string getMediaURL() { return mMediaURL; } + std::string getMediaURL() const { return mMediaURL; } std::string getCurrentMediaURL(); std::string getHomeURL() { return mHomeURL; } void setHomeURL(const std::string& home_url) { mHomeURL = home_url; }; @@ -181,7 +181,7 @@ public: void update(); void updateImagesMediaStreams(); - LLUUID getMediaTextureID(); + LLUUID getMediaTextureID() const; void suspendUpdates(bool suspend) { mSuspendUpdates = suspend; }; void setVisible(bool visible); -- cgit v1.2.3 From 123db56856ef0451e28fe7ac7ce3bcc27d3066f1 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 17:32:23 -0700 Subject: Initial pass at filling in the list in the nearby media floater. --- indra/newview/llviewermedia.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index b623185e0b..44bffd2a08 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -604,7 +604,7 @@ void LLViewerMedia::updateMedia() pimpl->setPriority(new_priority); - if(!pimpl->getUsedInUI()) + if(pimpl->getUsedInUI()) { // Any impls used in the UI should not be in the proximity list. pimpl->mProximity = -1; -- cgit v1.2.3 From b82bda605d85fe9b1ad69ce36a36de18a2924924 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Fri, 30 Oct 2009 17:46:01 -0700 Subject: EXT-2018 PRofile "Real World" descripton scrolls before showing "More" link EXT-2011 titles of IM sessions aren't aligned to center EXT-3025 Pick's description overlaps picks name also moved tool tip param default to tool_tip.xml also made default param<const LLFontGL*> be SansSerif reviewed by Leyla --- indra/llui/llscrolllistcolumn.cpp | 15 ++++++++++ indra/llui/llscrolllistcolumn.h | 15 +--------- indra/llui/lltextbase.cpp | 29 ++++++++++++-------- indra/llui/lltextbase.h | 3 ++ indra/llui/lltooltip.cpp | 32 ++++++++++------------ indra/llui/lltooltip.h | 15 ++++------ indra/llui/llui.cpp | 5 ---- indra/llui/llui.h | 14 ++++++++++ indra/newview/llexpandabletextbox.cpp | 7 ++++- indra/newview/llexpandabletextbox.h | 10 ------- indra/newview/llpanelpicks.cpp | 8 +++--- indra/newview/skins/default/textures/textures.xml | 3 ++ .../skins/default/xui/en/panel_pick_list_item.xml | 2 +- .../default/xui/en/widgets/expandable_text.xml | 2 +- 14 files changed, 86 insertions(+), 74 deletions(-) diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index 073e14386f..ba53f84877 100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp @@ -47,6 +47,21 @@ const S32 MIN_COLUMN_WIDTH = 20; //--------------------------------------------------------------------------- // LLScrollColumnHeader //--------------------------------------------------------------------------- +LLScrollColumnHeader::Params::Params() +: column("column") +{ + name = "column_header"; + image_unselected.name("square_btn_32x128.tga"); + image_selected.name("square_btn_selected_32x128.tga"); + image_disabled.name("square_btn_32x128.tga"); + image_disabled_selected.name("square_btn_selected_32x128.tga"); + image_overlay.name("combobox_arrow.tga"); + image_overlay_alignment("right"); + font_halign = LLFontGL::LEFT; + tab_stop(false); + scale_image(true); +} + LLScrollColumnHeader::LLScrollColumnHeader(const LLScrollColumnHeader::Params& p) : LLButton(p), // use combobox params to steal images diff --git a/indra/llui/llscrolllistcolumn.h b/indra/llui/llscrolllistcolumn.h index 23318fd7c4..5aef6e8e94 100644 --- a/indra/llui/llscrolllistcolumn.h +++ b/indra/llui/llscrolllistcolumn.h @@ -50,20 +50,7 @@ public: { Mandatory<LLScrollListColumn*> column; - Params() - : column("column") - { - name = "column_header"; - image_unselected.name("square_btn_32x128.tga"); - image_selected.name("square_btn_selected_32x128.tga"); - image_disabled.name("square_btn_32x128.tga"); - image_disabled_selected.name("square_btn_selected_32x128.tga"); - image_overlay.name("combobox_arrow.tga"); - image_overlay_alignment("right"); - font_halign = LLFontGL::LEFT; - tab_stop(false); - scale_image(true); - } + Params(); }; LLScrollColumnHeader(const Params&); ~LLScrollColumnHeader(); diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 2b1d677ffb..9a26f0b472 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -933,13 +933,16 @@ BOOL LLTextBase::handleToolTip(S32 x, S32 y, MASK mask) void LLTextBase::reshape(S32 width, S32 height, BOOL called_from_parent) { - LLUICtrl::reshape( width, height, called_from_parent ); + if (width != getRect().getWidth() || height != getRect().getHeight()) + { + LLUICtrl::reshape( width, height, called_from_parent ); - // do this first after reshape, because other things depend on - // up-to-date mTextRect - updateRects(); - - needsReflow(); + // do this first after reshape, because other things depend on + // up-to-date mTextRect + updateRects(); + + needsReflow(); + } } void LLTextBase::draw() @@ -1193,11 +1196,10 @@ void LLTextBase::reflow(S32 start_index) //llassert_always(getLocalRectFromDocIndex(mScrollIndex).mBottom == first_char_rect.mBottom); } } - } - - // reset desired x cursor position - updateCursorXPos(); + // reset desired x cursor position + updateCursorXPos(); + } } LLRect LLTextBase::getContentsRect() @@ -2108,9 +2110,12 @@ LLRect LLTextBase::getVisibleDocumentRect() const } else { - // entire document rect when not scrolling + // entire document rect is visible when not scrolling + // but offset according to height of widget LLRect doc_rect = mDocumentView->getLocalRect(); - doc_rect.translate(-mDocumentView->getRect().mLeft, -mDocumentView->getRect().mBottom); + doc_rect.mLeft -= mDocumentView->getRect().mLeft; + // adjust for height of text above widget baseline + doc_rect.mBottom = llmin(0, doc_rect.getHeight() - mTextRect.getHeight()); return doc_rect; } } diff --git a/indra/llui/lltextbase.h b/indra/llui/lltextbase.h index 14fd786127..4cca522a23 100644 --- a/indra/llui/lltextbase.h +++ b/indra/llui/lltextbase.h @@ -154,6 +154,9 @@ public: LLRect getContentsRect(); LLRect getVisibleDocumentRect() const; + S32 getVPad() { return mVPad; } + S32 getHPad() { return mHPad; } + S32 getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round ) const; LLRect getLocalRectFromDocIndex(S32 pos) const; diff --git a/indra/llui/lltooltip.cpp b/indra/llui/lltooltip.cpp index 34501ae080..23c87c7522 100644 --- a/indra/llui/lltooltip.cpp +++ b/indra/llui/lltooltip.cpp @@ -161,10 +161,7 @@ LLToolTip::Params::Params() web_based_media("web_based_media", false), media_playing("media_playing", false) { - name = "tooltip"; - font = LLFontGL::getFontSansSerif(); - bg_opaque_color = LLUIColorTable::instance().getColor( "ToolTipBgColor" ); - background_visible = true; + chrome = true; } LLToolTip::LLToolTip(const LLToolTip::Params& p) @@ -208,6 +205,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) icon_params.rect = icon_rect; //icon_params.follows.flags = FOLLOWS_LEFT | FOLLOWS_BOTTOM; icon_params.image_unselected(imagep); + icon_params.image_selected(imagep); icon_params.scale_image(true); icon_params.flash_color(icon_params.highlight_color()); mInfoButton = LLUICtrlFactory::create<LLButton>(icon_params); @@ -221,7 +219,7 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) mTextBox->translate(TOOLTIP_ICON_SIZE + mPadding, 0); } - if (p.time_based_media.isProvided() && p.time_based_media == true) + if (p.time_based_media) { LLButton::Params p_button; p_button.name(std::string("play_media")); @@ -238,17 +236,14 @@ LLToolTip::LLToolTip(const LLToolTip::Params& p) { mPlayMediaButton->setCommitCallback(boost::bind(p.click_playmedia_callback())); } - if(p.media_playing.isProvided()) - { - mPlayMediaButton->setToggleState(p.media_playing); - } + mPlayMediaButton->setToggleState(p.media_playing); addChild(mPlayMediaButton); // move text over to fit image in mTextBox->translate(TOOLTIP_PLAYBUTTON_SIZE + mPadding, 0); } - if (p.web_based_media.isProvided() && p.web_based_media == true) + if (p.web_based_media) { LLButton::Params p_w_button; p_w_button.name(std::string("home_page")); @@ -455,7 +450,10 @@ void LLToolTipMgr::show(const std::string& msg) void LLToolTipMgr::show(const LLToolTip::Params& params) { - if (!params.validateBlock()) + // fill in default tooltip params from tool_tip.xml + LLToolTip::Params params_with_defaults(params); + params_with_defaults.fillFrom(LLUICtrlFactory::instance().getDefaultParams<LLToolTip>()); + if (!params_with_defaults.validateBlock()) { llwarns << "Could not display tooltip!" << llendl; return; @@ -467,12 +465,12 @@ void LLToolTipMgr::show(const LLToolTip::Params& params) // are we ready to show the tooltip? if (!mToolTipsBlocked // we haven't hit a key, moved the mouse, etc. - && LLUI::getMouseIdleTime() > params.delay_time) // the mouse has been still long enough + && LLUI::getMouseIdleTime() > params_with_defaults.delay_time) // the mouse has been still long enough { - bool tooltip_changed = mLastToolTipParams.message() != params.message() - || mLastToolTipParams.pos() != params.pos() - || mLastToolTipParams.time_based_media() != params.time_based_media() - || mLastToolTipParams.web_based_media() != params.web_based_media(); + bool tooltip_changed = mLastToolTipParams.message() != params_with_defaults.message() + || mLastToolTipParams.pos() != params_with_defaults.pos() + || mLastToolTipParams.time_based_media() != params_with_defaults.time_based_media() + || mLastToolTipParams.web_based_media() != params_with_defaults.web_based_media(); bool tooltip_shown = mToolTip && mToolTip->getVisible() @@ -480,7 +478,7 @@ void LLToolTipMgr::show(const LLToolTip::Params& params) mNeedsToolTip = tooltip_changed || !tooltip_shown; // store description of tooltip for later creation - mNextToolTipParams = params; + mNextToolTipParams = params_with_defaults; } } diff --git a/indra/llui/lltooltip.h b/indra/llui/lltooltip.h index 4a5f60f93d..30d251266c 100644 --- a/indra/llui/lltooltip.h +++ b/indra/llui/lltooltip.h @@ -78,16 +78,13 @@ public: visible_time_far; // time for which tooltip is visible while mouse moved away Optional<LLRect> sticky_rect; Optional<const LLFontGL*> font; - - Optional<click_callback_t> click_callback; Optional<LLUIImage*> image; - - - Optional<bool> time_based_media; - Optional<bool> web_based_media; - Optional<bool> media_playing; - Optional<click_callback_t> click_playmedia_callback; - Optional<click_callback_t> click_homepage_callback; + Optional<bool> time_based_media, + web_based_media, + media_playing; + Optional<click_callback_t> click_callback, + click_playmedia_callback, + click_homepage_callback; Optional<S32> max_width; Optional<S32> padding; Optional<bool> wrap; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 48504a1e54..a82e6eb372 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -1953,11 +1953,6 @@ namespace LLInitParam } } - if (mData.mValue == NULL) - { - mData.mValue = LLFontGL::getFontDefault(); - } - // default to current value return mData.mValue; } diff --git a/indra/llui/llui.h b/indra/llui/llui.h index efb1b0a36f..5ec07f1941 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -404,6 +404,20 @@ namespace LLInitParam LLUIColor getValueFromBlock() const; }; + // provide a better default for Optional<const LLFontGL*> than NULL + template <> + struct DefaultInitializer<const LLFontGL*> + { + // return reference to a single default instance of T + // built-in types will be initialized to zero, default constructor otherwise + static const LLFontGL* get() + { + static const LLFontGL* sDefaultFont = LLFontGL::getFontDefault(); + return sDefaultFont; + } + }; + + template<> class TypedParam<const LLFontGL*> : public BlockValue<const LLFontGL*> diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 48b5fc11b7..7bc48185e6 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -51,7 +51,7 @@ public: /*virtual*/ void getDimensions(S32 first_char, S32 num_chars, S32& width, S32& height) const { // more label always spans width of text box - width = mEditor.getTextRect().getWidth(); + width = mEditor.getTextRect().getWidth() - mEditor.getHPad(); height = llceil(mStyle->getFont()->getLineHeight()); } /*virtual*/ S32 getOffset(S32 segment_local_x_coord, S32 start_offset, S32 num_chars, bool round) const @@ -153,6 +153,11 @@ void LLExpandableTextBox::LLTextBoxEx::showExpandText() { if (!mExpanderVisible) { + // make sure we're scrolled to top when collapsing + if (mScroller) + { + mScroller->goToTop(); + } // get fully visible lines std::pair<S32, S32> visible_lines = getVisibleLines(true); S32 last_line = visible_lines.second - 1; diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index d45527aabb..3fe646c29c 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -68,16 +68,6 @@ protected: */ virtual S32 getVerticalTextDelta(); - /** - * Returns text vertical padding - */ - virtual S32 getVPad() { return mVPad; } - - /** - * Returns text horizontal padding - */ - virtual S32 getHPad() { return mHPad; } - /** * Shows "More" link */ diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp index aa6909560d..6181531f82 100644 --- a/indra/newview/llpanelpicks.cpp +++ b/indra/newview/llpanelpicks.cpp @@ -73,10 +73,10 @@ LLPanelPicks::LLPanelPicks() mPopupMenu(NULL), mProfilePanel(NULL), mPickPanel(NULL), - mPicksList(NULL) - , mPanelPickInfo(NULL) - , mPanelPickEdit(NULL) - , mOverflowMenu(NULL) + mPicksList(NULL), + mPanelPickInfo(NULL), + mPanelPickEdit(NULL), + mOverflowMenu(NULL) { } diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index f0d27ac11d..9aa73c28d1 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -726,4 +726,7 @@ <texture name="media_panel_bg.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> <texture name="media_panel_hoverrectangle.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> + <texture name="square_btn_32x128.tga" scale_left="2" scale_bottom="2" scale_right="126" scale_top="30"/> + <texture name="square_btn_selected_32x128.tga" scale_left="2" scale_bottom="2" scale_right="126" scale_top="30"/> + </textures> diff --git a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml index 1074dd4627..38ea6b6196 100644 --- a/indra/newview/skins/default/xui/en/panel_pick_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_pick_list_item.xml @@ -57,7 +57,7 @@ use_ellipses="false" width="197" word_wrap="false" /> - <text + <expandable_text follows="top|left|right" font="SansSerifSmall" height="40" diff --git a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml index 319beac291..f59c46b2f5 100644 --- a/indra/newview/skins/default/xui/en/widgets/expandable_text.xml +++ b/indra/newview/skins/default/xui/en/widgets/expandable_text.xml @@ -3,7 +3,7 @@ max_height="300" > <textbox more_label="More" - follows="left|top" + follows="left|top|right" name="text" allow_scroll="true" use_ellipses="true" -- cgit v1.2.3 From 9e602de33ae85bc78d6aa3c6bf45e29af7727796 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 17:46:48 -0700 Subject: On a double-click in the nearby media list, try to focus/zoom in on the prim holding the media. --- indra/newview/llviewermedia.cpp | 13 +++++++++++++ indra/newview/llviewermedia.h | 1 + indra/newview/llviewermediafocus.cpp | 30 ++++++++++++++++++++++++++++++ indra/newview/llviewermediafocus.h | 3 +++ 4 files changed, 47 insertions(+) diff --git a/indra/newview/llviewermedia.cpp b/indra/newview/llviewermedia.cpp index 44bffd2a08..e89f17cf72 100644 --- a/indra/newview/llviewermedia.cpp +++ b/indra/newview/llviewermedia.cpp @@ -2073,6 +2073,19 @@ const std::list< LLVOVolume* >* LLViewerMediaImpl::getObjectList() const return &mObjectList ; } +LLVOVolume *LLViewerMediaImpl::getSomeObject() +{ + LLVOVolume *result = NULL; + + std::list< LLVOVolume* >::iterator iter = mObjectList.begin() ; + if(iter != mObjectList.end()) + { + result = *iter; + } + + return result; +} + ////////////////////////////////////////////////////////////////////////////////////////// //static void LLViewerMedia::toggleMusicPlay(void*) diff --git a/indra/newview/llviewermedia.h b/indra/newview/llviewermedia.h index b04432730a..dac0482078 100644 --- a/indra/newview/llviewermedia.h +++ b/indra/newview/llviewermedia.h @@ -250,6 +250,7 @@ public: void addObject(LLVOVolume* obj) ; void removeObject(LLVOVolume* obj) ; const std::list< LLVOVolume* >* getObjectList() const ; + LLVOVolume *getSomeObject(); void setUpdated(BOOL updated) ; BOOL isUpdated() ; diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index 0ef4679057..ffdac35e71 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -50,6 +50,7 @@ #include "llmediaentry.h" #include "llkeyboard.h" #include "lltoolmgr.h" +#include "llvovolume.h" // // LLViewerMediaFocus @@ -473,3 +474,32 @@ LLViewerObject* LLViewerMediaFocus::getHoverObject() { return gObjectList.findObject(mHoverObjectID); } + +void LLViewerMediaFocus::focusZoomOnMedia(LLUUID media_id) +{ + LLViewerMediaImpl* impl = LLViewerMedia::getMediaImplFromTextureID(media_id); + + if(impl) + { + // Get the first object from the media impl's object list. This is completely arbitrary, but should suffice. + LLVOVolume *obj = impl->getSomeObject(); + if(obj) + { + // This media is attached to at least one object. Figure out which face it's on. + S32 face = obj->getFaceIndexWithMediaImpl(impl, -1); + + // We don't have a proper pick normal here, and finding a face's real normal is... complicated. + // For now, use +z to look at the top of the object. + LLVector3 normal(0.0f, 0.0f, 1.0f); + + // Attempt to focus/zoom on that face. + setFocusFace(obj, face, impl, normal); + + if(mMediaControls.get()) + { + mMediaControls.get()->resetZoomLevel(); + mMediaControls.get()->nextZoomLevel(); + } + } + } +} diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index c1179de39d..07a6f0c47b 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -81,6 +81,9 @@ public: LLViewerMediaImpl* getHoverMediaImpl(); LLViewerObject* getHoverObject(); S32 getHoverFace() { return mHoverObjectFace; } + + // Try to focus/zoom on the specified media (if it's on an object in world). + void focusZoomOnMedia(LLUUID media_id); protected: /*virtual*/ void onFocusReceived(); -- cgit v1.2.3 From 2fadd99877eceb55077957b5bab6353611184c86 Mon Sep 17 00:00:00 2001 From: Monroe Linden <monroe@lindenlab.com> Date: Fri, 30 Oct 2009 18:14:20 -0700 Subject: Another experiment: made the selection in the nearby media floater track the media impl the media controls are currently referencing (either focus or hover). --- indra/newview/llviewermediafocus.cpp | 14 ++++++++++++++ indra/newview/llviewermediafocus.h | 3 +++ 2 files changed, 17 insertions(+) diff --git a/indra/newview/llviewermediafocus.cpp b/indra/newview/llviewermediafocus.cpp index ffdac35e71..2f7040aaa3 100644 --- a/indra/newview/llviewermediafocus.cpp +++ b/indra/newview/llviewermediafocus.cpp @@ -503,3 +503,17 @@ void LLViewerMediaFocus::focusZoomOnMedia(LLUUID media_id) } } } + +LLUUID LLViewerMediaFocus::getControlsMediaID() +{ + if(getFocusedMediaImpl()) + { + return mFocusedImplID; + } + else if(getHoverMediaImpl()) + { + return mHoverImplID; + } + + return LLUUID::null; +} diff --git a/indra/newview/llviewermediafocus.h b/indra/newview/llviewermediafocus.h index 07a6f0c47b..e5f36d341c 100644 --- a/indra/newview/llviewermediafocus.h +++ b/indra/newview/llviewermediafocus.h @@ -84,6 +84,9 @@ public: // Try to focus/zoom on the specified media (if it's on an object in world). void focusZoomOnMedia(LLUUID media_id); + + // Return the ID of the media instance the controls are currently attached to (either focus or hover). + LLUUID getControlsMediaID(); protected: /*virtual*/ void onFocusReceived(); -- cgit v1.2.3 From bc0d740dfecb2a724566b00b82fbe817270f84d0 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Fri, 30 Oct 2009 19:05:28 -0700 Subject: EXT-2053 Add parcel permission icons to place profile, layout to spec --- indra/newview/skins/default/textures/textures.xml | 39 +++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 05f7c5205d..b497ca5e7a 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -260,6 +260,42 @@ <texture name="Overhead_M" file_name="world/Overhead_M.png" preload="false" /> <texture name="Overhead_S" file_name="world/Overhead_S.png" preload="false" /> + <texture name="parcel_drk_Build" file_name="icons/parcel_drk_Build.png" preload="false" /> + <texture name="parcel_drk_BuildNo" file_name="icons/parcel_drk_BuildNo.png" preload="false" /> + <texture name="parcel_drk_Damage" file_name="icons/parcel_drk_Damage.png" preload="false" /> + <texture name="parcel_drk_DamageNo" file_name="icons/parcel_drk_DamageNo.png" preload="false" /> + <texture name="parcel_drk_Fly" file_name="icons/parcel_drk_Fly.png" preload="false" /> + <texture name="parcel_drk_FlyNo" file_name="icons/parcel_drk_FlyNo.png" preload="false" /> + <texture name="parcel_drk_ForSale" file_name="icons/parcel_drk_ForSale.png" preload="false" /> + <texture name="parcel_drk_ForSaleNo" file_name="icons/parcel_drk_ForSaleNo.png" preload="false" /> + <texture name="parcel_drk_M" file_name="icons/parcel_drk_M.png" preload="false" /> + <texture name="parcel_drk_PG" file_name="icons/parcel_drk_PG.png" preload="false" /> + <texture name="parcel_drk_Push" file_name="icons/parcel_drk_Push.png" preload="false" /> + <texture name="parcel_drk_PushNo" file_name="icons/parcel_drk_PushNo.png" preload="false" /> + <texture name="parcel_drk_R" file_name="icons/parcel_drk_R.png" preload="false" /> + <texture name="parcel_drk_Scripts" file_name="icons/parcel_drk_Scripts.png" preload="false" /> + <texture name="parcel_drk_ScriptsNo" file_name="icons/parcel_drk_ScriptsNo.png" preload="false" /> + <texture name="parcel_drk_Voice" file_name="icons/parcel_drk_Voice.png" preload="false" /> + <texture name="parcel_drk_VoiceNo" file_name="icons/parcel_drk_VoiceNo.png" preload="false" /> + + <texture name="parcel_lght_Build" file_name="icons/parcel_lght_Build.png" preload="false" /> + <texture name="parcel_lght_BuildNo" file_name="icons/parcel_lght_BuildNo.png" preload="false" /> + <texture name="parcel_lght_Damage" file_name="icons/parcel_lght_Damage.png" preload="false" /> + <texture name="parcel_lght_DamageNo" file_name="icons/parcel_lght_DamageNo.png" preload="false" /> + <texture name="parcel_lght_Fly" file_name="icons/parcel_lght_Fly.png" preload="false" /> + <texture name="parcel_lght_FlyNo" file_name="icons/parcel_lght_FlyNo.png" preload="false" /> + <texture name="parcel_lght_ForSale" file_name="icons/parcel_lght_ForSale.png" preload="false" /> + <texture name="parcel_lght_ForSaleNo" file_name="icons/parcel_lght_ForSaleNo.png" preload="false" /> + <texture name="parcel_lght_M" file_name="icons/parcel_lght_M.png" preload="false" /> + <texture name="parcel_lght_PG" file_name="icons/parcel_lght_PG.png" preload="false" /> + <texture name="parcel_lght_Push" file_name="icons/parcel_lght_Push.png" preload="false" /> + <texture name="parcel_lght_PushNo" file_name="icons/parcel_lght_PushNo.png" preload="false" /> + <texture name="parcel_lght_R" file_name="icons/parcel_lght_R.png" preload="false" /> + <texture name="parcel_lght_Scripts" file_name="icons/parcel_lght_Scripts.png" preload="false" /> + <texture name="parcel_lght_ScriptsNo" file_name="icons/parcel_lght_ScriptsNo.png" preload="false" /> + <texture name="parcel_lght_Voice" file_name="icons/parcel_lght_Voice.png" preload="false" /> + <texture name="parcel_lght_VoiceNo" file_name="icons/parcel_lght_VoiceNo.png" preload="false" /> + <texture name="Progress_1" file_name="icons/Progress_1.png" preload="false" /> <texture name="Progress_2" file_name="icons/Progress_2.png" preload="false" /> <texture name="Progress_3" file_name="icons/Progress_3.png" preload="false" /> @@ -734,7 +770,4 @@ <texture name="media_panel_bg.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> <texture name="media_panel_hoverrectangle.png" preload="true" scale_left="9" scale_top="9" scale_right="9" scale_bottom="9" /> - <texture name="square_btn_32x128.tga" scale_left="2" scale_bottom="2" scale_right="126" scale_top="30"/> - <texture name="square_btn_selected_32x128.tga" scale_left="2" scale_bottom="2" scale_right="126" scale_top="30"/> - </textures> -- cgit v1.2.3 From 60771cce54d3b637b0d6176ea8b2d1a6ea68d306 Mon Sep 17 00:00:00 2001 From: richard <none@none> Date: Fri, 30 Oct 2009 19:07:41 -0700 Subject: forgot to add toolt_tip.xml --- indra/newview/skins/default/xui/en/widgets/tool_tip.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 indra/newview/skins/default/xui/en/widgets/tool_tip.xml diff --git a/indra/newview/skins/default/xui/en/widgets/tool_tip.xml b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml new file mode 100644 index 0000000000..6b49f832fd --- /dev/null +++ b/indra/newview/skins/default/xui/en/widgets/tool_tip.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<!-- See also settings.xml UIFloater* settings for configuration --> +<tool_tip name="tooltip" + max_width="200" + padding="4" + wrap="true" + font="SansSerif" + bg_opaque_color="ToolTipBgColor" + background_visible="true" + /> -- cgit v1.2.3 From 801301c435414df1e22c321a685044b7cd43055e Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Fri, 30 Oct 2009 21:22:47 -0600 Subject: fix DEV-41913: parcel media does not display on particle textures. --- indra/newview/llface.cpp | 10 +++++++ indra/newview/llface.h | 2 +- indra/newview/llflexibleobject.cpp | 2 +- indra/newview/llviewertexture.cpp | 57 ++++++++++++++++++++++++++++---------- indra/newview/llviewertexture.h | 6 ++++ 5 files changed, 60 insertions(+), 17 deletions(-) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 09b3ce1e86..0276cd9a24 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -278,6 +278,16 @@ void LLFace::setTexture(LLViewerTexture* tex) } mTexture = tex ; + + //check if this texture is replaced by a parcel media texture. + if(mTexture.notNull() && mTexture->hasParcelMedia()) + { + LLViewerMediaTexture* mediap = LLViewerTextureManager::findMediaTexture(mTexture->getID()) ; + if(mediap) + { + mediap->addMediaToFace(this) ; + } + } } void LLFace::dirtyTexture() diff --git a/indra/newview/llface.h b/indra/newview/llface.h index d734b327d9..2b134c8c31 100644 --- a/indra/newview/llface.h +++ b/indra/newview/llface.h @@ -246,7 +246,7 @@ protected: //atlas LLPointer<LLTextureAtlasSlot> mAtlasInfop ; - BOOL mUsingAtlas ; + BOOL mUsingAtlas ; protected: static BOOL sSafeRenderSelect; diff --git a/indra/newview/llflexibleobject.cpp b/indra/newview/llflexibleobject.cpp index 216bca8262..fc8790c172 100644 --- a/indra/newview/llflexibleobject.cpp +++ b/indra/newview/llflexibleobject.cpp @@ -704,7 +704,7 @@ BOOL LLVolumeImplFlexible::doUpdateGeometry(LLDrawable *drawable) } if (volume->mLODChanged || volume->mFaceMappingChanged || - volume->mVolumeChanged) + volume->mVolumeChanged || drawable->isState(LLDrawable::REBUILD_MATERIAL)) { volume->regenFaces(); volume->mDrawable->setState(LLDrawable::REBUILD_VOLUME); diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 2368a2da33..28ef128265 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -416,6 +416,7 @@ void LLViewerTexture::init(bool firstinit) mDontDiscard = FALSE; mMaxVirtualSize = 0.f; mNeedsResetMaxVirtualSize = FALSE ; + mHasParcelMedia = FALSE ; } //virtual @@ -2150,19 +2151,20 @@ void LLViewerMediaTexture::updateClass() for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) { LLViewerMediaTexture* mediap = iter->second; - - // - //Note: delay some time to delete the media textures to stop endlessly creating and immediately removing media texture. - // - if(mediap->getNumRefs() == 1 && mediap->getLastReferencedTimer()->getElapsedTimeF32() > MAX_INACTIVE_TIME) //one by sMediaMap - { - media_map_t::iterator cur = iter++ ; - sMediaMap.erase(cur) ; - } - else + + if(mediap->getNumRefs() == 1) //one reference by sMediaMap { - ++iter ; + // + //Note: delay some time to delete the media textures to stop endlessly creating and immediately removing media texture. + // + if(mediap->getLastReferencedTimer()->getElapsedTimeF32() > MAX_INACTIVE_TIME) + { + media_map_t::iterator cur = iter++ ; + sMediaMap.erase(cur) ; + continue ; + } } + ++iter ; } } @@ -2215,11 +2217,22 @@ LLViewerMediaTexture::LLViewerMediaTexture(const LLUUID& id, BOOL usemipmaps, LL mIsPlaying = FALSE ; setMediaImpl() ; + + LLViewerTexture* tex = gTextureList.findImage(mID) ; + if(tex) //this media is a parcel media for tex. + { + tex->setParcelMedia(TRUE) ; + mParcelTexture = tex ; + } } //virtual LLViewerMediaTexture::~LLViewerMediaTexture() { + if(mParcelTexture.notNull()) + { + mParcelTexture->setParcelMedia(FALSE) ; + } } void LLViewerMediaTexture::reinit(BOOL usemipmaps /* = TRUE */) @@ -2272,10 +2285,19 @@ BOOL LLViewerMediaTexture::findFaces() BOOL ret = TRUE ; //for parcel media - LLViewerTexture* tex = gTextureList.findImage(mID) ; - if(tex) + if(mParcelTexture.isNull()) { - const ll_face_list_t* face_list = tex->getFaceList() ; + LLViewerTexture* tex = gTextureList.findImage(mID) ; + if(tex) + { + tex->setParcelMedia(TRUE) ; + mParcelTexture = tex ; + } + } + + if(mParcelTexture.notNull()) + { + const ll_face_list_t* face_list = mParcelTexture->getFaceList() ; for(ll_face_list_t::const_iterator iter = face_list->begin(); iter != face_list->end(); ++iter) { mMediaFaceList.push_back(*iter) ; @@ -2382,9 +2404,14 @@ void LLViewerMediaTexture::addFace(LLFace* facep) if(facep->getTexture() && facep->getTexture() != this && facep->getTexture()->getID() == mID) { mTextureList.push_back(facep->getTexture()) ; //a parcel media. + if(mParcelTexture.isNull()) + { + mParcelTexture = facep->getTexture() ; + mParcelTexture->setParcelMedia(TRUE) ; + } return ; } - + llerrs << "The face does not have a valid texture before media texture." << llendl ; } diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index ef298319d2..ce8c47b878 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -221,6 +221,9 @@ public: BOOL getDontDiscard() const { return mDontDiscard; } //----------------- + void setParcelMedia(BOOL has_media) {mHasParcelMedia = has_media;} + BOOL hasParcelMedia() const { return mHasParcelMedia ;} + /*virtual*/ void updateBindStatsForTester() ; protected: void cleanup() ; @@ -247,6 +250,8 @@ protected: LLPointer<LLImageGL> mGLTexturep ; S8 mDontDiscard; // Keep full res version of this image (for UI, etc) + BOOL mHasParcelMedia ; + protected: typedef enum { @@ -547,6 +552,7 @@ private: LLViewerMediaImpl* mMediaImplp ; BOOL mIsPlaying ; U32 mUpdateVirtualSizeTime ; + LLPointer< LLViewerTexture > mParcelTexture ; //the texture replaces this media texure when it is a parcel media texture. public: static void updateClass() ; -- cgit v1.2.3 From 1f3212b68087269397d5c5e33acbc1e70c13ee44 Mon Sep 17 00:00:00 2001 From: CG Linden <cg@lindenlab.com> Date: Sat, 31 Oct 2009 04:25:48 -0700 Subject: Add missing eol --- indra/llui/lliconctrl.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 82ffac9580..b1bd2b89a9 100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -123,4 +123,5 @@ void LLIconCtrl::setIconImageDrawSize() mImagep->getImage()->setKnownDrawSize(mDrawWidth, mDrawHeight) ; } } -} \ No newline at end of file +} + -- cgit v1.2.3 From caca1eae26b324f22d40cf66ffb6ff8a99e0ceef Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Sat, 31 Oct 2009 12:44:34 -0700 Subject: Convert URLs in notifications and viewer stings to wiki URL format EXT-1952, Reword Abuse Report notification to reduce wordcount EXT-1953 --- .../newview/skins/default/xui/en/notifications.xml | 60 ++++++++++------------ 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 9aacb8a92c..d51cb13093 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -13,7 +13,7 @@ <global name="implicitclosebutton"> Close </global> - + <template name="okbutton"> <form> <button @@ -154,7 +154,7 @@ No tutorial is currently available. icon="alertmodal.tga" name="BadInstallation" type="alertmodal"> - An error occurred while updating [APP_NAME]. Please download the latest version of the Viewer. http://get.secondlife.com + An error occurred while updating [APP_NAME]. Please [http://get.secondlife.com download the latest version] of the Viewer. <usetemplate name="okbutton" yestext="Ok"/> @@ -507,7 +507,7 @@ For L$[COST] you can enter this land ('[PARCEL_NAME]') for [TIME] hour notext="Cancel" yestext="OK"/> </notification> - + <notification icon="alertmodal.tga" name="SalePriceRestriction" @@ -664,7 +664,7 @@ Scripts must be allowed to run for weapons to work. icon="alertmodal.tga" name="MultipleFacesSelected" type="alertmodal"> -Multiple faces are currently selected. +Multiple faces are currently selected. If you continue this action, separate instances of media will be set on multiple faces of the object. To place the media on only one face, choose Select Texture and click on the desired face of that object then click Add. <usetemplate @@ -791,7 +791,7 @@ Oops! Something was left blank. You need to enter both the First and Last name of your avatar. You need an account to enter [SECOND_LIFE]. Would you like to create one now? - <url + <url option="0" name="url" openexternally = "1"> @@ -808,7 +808,7 @@ You need an account to enter [SECOND_LIFE]. Would you like to create one now? icon="alertmodal.tga" name="AddClassified" type="alertmodal"> -Classified ads appear in the 'Classified' section of the Search directory and on www.secondlife.com for one week. +Classified ads appear in the 'Classified' section of the Search directory and on [http://www.secondlife.com secondlife.com] for one week. Fill out your ad, then click 'Publish...' to add it to the directory. You'll be asked for a price to pay when clicking Publish. Paying more makes your ad appear higher in the list, and also appear higher when people search for keywords. @@ -1060,13 +1060,13 @@ There was a problem saving a compiled script due to the following reason: [REASO icon="alertmodal.tga" name="StartRegionEmpty" type="alertmodal"> -Oops, Your Start Region is not defined. -Please type the Region name in Start Location box or choose My Last Location or My Home as your Start Location. +Oops, Your Start Region is not defined. +Please type the Region name in Start Location box or choose My Last Location or My Home as your Start Location. <usetemplate name="okbutton" yestext="OK"/> </notification> - + <notification icon="alertmodal.tga" name="CouldNotStartStopScript" @@ -2409,7 +2409,7 @@ You can use [SECOND_LIFE] normally and other people will see you correctly. [APP_NAME] installation is complete. If this is your first time using [SECOND_LIFE], you will need to create an account before you can log in. -Return to www.secondlife.com to create a new account? +Return to [http://join.secondlife.com secondlife.com] to create a new account? <usetemplate name="okcancelbuttons" notext="Continue" @@ -2426,7 +2426,7 @@ You can either check your Internet connection and try again in a few minutes, cl <url option="1" name="url"> http://secondlife.com/support/ - </url> + </url> <form name="form"> <button default="true" @@ -2801,7 +2801,7 @@ Do you want to open your Web browser to view this content? icon="alertmodal.tga" name="WebLaunchJoinNow" type="alertmodal"> -Go to secondlife.com to manage your account? +Go to your [http://secondlife.com/account/ Dashboard] to manage your account? <usetemplate ignoretext="Launch my browser to manage my account" name="okcancelignore" @@ -3163,7 +3163,7 @@ Teleport to [PICK]? notext="Cancel" yestext="Teleport"/> </notification> - + <notification icon="alert.tga" label="Message everyone in your Estate" @@ -3657,7 +3657,7 @@ Default: off label="Bulk Change Content Permissions" name="HelpBulkPermission" type="alertmodal"> -The Bulk Permissions tool helps you to quickly change the permissions on multiple items in the contents of the selected object(s). However, please note that you are only setting permissions on the items in the Contents of the selected objects -- not permissions on the container object(s) themselves. +The Bulk Permissions tool helps you to quickly change the permissions on multiple items in the contents of the selected object(s). However, please note that you are only setting permissions on the items in the Contents of the selected objects -- not permissions on the container object(s) themselves. Also note, the permissions are not applied to the nested contents of any of the contained items. Your request only operates on items exactly one level deep. @@ -4251,7 +4251,7 @@ There are no items in this object that you are allowed to copy. icon="alertmodal.tga" name="WebLaunchAccountHistory" type="alertmodal"> -Go to secondlife.com to see your account history? +Go to your [http://secondlife.com/account/ Dashboard] to see your account history? <usetemplate ignoretext="Launch my browser to see my account history" name="okcancelignore" @@ -4288,14 +4288,9 @@ Are you sure you want to quit? icon="alertmodal.tga" name="HelpReportAbuseEmailLL" type="alertmodal"> -Use this tool to report violations of the Terms of Service and Community Standards. See: - -http://secondlife.com/corporate/tos.php -http://secondlife.com/corporate/cs.php +Use this tool to report violations of the [http://secondlife.com/corporate/tos.php Terms of Service] and [http://secondlife.com/corporate/cs.php Community Standards]. -All reported abuses of the Terms of Service and Community Standards are investigated and resolved. You can view the incident resolution on the Incident Report at: - -http://secondlife.com/support/incidentreport.php +All reported abuses are investigated and resolved. You can view the resolution by reading the [http://secondlife.com/support/incidentreport.php Incident Report]. <unique/> </notification> @@ -4363,9 +4358,9 @@ Dear Resident, You appear to be reporting intellectual property infringement. Please make sure you are reporting it correctly: -(1) The Abuse Process. You may submit an abuse report if you believe a Resident is exploiting the [SECOND_LIFE] permissions system, for example, by using CopyBot or similar copying tools, to infringe intellectual property rights. The Abuse Team investigates and issues appropriate disciplinary action for behavior that violates the [SECOND_LIFE] Community Standards or Terms of Service. However, the Abuse Team does not handle and will not respond to requests to remove content from the [SECOND_LIFE] world. +(1) The Abuse Process. You may submit an abuse report if you believe a Resident is exploiting the [SECOND_LIFE] permissions system, for example, by using CopyBot or similar copying tools, to infringe intellectual property rights. The Abuse Team investigates and issues appropriate disciplinary action for behavior that violates the [SECOND_LIFE] [http://secondlife.com/corporate/tos.php Terms of Service] or [http://secondlife.com/corporate/cs.php Community Standards]. However, the Abuse Team does not handle and will not respond to requests to remove content from the [SECOND_LIFE] world. -(2) The DMCA or Content Removal Process. To request removal of content from [SECOND_LIFE], you MUST submit a valid notification of infringement as provided in our DMCA Policy at http://secondlife.com/corporate/dmca.php. +(2) The DMCA or Content Removal Process. To request removal of content from [SECOND_LIFE], you MUST submit a valid notification of infringement as provided in our [http://secondlife.com/corporate/dmca.php DMCA Policy]. If you still wish to continue with the abuse process, please close this window and finish submitting your report. You may need to select the specific category 'CopyBot or Permissions Exploit'. @@ -5463,7 +5458,7 @@ Deactivated gestures with same trigger: name="NoQuickTime" type="notify"> Apple's QuickTime software does not appear to be installed on your system. -If you want to view streaming media on parcels that support it you should go to the QuickTime site (http://www.apple.com/quicktime) and install the QuickTime Player. +If you want to view streaming media on parcels that support it you should go to the [http://www.apple.com/quicktime QuickTime site] and install the QuickTime Player. </notification> <notification icon="notify.tga" @@ -5527,7 +5522,7 @@ The objects on the selected parcel that are NOT owned by you have been returned type="notify"> [MSG] </notification> - + <notification icon="notify.tga" name="NotSafe" @@ -6149,7 +6144,7 @@ Thank you for your payment! Your L$ balance will be updated when processing completes. If processing takes more than 20 mins, your transaction may be cancelled. In that case, the purchase amount will be credited to your US$ balance. -The status of your payment can be checked on your Transaction History page at Me > My Dashboard, or http://secondlife.com/account/ +The status of your payment can be checked on your Transaction History page on your [http://secondlife.com/account/ Dashboard] </notification> <notification icon="notify.tga" @@ -6603,12 +6598,11 @@ Yes <global name="PermNo"> No </global> -<!-- this is alert string from server. the name needs to match entire the server string, and needs to be changed - whenever the server string changes --> +<!-- this is alert string from server. the name needs to match entire the server string, and needs to be changed + whenever the server string changes --> <global name="You can only set your 'Home Location' on your land or at a mainland Infohub."> -If you own a piece of land, you can make it your home location. +If you own a piece of land, you can make it your home location. Otherwise, you can look at the Map and find places marked "Infohub". - </global> - -</notifications> + </global> +</notifications> -- cgit v1.2.3 From a10a19de563958b7a14f2abd96ab4dddef4a367e Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Sat, 31 Oct 2009 21:04:38 -0700 Subject: Fix font and layout for list items, status bar, people panel tabs, system well EXT-2055 --- .../default/textures/navbar/BuyArrow_Over.png | Bin 2985 -> 2956 bytes .../default/textures/navbar/BuyArrow_Press.png | Bin 249 -> 2949 bytes indra/newview/skins/default/textures/textures.xml | 6 +- .../default/xui/en/panel_avatar_list_item.xml | 25 ++-- .../skins/default/xui/en/panel_group_list_item.xml | 24 ++-- .../newview/skins/default/xui/en/panel_people.xml | 129 +++++++++-------- .../skins/default/xui/en/panel_status_bar.xml | 153 ++------------------- .../skins/default/xui/en/panel_sys_well_item.xml | 69 +++------- .../default/xui/en/panel_teleport_history_item.xml | 37 +++-- 9 files changed, 150 insertions(+), 293 deletions(-) diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png index 7c10aaaead..41cb88628a 100644 Binary files a/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png and b/indra/newview/skins/default/textures/navbar/BuyArrow_Over.png differ diff --git a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png index 9d7716c6de..a02675502a 100644 Binary files a/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png and b/indra/newview/skins/default/textures/navbar/BuyArrow_Press.png differ diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index b497ca5e7a..c322d2aebb 100644 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -29,9 +29,9 @@ <texture name="BottomTray_BG" file_name="bottomtray/BottomTray_BG.png" preload="false" /> - <texture name="BuyArrow_Off" file_name="navbar/BuyArrow_Off.png" preload="false" /> - <texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="false" /> - <texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="false" /> + <texture name="BuyArrow_Off" file_name="navbar/BuyArrow_Off.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" /> + <texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" /> + <texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" /> <texture name="Cam_Avatar_Disabled" file_name="bottomtray/Cam_Avatar_Disabled.png" preload="false" /> <texture name="Cam_Avatar_Over" file_name="bottomtray/Cam_Avatar_Over.png" preload="false" /> diff --git a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml index 8aaa462aaf..18761c3bb9 100644 --- a/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_avatar_list_item.xml @@ -39,7 +39,6 @@ <text follows="left|right" font="SansSerifSmall" - font.style="BOLD" height="15" layout="topleft" left_pad="5" @@ -47,13 +46,13 @@ top="6" use_ellipses="true" value="Unknown" - width="196" /> + width="182" /> <text follows="right" font="SansSerifSmall" height="15" layout="topleft" - left_pad="10" + left_pad="8" name="last_interaction" text_color="LtGray_50" value="0s" @@ -69,28 +68,26 @@ name="speaking_indicator" visible="true" width="20" /> - <button + <button follows="right" height="16" image_pressed="Info_Press" - image_hover="Info_Over" - image_unselected="Info_Off" - layout="topleft" + image_unselected="Info_Over" left_pad="3" - right="-25" + right="-31" name="info_btn" picture_style="true" + top_delta="-2" width="16" /> <button follows="right" - height="16" - image_selected="BuyArrow_Press" - image_pressed="BuyArrow_Press" - image_unselected="BuyArrow_Press" + height="20" + image_overlay="ForwardArrow_Off" layout="topleft" left_pad="5" - right="-5" + right="-3" name="profile_btn" picture_style="true" - width="16" /> + top_delta="-2" + width="20" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_list_item.xml b/indra/newview/skins/default/xui/en/panel_group_list_item.xml index 7bdcaafe31..ffa485051c 100644 --- a/indra/newview/skins/default/xui/en/panel_group_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_group_list_item.xml @@ -28,13 +28,11 @@ visible="false" width="320" /> <icon - follows="top|left" height="20" image_name="Generic_Group" name="group_icon" - layout="topleft" - left="5" mouse_opaque="true" + left="5" top="2" width="20" /> <text @@ -47,28 +45,28 @@ top="6" use_ellipses="true" value="Unknown" - width="246" /> + width="242" /> <button follows="right" height="16" image_pressed="Info_Press" - image_hover="Info_Over" - image_unselected="Info_Off" + image_unselected="Info_Over" left_pad="3" - right="-25" + right="-31" name="info_btn" picture_style="true" + top_delta="-2" width="16" /> + <!--*TODO: Should only appear on rollover--> <button follows="right" - height="16" - image_selected="BuyArrow_Press" - image_pressed="BuyArrow_Press" - image_unselected="BuyArrow_Press" + height="20" + image_overlay="ForwardArrow_Off" layout="topleft" left_pad="5" - right="-5" + right="-3" name="profile_btn" picture_style="true" - width="16" /> + top_delta="-2" + width="20" /> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 0db5a41cc5..98bbe98dfa 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -49,13 +49,12 @@ background_visible="true" height="500" layout="topleft" left="10" - font="SansSerifBigBold" name="tabs" tab_min_width="70" tab_height="30" tab_position="top" top_pad="10" - halign="center" + halign="center" width="313"> <panel follows="all" @@ -100,17 +99,30 @@ background_visible="true" picture_style="true" top="5" width="18" /> + <button + follows="bottom|left" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left_pad="5" + name="add_friend_btn" + picture_style="true" + top_delta="0" + tool_tip="Add selected resident to your friends List" + width="18" /> </panel> </panel> <panel follows="all" height="500" - left="0" - top="0" label="Friends" layout="topleft" + left="0" help_topic="people_friends_tab" name="friends_panel" + top="0" width="313"> <accordion follows="all" @@ -123,14 +135,13 @@ background_visible="true" <accordion_tab can_resize="false" layout="topleft" - height="230" + height="235" min_height="150" name="tab_online" title="Online"> <avatar_list allow_select="true" follows="all" - height="150" layout="topleft" left="0" multi_select="true" @@ -141,13 +152,12 @@ background_visible="true" <accordion_tab can_resize="false" layout="topleft" - height="230" + height="235" name="tab_all" title="All"> <avatar_list allow_select="true" follows="all" - height="230" layout="topleft" left="0" multi_select="true" @@ -210,10 +220,11 @@ background_visible="true" follows="all" height="500" label="Groups" - top="0" layout="topleft" + left="0" help_topic="people_groups_tab" name="groups_panel" + top="0" width="313"> <group_list follows="all" @@ -287,13 +298,14 @@ background_visible="true" </panel> </panel> <panel - top="0" follows="all" height="500" label="Recent" layout="topleft" + left="0" help_topic="people_recent_tab" name="recent_panel" + top="0" width="313"> <avatar_list allow_select="true" @@ -304,11 +316,9 @@ background_visible="true" multi_select="true" name="avatar_list" show_last_interaction_time="true" - top="2" + top="0" width="313" /> <panel - background_visible="true" - bevel_style="none" top_pad="0" follows="left|right|bottom" height="30" @@ -330,6 +340,19 @@ background_visible="true" picture_style="true" top="7" width="18" /> + <button + follows="bottom|left" + height="18" + image_selected="AddItem_Press" + image_unselected="AddItem_Off" + image_disabled="AddItem_Disabled" + layout="topleft" + left_pad="5" + name="add_friend_btn" + picture_style="true" + top_delta="0" + tool_tip="Add selected resident to your friends List" + width="18" /> </panel> </panel> </tab_container> @@ -345,104 +368,88 @@ background_visible="true" width="313"> <layout_panel default_tab_group="1" - follows="left|top|right" + follows="left|top" height="25" layout="topleft" left="0" name="view_profile_btn_panel" top="-25" - width="65"> + width="100"> <button - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" label="Profile" layout="topleft" name="view_profile_btn" tool_tip="Show picture, groups, and other residents information" - width="65" /> - </layout_panel> - <layout_panel - default_tab_group="1" - follows="left|top|right" - height="25" - layout="topleft" - left_delta="0" - min_width="85" - name="add_friend_btn_panel" - top_delta="0" - width="50"> - <button - follows="top|left|right" - font="SansSerifSmall" - height="19" - label="Add" - layout="topleft" - name="add_friend_btn" - tool_tip="Add selected resident to your friends List" - width="50" /> + width="100" /> </layout_panel> <layout_panel default_tab_group="1" - follows="left|top|right" + follows="left|top" height="19" layout="topleft" + left="0" min_width="80" name="group_info_btn_panel" - width="80"> + width="100"> <button - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" label="Group Profile" layout="topleft" name="group_info_btn" tool_tip="Show group information" - width="80" /> + width="100" /> </layout_panel> <layout_panel default_tab_group="1" - follows="left|top|right" + follows="left|top" height="25" layout="topleft" + left_pad="5" min_width="45" name="chat_btn_panel" top_delta="0" - width="45"> + width="100"> <button - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" - label="Chat" + label="Group Chat" layout="topleft" name="chat_btn" tool_tip="Open chat session" - width="45" /> + width="100" /> </layout_panel> <layout_panel default_tab_group="1" - follows="left|top|right" + follows="left|top|" height="25" layout="topleft" + left_pad="5" min_width="35" name="im_btn_panel" top_delta="0" - width="35"> + width="50"> <button - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" label="IM" layout="topleft" name="im_btn" tool_tip="Open instant message session" - width="35" /> + width="50" /> </layout_panel> <layout_panel default_tab_group="1" follows="left|top|right" height="25" layout="topleft" + left_pad="5" min_width="40" name="call_btn_panel" top_delta="0" @@ -450,53 +457,55 @@ background_visible="true" width="40"> <button enabled="false" - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" label="Call" layout="topleft" name="call_btn" - width="40" /> + width="50" /> </layout_panel> <layout_panel default_tab_group="1" - follows="left|top|right" + follows="left|top" height="25" layout="topleft" + left_pad="5" min_width="65" name="teleport_btn_panel" top_delta="0" - width="65"> + width="100"> <button - follows="left|top|right" + follows="left|top" font="SansSerifSmall" height="19" label="Teleport" layout="topleft" name="teleport_btn" tool_tip="Offer teleport" - width="65" /> + width="100" /> </layout_panel> <layout_panel default_tab_group="1" enabled="false" - follows="left|top|right" + follows="left|top" height="25" layout="topleft" + left_pad="5" min_width="50" name="share_btn_panel" top_delta="0" visible="false" - width="50"> + width="80"> <button enabled="false" - follows="top|left|right" + follows="top|left" font="SansSerifSmall" height="19" label="Share" layout="topleft" name="share_btn" - width="50" /> + width="80" /> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_status_bar.xml b/indra/newview/skins/default/xui/en/panel_status_bar.xml index 795e0ffc0d..7b9c9f47a2 100644 --- a/indra/newview/skins/default/xui/en/panel_status_bar.xml +++ b/indra/newview/skins/default/xui/en/panel_status_bar.xml @@ -41,20 +41,18 @@ </panel.string> <button auto_resize="true" - halign="right" + halign="right" follows="right|bottom" font="SansSerifSmall" - image_color="White_05" - flash_color="EmphasisColor" - image_overlay="BuyArrow_Over" - height="18" - layout="topleft" - left="-225" + image_selected="BuyArrow_Over" + image_unselected="BuyArrow_Off" + image_pressed="BuyArrow_Press" + height="16" + left="-220" name="buycurrency" - pad_right="23px" - picture_style="true" + pad_right="22px" tool_tip="My Balance: Click to buy more L$" - top="0" + top="1" width="117" /> <text type="string" @@ -65,148 +63,21 @@ height="16" top="3" layout="topleft" - left_pad="20" + left_pad="15" name="TimeText" text_color="TimeTextColor" tool_tip="Current time (Pacific)" width="80"> 12:00 AM </text> - <button - follows="right|bottom" - height="16" - layout="topleft" - left_delta="-537" - image_selected="Inv_DangerousScript" - image_unselected="Inv_DangerousScript" - name="scriptout" - picture_style="true" - scale_image="false" - tool_tip="Script warnings and errors" - top="0" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="16" - image_selected="Health" - image_unselected="Health" - layout="topleft" - left_pad="7" - name="health" - picture_style="true" - scale_image="false" - tool_tip="Health" - top="0" - visible="false" - width="16" /> - <text - bg_visible="false" - text_readonly_color="HealthTextColor" - follows="rsight|bottom" - font_shadow="none" - height="16" - layout="topleft" - left_pad="18" - name="HealthText" - text_color="HealthTextColor" - tool_tip="Health" - top="0" - visible="false" - width="31"> - 100% - </text> - <button - follows="right|bottom" - height="16" - image_selected="Move_Fly_Disabled" - image_unselected="Move_Fly_Disabled" - layout="topleft" - left_pad="7" - name="no_fly" - picture_style="true" - scale_image="false" - tool_tip="Flying not allowed" - top="3" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="16" - image_selected="Tool_Create" - image_unselected="Tool_Create" - layout="topleft" - left_pad="7" - name="no_build" - picture_style="true" - scale_image="false" - tool_tip="Building/rezzing not allowed" - top="0" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="16" - image_selected="Inv_Script" - image_unselected="Inv_Script" - layout="topleft" - left_pad="7" - name="no_scripts" - picture_style="true" - scale_image="false" - tool_tip="Scripts not allowed" - top="0" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="16" - image_selected="Inv_Gesture" - image_unselected="Inv_Gesture" - layout="topleft" - left_pad="7" - name="restrictpush" - picture_style="true" - scale_image="false" - tool_tip="No pushing" - top="0" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="18" - image_selected="Microphone_Mute" - image_unselected="Microphone_Mute" - layout="topleft" - left_pad="7" - name="status_no_voice" - picture_style="true" - scale_image="false" - tool_tip="Voice not available here" - top="1" - visible="false" - width="16" /> - <button - follows="right|bottom" - height="16" - image_selected="Icon_For_Sale" - image_unselected="Icon_For_Sale" - layout="topleft" - left_pad="7" - name="buyland" - picture_style="true" - tool_tip="Buy this parcel" - top="0" - visible="false" - width="16" /> <text enabled="true" follows="right|bottom" halign="center" height="12" layout="topleft" - left_delta="-4" + left_delta="0" name="stat_btn" - top_delta="3" - width="20" /> + top_delta="0" + width="20"/> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml index 53ee0d159d..7722583ce2 100644 --- a/indra/newview/skins/default/xui/en/panel_sys_well_item.xml +++ b/indra/newview/skins/default/xui/en/panel_sys_well_item.xml @@ -1,65 +1,40 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!-- All our XML is utf-8 encoded. --> - <panel - name="sys_well_item" - title="sys_well_item" + name="sys_well_item" + title="sys_well_item" visible="true" - top="0" - left="0" - width="318" - height="35" + top="0" + left="0" + width="300" + height="35" layout="topleft" - follows="left|right" - background_opaque="false" - background_visible="true" - bg_alpha_color="0.0 0.0 0.0 0.0" > - - <icon - top="8" - left="8" - width="20" - height="20" - layout="topleft" - follows="left" - name="icon" - label="" - mouse_opaque="false" - image_name="lag_status_warning.tga" - /> - + follows="left|right"> <text - top="2" - left_pad="8" - width="255" - height="28" + top="2" + left="10" + width="267" + height="28" layout="topleft" follows="right|left" - font="SansSerifBold" text_color="white" - use_ellipses="true" + use_ellipses="true" word_wrap="true" mouse_opaque="false" name="title" > - Select your streaming media preference. Select your streaming media preference. - </text> - + Beware the trout. BEWARE! THE! TROUT! + </text> <button - top="5" - left_pad="5" - width="15" - height="15" + top="5" + right="-5" + width="17" + height="17" layout="topleft" follows="right" - name="close_btn" + name="close_btn" mouse_opaque="true" - label="" tab_stop="false" - image_unselected="toast_hide_btn.tga" - image_disabled="toast_hide_btn.tga" - image_selected="toast_hide_btn.tga" - image_hover_selected="toast_hide_btn.tga" - image_disabled_selected="toast_hide_btn.tga" + image_unselected="Icon_Close_Toast" + image_selected="Icon_Close_Toast" /> - -</panel> +</panel> 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 63c2d4538e..73a7d95ff4 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 @@ -18,7 +18,7 @@ visible="false" width="380" /> <icon - height="20" + height="24" follows="top|right|left" image_name="ListItem_Select" layout="topleft" @@ -26,7 +26,7 @@ name="selected_icon" top="0" visible="false" - width="380" /> + width="320" /> <icon height="20" follows="top|right|left" @@ -46,21 +46,28 @@ name="region" text_color="white" top="4" - value="Unknown" - width="330" /> + value="..." + width="242" /> <button follows="right" - height="18" - image_disabled="Info" - image_disabled_selected="Info" - image_hover_selected="Info" - image_selected="Info" - image_unselected="Info" - layout="topleft" + height="16" + image_pressed="Info_Press" + image_unselected="Info_Over" + left_pad="3" + right="-31" name="info_btn" picture_style="true" - visible="false" - right="-5" - top="2" - width="18" /> + top_delta="-2" + width="16" /> + <button + follows="right" + height="20" + image_overlay="ForwardArrow_Off" + layout="topleft" + left_pad="5" + right="-3" + name="profile_btn" + picture_style="true" + top_delta="-2" + width="20" /> </panel> -- cgit v1.2.3 From 5d64b6f15510aa74cc8e8bd31c1d16a4eec76746 Mon Sep 17 00:00:00 2001 From: Erica <erica@lindenlab.com> Date: Sun, 1 Nov 2009 00:34:12 -0700 Subject: EXT-2056 --- .../skins/default/xui/en/floater_about_land.xml | 165 ++++++++++----------- .../skins/default/xui/en/floater_inventory.xml | 6 +- .../skins/default/xui/en/floater_test_widgets.xml | 96 ++++++------ .../newview/skins/default/xui/en/floater_tools.xml | 9 +- .../newview/skins/default/xui/en/floater_water.xml | 2 + .../default/xui/en/floater_windlight_options.xml | 2 + indra/newview/skins/default/xui/en/fonts.xml | 21 ++- .../skins/default/xui/en/panel_activeim_row.xml | 43 +++--- .../default/xui/en/panel_group_land_money.xml | 12 +- .../skins/default/xui/en/panel_group_roles.xml | 1 + .../newview/skins/default/xui/en/panel_people.xml | 9 +- .../newview/skins/default/xui/en/panel_places.xml | 7 +- .../skins/default/xui/en/panel_profile_view.xml | 1 + indra/newview/skins/default/xui/en/panel_toast.xml | 47 +++--- .../skins/default/xui/en/widgets/tab_container.xml | 4 +- 15 files changed, 212 insertions(+), 213 deletions(-) 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 c245f877c7..e13aa610e5 100644 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -26,26 +26,28 @@ remaining </floater.string> <tab_container - follows="left|top|right|bottom" + follows="all" height="400" + halign="center" layout="topleft" font="SansSerifSmall" left="1" - tab_padding_right="5" + tab_padding_right="5" + tab_height="20" name="landtab" tab_position="top" top="20" width="459"> - <panel + <panel border="true" - follows="left|top|right|bottom" + follows="all" height="380" label="General" layout="topleft" left="1" help_topic="land_general_tab" name="land_general_panel" - top="-31" + top="0" width="458"> <panel.string name="new users only"> @@ -534,7 +536,7 @@ Go to World menu > About Land or select another parcel to show its details. </panel> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="380" label="Covenant" layout="topleft" @@ -630,7 +632,7 @@ Go to World menu > About Land or select another parcel to show its details. length="1" enabled="false" follows="left|top|right|bottom" - handle_edit_keys_directly="true" + handle_edit_keys_directly="true" height="115" layout="topleft" left_delta="0" @@ -801,7 +803,7 @@ Go to World menu > About Land or select another parcel to show its details. </panel> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="380" label="Objects" layout="topleft" @@ -1167,7 +1169,7 @@ Go to World menu > About Land or select another parcel to show its details. </panel> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="333" label="Options" layout="topleft" @@ -1603,16 +1605,15 @@ Only large parcels can be listed in search. value="Anywhere" /> </combo_box> </panel> - <panel + <panel border="true" - follows="left|top|right|bottom" + follows="all" height="363" label="Media" layout="topleft" left_delta="0" help_topic="land_media_tab" name="land_media_panel" - top_delta="1" width="458"> <text type="string" @@ -1623,24 +1624,22 @@ Only large parcels can be listed in search. left="10" name="with media:" top="9" - width="65"> + width="100"> Type: </text> <combo_box - height="18" + height="20" layout="topleft" - left_pad="5" + left_pad="10" name="media type" tool_tip="Specify if the URL is a movie, web page, or other media" - top_delta="-2" - width="120" /> + width="150" /> <text follows="left|top" height="16" layout="topleft" left_pad="10" name="mime_type" - top_delta="2" width="200" /> <text type="string" @@ -1650,32 +1649,30 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="at URL:" - top="29" - width="65"> + top_pad="10" + width="100"> Home URL: </text> <line_editor - bottom_delta="0" follows="left|top" - height="16" + height="20" layout="topleft" - left="80" + left_pad="10" max_length="255" name="media_url" - right="-80" select_on_focus="true" - text_readonly_color="0.576471 0.662745 0.835294 1" /> + width="270" + /> <button follows="left|top" font="SansSerifSmall" - height="16" - label="Set..." - label_selected="Set..." + height="20" + label="Set" + label_selected="Set" layout="topleft" - left_pad="8" + left_pad="5" name="set_media_url" - top_delta="0" - width="60" /> + width="50" /> <text type="string" length="1" @@ -1684,37 +1681,34 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="CurrentURL:" - top="49" - width="65"> + top_pad="10" + width="100"> Current URL: </text> <text follows="left|top" height="16" layout="topleft" - left_pad="5" + left_pad="10" name="current_url" - top_delta="0" - width="300" /> + width="260">http://</text> <button follows="left|top" - font="SansSerifSmall" - height="16" - label="Reset..." - label_selected="Reset..." + height="20" + label="Reset" + label_selected="Reset" layout="topleft" left_pad="6" name="reset_media_url" - top_delta="0" width="60" /> <check_box height="16" label="Hide URL" layout="topleft" - left="100" + left="120" name="hide_media_url" tool_tip="Checking this option will hide the media url to any non-authorized viewers of this parcel information. Note this is not available for HTML types." - top="89" + top_pad="2" width="200" /> <text type="string" @@ -1724,23 +1718,20 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="Description:" - top="49" - width="364"> + top_pad="10" + width="100"> Description: </text> <line_editor - border_style="line" - border_thickness="1" - bottom_delta="0" follows="left|top" - height="16" + height="35" layout="topleft" - left="80" - max_length="255" name="url_description" - right="-80" + left_pad="10" select_on_focus="true" - tool_tip="Text displayed next to play/load button" /> + tool_tip="Text displayed next to play/load button" + top_delta="0" + width="270" /> <text type="string" length="1" @@ -1749,10 +1740,9 @@ Only large parcels can be listed in search. layout="topleft" left="10" name="Media texture:" - top="69" - width="364"> - Replace -Texture: + top_pad="10" + width="100"> + Replace Texture: </text> <texture_picker allow_no_texture="true" @@ -1760,7 +1750,7 @@ Texture: follows="left|top" height="80" layout="topleft" - left_delta="70" + left_pad="10" name="media texture" tool_tip="Click to choose a picture" top_delta="0" @@ -1769,25 +1759,22 @@ Texture: type="string" length="1" follows="left|top" - height="16" + height="50" layout="topleft" - left_delta="75" + left_pad="10" name="replace_texture_help" - top="85" - width="270"> - Objects using this texture will show the movie or - web page after you click the play arrow. - - Select the thumbnail to choose a different texture. + top_delta="0" + word_wrap="true" + width="240"> + Objects using this texture will show the movie or web page after you click the play arrow. </text> <check_box height="16" label="Auto scale" layout="topleft" - left_delta="70" name="media_auto_scale" tool_tip="Checking this option will scale the content for this parcel automatically. It may be slightly slower and lower quality visually but no other texture scaling or alignment will be required." - top_delta="0" + top_pad="3" width="200" /> <text type="string" @@ -1795,11 +1782,11 @@ Texture: follows="left|top" height="16" layout="topleft" - left="85" + left="10" + top_pad="10" name="media_size" tool_tip="Size to render Web media, leave 0 for default." - top="185" - width="85"> + width="100"> Size: </text> <spinner @@ -1811,12 +1798,22 @@ Texture: increment="1" initial_value="0" layout="topleft" - left_delta="65" + left_pad="10" max_val="1024" name="media_size_width" tool_tip="Size to render Web media, leave 0 for default." top_delta="0" width="64" /> + <text + type="string" + length="1" + follows="left|top" + height="16" + layout="topleft" + left_pad="5" + name="pixels"> + px wide + </text> <spinner decimal_digits="0" enabled="false" @@ -1826,23 +1823,21 @@ Texture: increment="1" initial_value="0" layout="topleft" - left_pad="16" + left="120" + top_pad="3" max_val="1024" name="media_size_height" tool_tip="Size to render Web media, leave 0 for default." - top_delta="0" width="64" /> <text type="string" length="1" - bottom_delta="0" follows="left|top" height="16" layout="topleft" - left_delta="70" - name="pixels" - right="-10"> - pixels + left_pad="5" + name="pixels"> + px high </text> <text type="string" @@ -1852,15 +1847,15 @@ Texture: layout="topleft" left="10" name="Options:" - top="237" - width="292"> + top_pad="10" + width="100"> Options: </text> <check_box height="16" label="Loop" layout="topleft" - left_delta="70" + left_pad="10" name="media_loop" tool_tip="Play media in a loop. When the media has finished playing, it will restart from the beginning." top_delta="0" @@ -1868,9 +1863,9 @@ Texture: </panel> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="363" - label="Audio" + label="Sound" layout="topleft" left_delta="0" help_topic="land_audio_tab" @@ -1972,7 +1967,7 @@ Texture: </panel> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="333" label="Access" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_inventory.xml b/indra/newview/skins/default/xui/en/floater_inventory.xml index 2011635790..dfa6c83b4e 100644 --- a/indra/newview/skins/default/xui/en/floater_inventory.xml +++ b/indra/newview/skins/default/xui/en/floater_inventory.xml @@ -42,13 +42,15 @@ top="34" width="455" /> <tab_container - follows="left|top|right|bottom" + follows="all" height="508" + halign="center" layout="topleft" left_delta="-4" name="inventory filter tabs" tab_position="top" - top_pad="4" + tab_height="20" + top_pad="5" width="463"> <inventory_panel follows="left|top|right|bottom" 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 12d7e18762..129fd863dd 100644 --- a/indra/newview/skins/default/xui/en/floater_test_widgets.xml +++ b/indra/newview/skins/default/xui/en/floater_test_widgets.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<!-- Sample "floater" window with examples of common widgets. +<!-- Sample "floater" window with examples of common widgets. Notes: XML UI (XUI) files use spaces for indentation, not tabs. @@ -16,17 +16,17 @@ --> <floater legacy_header_height="18" - can_dock="true" + can_dock="true" can_resize="true" title="Test Floater" height="500" - min_width="850" - min_height="500" + min_width="850" + min_height="500" layout="topleft" name="floater_test_widgets" help_topic="floater_test_widgets" width="850"> - + <!-- Strings are used by C++ code for localization. They are not visible unless the C++ code uses them to fill in another widget. --> <floater.string @@ -35,15 +35,15 @@ <floater.string name="other_string" value="Other String" /> - + <!-- Floaters can contain drop-down menus. The menu_bar widget contains the inividual menus. The width is automatically computed to fit the labels. --> <menu_bar height="18" layout="topleft" - follows="top|left" - tool_tip="menu" + follows="top|left" + tool_tip="menu" left="2" name="test_menu_bar" top="16"> @@ -71,7 +71,7 @@ name="test_menu_item_2" /> </menu> </menu_bar> - + <!-- "text" is one or more read-only lines of text. It can be made clickable but this requires C++ code support. URLs are not automatically underlined. --> @@ -85,27 +85,27 @@ </text> <!-- First column --> - + <button height="20" - follows="top|left" + follows="top|left" label="Button" layout="topleft" left_delta="0" name="test_button" - tool_tip="button" + tool_tip="button" top="80" - width="100" /> + width="100" /> <!-- "flyout_button" is a button that can spawn a menu --> <flyout_button - follows="top|left" + follows="top|left" height="20" label="Flyout" layout="topleft" left_delta="0" name="fly_btn" top_pad="15" - tool_tip="flyout button" + tool_tip="flyout button" width="100"> <flyout_button.item label="Item 1" @@ -121,19 +121,19 @@ bottom_delta="35" label="Checkbox" layout="topleft" - tool_tip="checkbox" + tool_tip="checkbox" name="test_checkbox" /> <!-- "combo_box" is a pop-menu of items. Optionally the box itself can contain a general purpose line input editor, allowing the user to provide input that is not a list item. --> <combo_box bottom_delta="35" - follows="top|left" + follows="top|left" height="16" width="150" label="Combobox" layout="topleft" - tool_tip="combo box" + tool_tip="combo box" name="test_combo_box"> <combo_box.item name="item1" @@ -149,21 +149,21 @@ image_name="icon_avatar_online.tga" layout="topleft" left_delta="0" - tool_tip="icon" + tool_tip="icon" name="test_icon" top_pad="40" width="16" /> - <!-- "line_editor" allows a single line of editable text input. + <!-- "line_editor" allows a single line of editable text input. The contents of this XML node are used as the initial value for the text. --> <line_editor height="20" - follows="top|left" + follows="top|left" layout="topleft" left_delta="0" name="test_line_editor" top_pad="20" - tool_tip="line editor" + tool_tip="line editor" width="200"> Line Editor Sample Text </line_editor> @@ -176,18 +176,18 @@ layout="topleft" left_delta="0" name="search editor" - tool_tip="search editor" + tool_tip="search editor" top_pad="30" width="200" /> <!-- "progress_bar" percent completed gets set in C++ code --> <progress_bar height="16" - follows="top|left" + follows="top|left" layout="topleft" left_delta="0" name="test_progress_bar" top_pad="30" - tool_tip="progress bar" + tool_tip="progress bar" width="200" /> <!-- "stat_view" is a container for statistics graphs. It is only used for debugging/diagnostic displays. --> @@ -199,10 +199,10 @@ name="axis_view" show_label="true" top_pad="30" - tool_tip="stat view" + tool_tip="stat view" width="200"> <stat_bar - width="100" + width="100" bar_max="100" bottom_delta="30" label="Test Stat" @@ -211,9 +211,9 @@ bar_min="20" name="test_stat_bar" /> </stat_view> - + <!-- New column --> - + <!-- "radio_group" is a set of mutually exclusive choices, like the buttons on a car radio that allow a single radio station to be chosen. --> <radio_group @@ -221,7 +221,7 @@ layout="topleft" left_pad="90" name="size_radio_group" - tool_tip="radio group" + tool_tip="radio group" top="80" width="200"> <radio_item @@ -237,10 +237,10 @@ <!-- "scroll_list" is a scrolling list of columnar data. --> <scroll_list bottom_delta="100" - follows="top|left" + follows="top|left" height="80" draw_heading="true" - tool_tip="scroll list" + tool_tip="scroll list" layout="topleft"> <scroll_list.columns dynamic_width="true" @@ -262,29 +262,29 @@ <!-- "slider" is a horizontal input widget for numerical data. --> <slider bottom_delta="45" - follows="top|left" + follows="top|left" layout="topleft" min_val="0" max_val="100" initial_value="20" label="Slider" name="test_slider" - tool_tip="slider" + tool_tip="slider" width="200" /> <!-- "spinner" is a numerical input widget with an up and down arrow to change the value. --> <spinner bottom_delta="35" - follows="top|left" + follows="top|left" label="Spinner" layout="topleft" - label_width="45" - name="test_spinner" + label_width="45" + name="test_spinner" tool_tip="spinner"/> <text bottom_delta="50" - follows="top|left" - font.name="SansSerifSmall" + follows="top|left" + font.name="SansSerifSmall" font.style = "UNDERLINE" layout="topleft" name="test_text" @@ -293,23 +293,23 @@ </text> <text top_pad="10" - follows="top|left" + follows="top|left" layout="topleft" - width="60" - use_ellipses="true" + width="60" + use_ellipses="true" name="test_text" tool_tip="text"> Truncated text here </text> - <!-- "text_editor" is a multi-line text input widget, similar to + <!-- "text_editor" is a multi-line text input widget, similar to textarea in HTML. --> <text_editor height="40" - follows="top|left|bottom" + follows="top|left|bottom" layout="topleft" left_delta="0" name="test_text_editor" - tool_tip="text editor" + tool_tip="text editor" top_pad="25" width="200"> Text Editor @@ -330,17 +330,19 @@ many line to actually fit </text> <!-- And a third column --> - + <!-- "tab_container" is a holder for multiple panels of UI widgets. Tabs can appear at the top, bottom, or left of the container. --> <tab_container follows="all" height="400" + halign="center" layout="topleft" left="575" name="group_tab_container" tab_position="top" - tool_tip="tab container" + tab_height="20" + tool_tip="tab container" top="80" width="250"> <!-- "panel" is a container for widgets. It is automatically resized to diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml index e6ac39e40b..ca12538302 100644 --- a/indra/newview/skins/default/xui/en/floater_tools.xml +++ b/indra/newview/skins/default/xui/en/floater_tools.xml @@ -4,8 +4,8 @@ follows="left|top|right" height="570" layout="topleft" - bg_opaque_image="Window_NoTitle_Foreground" - bg_alpha_image="Window_NoTitle_Background" + bg_opaque_image="Window_NoTitle_Foreground" + bg_alpha_image="Window_NoTitle_Background" name="toolbox floater" help_topic="toolbox_floater" save_rect="true" @@ -749,6 +749,7 @@ <tab_container follows="left|top" height="400" + halign="center" left="0" name="Object Info Tabs" tab_max_width="55" @@ -2739,8 +2740,8 @@ function="BuildTool.EditMedia"/> </button> <web_browser - visible="false" - enabled="false" + visible="false" + enabled="false" border_visible="true" bottom_delta="0" follows="top|left" diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml index 9c55e8ea16..af3606fd1c 100644 --- a/indra/newview/skins/default/xui/en/floater_water.xml +++ b/indra/newview/skins/default/xui/en/floater_water.xml @@ -62,10 +62,12 @@ <tab_container follows="left|top" height="180" + halign="center" layout="topleft" left="0" name="Water Tabs" tab_position="top" + tab_height="20" top="60" width="700"> <panel diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml index 0ea769921f..2c09e82f08 100644 --- a/indra/newview/skins/default/xui/en/floater_windlight_options.xml +++ b/indra/newview/skins/default/xui/en/floater_windlight_options.xml @@ -71,10 +71,12 @@ <tab_container follows="left|top" height="160" + halign="center" layout="topleft" left="0" name="WindLight Tabs" tab_position="top" + tab_height="20" top="60" width="700"> <panel diff --git a/indra/newview/skins/default/xui/en/fonts.xml b/indra/newview/skins/default/xui/en/fonts.xml index b261281c64..65dfb13f4a 100644 --- a/indra/newview/skins/default/xui/en/fonts.xml +++ b/indra/newview/skins/default/xui/en/fonts.xml @@ -18,7 +18,7 @@ </os> </font> - <font name="SansSerifBold" + <font name="SansSerifBold" comment="Name of bold sans-serif font"> <file>DejaVuSans-Bold.ttf</file> <os name="Windows"> @@ -39,20 +39,20 @@ </os> </font> - <font name="SansSerif" - comment="Name of bold sans-serif font" + <font name="SansSerif" + comment="Name of bold sans-serif font" font_style="BOLD"> <file>DejaVuSans-Bold.ttf</file> </font> - <font name="SansSerif" - comment="Name of italic sans-serif font" + <font name="SansSerif" + comment="Name of italic sans-serif font" font_style="ITALIC"> <file>DejaVuSans-Oblique.ttf</file> </font> - <font name="SansSerif" - comment="Name of bold italic sans-serif font" + <font name="SansSerif" + comment="Name of bold italic sans-serif font" font_style="BOLD|ITALIC"> <file>DejaVuSans-BoldOblique.ttf</file> </font> @@ -140,11 +140,11 @@ <font_size name="Monospace" comment="Size for monospaced font (points, or 1/72 of an inch)" - size="9.0" + size="8.0" /> <font_size name="Huge" comment="Size of huge font (points, or 1/72 of an inch)" - size="16.0" + size="15.0" /> <font_size name="Large" comment="Size of large font (points, or 1/72 of an inch)" @@ -158,7 +158,6 @@ /> <font_size name="Small" comment="Size of small font (points, or 1/72 of an inch)" - size="8.0" + size="7.8" /> </fonts> - 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 4dc4a9ff46..8b815b0f71 100644 --- a/indra/newview/skins/default/xui/en/panel_activeim_row.xml +++ b/indra/newview/skins/default/xui/en/panel_activeim_row.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<panel +<panel name="panel_activeim_row" layout="topleft" follows="left|right" @@ -7,56 +7,51 @@ left="0" height="35" width="318" - background_visible="true" - bevel_style="in" - bg_alpha_color="0 0 0 0"> + background_visible="false"> <chiclet_im_p2p name="p2p_chiclet" layout="topleft" follows="left" - top="5" + top="3" left="5" height="25" - width="45"> + width="25"> </chiclet_im_p2p> <chiclet_im_group name="group_chiclet" layout="topleft" follows="left" - top="5" + top="3" left="5" height="25" - width="45"> + width="25"> </chiclet_im_group> <text type="string" name="contact_name" layout="topleft" - top="8" - left_pad="6" - height="28" - width="235" + top="10" + left_pad="0" + height="14" + width="245" length="1" follows="right|left" - font="SansSerifBold" - text_color="White"> - Contact Name + use_ellipses="true" + font="SansSerifBold"> + Grumpity ProductEngine </text> <button - top="5" - left_pad="5" - width="15" - height="15" + top="10" + right="-5" + width="17" + height="17" layout="topleft" follows="right" name="hide_btn" mouse_opaque="true" label="" tab_stop="false" - image_unselected="toast_hide_btn.tga" - image_disabled="toast_hide_btn.tga" - image_selected="toast_hide_btn.tga" - image_hover_selected="toast_hide_btn.tga" - image_disabled_selected="toast_hide_btn.tga" + image_unselected="Toast_CloseBtn" + image_selected="Toast_CloseBtn" /> </panel> \ No newline at end of file diff --git a/indra/newview/skins/default/xui/en/panel_group_land_money.xml b/indra/newview/skins/default/xui/en/panel_group_land_money.xml index 0845ec014e..04e0ad3be8 100644 --- a/indra/newview/skins/default/xui/en/panel_group_land_money.xml +++ b/indra/newview/skins/default/xui/en/panel_group_land_money.xml @@ -230,7 +230,7 @@ top_delta="0" width="250"> Group members must contribute more land credits to support land in use. - </text> + </text> <text type="string" follows="left|top" @@ -247,15 +247,17 @@ <tab_container follows="all" height="200" + halign="center" layout="topleft" left="10" name="group_money_tab_container" tab_position="top" + tab_height="20" top_pad="10" width="265"> <panel border="true" - follows="left|top|right|bottom" + follows="all" height="180" label="Planning" layout="topleft" @@ -305,7 +307,7 @@ width="250" word_wrap="true"> Computing... - </text_editor> + </text_editor> <button height="20" label="< Earlier" @@ -325,7 +327,7 @@ name="later_details_button" tool_tip="Go forward in time" top_delta="0" - width="125" /> + width="125" /> </panel> <panel border="true" @@ -375,4 +377,4 @@ width="125" /> </panel> </tab_container> -</panel> +</panel> diff --git a/indra/newview/skins/default/xui/en/panel_group_roles.xml b/indra/newview/skins/default/xui/en/panel_group_roles.xml index e2e4ca8b8f..909c3f4577 100644 --- a/indra/newview/skins/default/xui/en/panel_group_roles.xml +++ b/indra/newview/skins/default/xui/en/panel_group_roles.xml @@ -163,6 +163,7 @@ border="true" follows="left|top" height="260" + halign="center" layout="topleft" left="5" name="roles_tab_container" diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml index 98bbe98dfa..e234a7b358 100644 --- a/indra/newview/skins/default/xui/en/panel_people.xml +++ b/indra/newview/skins/default/xui/en/panel_people.xml @@ -34,7 +34,6 @@ background_visible="true" value="Filter Groups" /> <filter_editor follows="left|top|right" - font="SansSerif" height="23" layout="topleft" left="15" @@ -59,7 +58,7 @@ background_visible="true" <panel follows="all" height="500" - label="Nearby" + label="NEARBY" layout="topleft" left="0" help_topic="people_nearby_tab" @@ -117,7 +116,7 @@ background_visible="true" <panel follows="all" height="500" - label="Friends" + label="FRIENDS" layout="topleft" left="0" help_topic="people_friends_tab" @@ -219,7 +218,7 @@ background_visible="true" <panel follows="all" height="500" - label="Groups" + label="GROUPS" layout="topleft" left="0" help_topic="people_groups_tab" @@ -300,7 +299,7 @@ background_visible="true" <panel follows="all" height="500" - label="Recent" + label="RECENT" layout="topleft" left="0" help_topic="people_recent_tab" diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index 50108aa21f..5aa53ab46b 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -12,10 +12,10 @@ background_visible="true" width="333"> <string name="landmarks_tab_title" - value="My Landmarks" /> + value="MY LANDMARKS" /> <string name="teleport_history_tab_title" - value="Teleport History" /> + value="TELEPORT HISTORY" /> <filter_editor follows="left|top|right" font="SansSerif" @@ -29,11 +29,12 @@ background_visible="true" width="303" /> <tab_container follows="all" + halign="center" height="500" layout="topleft" left="10" name="Places Tabs" - tab_min_width="70" + tab_min_width="80" tab_height="30" tab_position="top" top_pad="10" 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 7a5781651d..195b731531 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_view.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_view.xml @@ -50,6 +50,7 @@ <tab_container follows="all" height="535" + halign="center" layout="topleft" left="10" min_width="333" diff --git a/indra/newview/skins/default/xui/en/panel_toast.xml b/indra/newview/skins/default/xui/en/panel_toast.xml index 66237d585a..7f7777586c 100644 --- a/indra/newview/skins/default/xui/en/panel_toast.xml +++ b/indra/newview/skins/default/xui/en/panel_toast.xml @@ -12,15 +12,15 @@ width="305" left="0" top="0" - follows="right|bottom" - bg_opaque_image="Toast_Background" - bg_alpha_image="Toast_Background" + follows="right|bottom" + bg_opaque_image="Toast_Background" + bg_alpha_image="Toast_Background" can_minimize="false" can_tear_off="false" can_resize="false" can_drag_on_left="false" can_close="false" - can_dock="false" + can_dock="false" border_visible = "false" border_drop_shadow_visible = "false" drop_shadow_visible = "false" @@ -43,36 +43,33 @@ Toast text; </text> <icon - top="20" - left="10" - width="32" + top="20" + left="10" + width="32" height="32" follows="top|left" layout="topleft" visible="false" - color="1 1 1 1" - enabled="true" + color="1 1 1 1" + enabled="true" image_name="notify_tip_icon.tga" - mouse_opaque="true" + mouse_opaque="true" name="icon" />--> <button layout="topleft" - top="-6" - left="293" - width="17" - height="17" + top="-6" + left="293" + width="17" + height="17" follows="top|right" - visible="false" - enabled="true" - mouse_opaque="false" - name="hide_btn" - label="" + visible="false" + enabled="true" + mouse_opaque="false" + name="hide_btn" + label="" tab_stop="false" - image_unselected="windows/Toast_CloseBtn.png" - image_disabled="windows/Toast_CloseBtn.png" - image_selected="windows/Toast_CloseBtn.png" - image_hover_selected="windows/Toast_CloseBtn.png" - image_disabled_selected="windows/Toast_CloseBtn.png" + image_unselected="Toast_CloseBtn" + image_selected="Toast_CloseBtn" /> -</floater> +</floater> 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 7d10df1af7..fe2f1423b7 100644 --- a/indra/newview/skins/default/xui/en/widgets/tab_container.xml +++ b/indra/newview/skins/default/xui/en/widgets/tab_container.xml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="utf-8" standalone="yes" ?> <tab_container tab_min_width="60" tab_max_width="150" - font_halign="left" - tab_height="16"> + font_halign="center" + tab_height="21"> <first_tab tab_top_image_unselected="TabTop_Left_Off" tab_top_image_selected="TabTop_Left_Selected" tab_bottom_image_unselected="Toolbar_Left_Off" -- cgit v1.2.3 From 99d9712dd7f2a11a1094cba380f92e677710b56b Mon Sep 17 00:00:00 2001 From: Xiaohong Bao <bao@lindenlab.com> Date: Sun, 1 Nov 2009 17:27:25 -0700 Subject: additional fix for DEV-41913: parcel media does not display on particle textures. --- indra/newview/llface.cpp | 10 ---------- indra/newview/llviewertexture.cpp | 37 ++++++++++++++----------------------- indra/newview/llviewertexture.h | 9 +++++---- indra/newview/llvopartgroup.cpp | 6 ++++++ 4 files changed, 25 insertions(+), 37 deletions(-) diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index 0276cd9a24..09b3ce1e86 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -278,16 +278,6 @@ void LLFace::setTexture(LLViewerTexture* tex) } mTexture = tex ; - - //check if this texture is replaced by a parcel media texture. - if(mTexture.notNull() && mTexture->hasParcelMedia()) - { - LLViewerMediaTexture* mediap = LLViewerTextureManager::findMediaTexture(mTexture->getID()) ; - if(mediap) - { - mediap->addMediaToFace(this) ; - } - } } void LLFace::dirtyTexture() diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 28ef128265..758bf8c1aa 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -416,7 +416,7 @@ void LLViewerTexture::init(bool firstinit) mDontDiscard = FALSE; mMaxVirtualSize = 0.f; mNeedsResetMaxVirtualSize = FALSE ; - mHasParcelMedia = FALSE ; + mParcelMedia = NULL ; } //virtual @@ -2148,6 +2148,12 @@ void LLViewerMediaTexture::updateClass() { static const F32 MAX_INACTIVE_TIME = 30.f ; +#if 0 + //force to play media. + gSavedSettings.setBOOL("AudioSteamingMedia", true) ; + gSavedSettings.setBOOL("AudioStreamingVideo", true) ; +#endif + for(media_map_t::iterator iter = sMediaMap.begin() ; iter != sMediaMap.end(); ) { LLViewerMediaTexture* mediap = iter->second; @@ -2221,17 +2227,17 @@ LLViewerMediaTexture::LLViewerMediaTexture(const LLUUID& id, BOOL usemipmaps, LL LLViewerTexture* tex = gTextureList.findImage(mID) ; if(tex) //this media is a parcel media for tex. { - tex->setParcelMedia(TRUE) ; - mParcelTexture = tex ; + tex->setParcelMedia(this) ; } } //virtual LLViewerMediaTexture::~LLViewerMediaTexture() { - if(mParcelTexture.notNull()) + LLViewerTexture* tex = gTextureList.findImage(mID) ; + if(tex) //this media is a parcel media for tex. { - mParcelTexture->setParcelMedia(FALSE) ; + tex->setParcelMedia(NULL) ; } } @@ -2283,21 +2289,11 @@ BOOL LLViewerMediaTexture::findFaces() mMediaFaceList.clear() ; BOOL ret = TRUE ; - - //for parcel media - if(mParcelTexture.isNull()) - { - LLViewerTexture* tex = gTextureList.findImage(mID) ; - if(tex) - { - tex->setParcelMedia(TRUE) ; - mParcelTexture = tex ; - } - } - if(mParcelTexture.notNull()) + LLViewerTexture* tex = gTextureList.findImage(mID) ; + if(tex) //this media is a parcel media for tex. { - const ll_face_list_t* face_list = mParcelTexture->getFaceList() ; + const ll_face_list_t* face_list = tex->getFaceList() ; for(ll_face_list_t::const_iterator iter = face_list->begin(); iter != face_list->end(); ++iter) { mMediaFaceList.push_back(*iter) ; @@ -2404,11 +2400,6 @@ void LLViewerMediaTexture::addFace(LLFace* facep) if(facep->getTexture() && facep->getTexture() != this && facep->getTexture()->getID() == mID) { mTextureList.push_back(facep->getTexture()) ; //a parcel media. - if(mParcelTexture.isNull()) - { - mParcelTexture = facep->getTexture() ; - mParcelTexture->setParcelMedia(TRUE) ; - } return ; } diff --git a/indra/newview/llviewertexture.h b/indra/newview/llviewertexture.h index ce8c47b878..020478beef 100644 --- a/indra/newview/llviewertexture.h +++ b/indra/newview/llviewertexture.h @@ -221,8 +221,9 @@ public: BOOL getDontDiscard() const { return mDontDiscard; } //----------------- - void setParcelMedia(BOOL has_media) {mHasParcelMedia = has_media;} - BOOL hasParcelMedia() const { return mHasParcelMedia ;} + void setParcelMedia(LLViewerMediaTexture* media) {mParcelMedia = media;} + BOOL hasParcelMedia() const { return mParcelMedia != NULL;} + LLViewerMediaTexture* getParcelMedia() const { return mParcelMedia;} /*virtual*/ void updateBindStatsForTester() ; protected: @@ -250,7 +251,8 @@ protected: LLPointer<LLImageGL> mGLTexturep ; S8 mDontDiscard; // Keep full res version of this image (for UI, etc) - BOOL mHasParcelMedia ; + //do not use LLPointer here. + LLViewerMediaTexture* mParcelMedia ; protected: typedef enum @@ -552,7 +554,6 @@ private: LLViewerMediaImpl* mMediaImplp ; BOOL mIsPlaying ; U32 mUpdateVirtualSizeTime ; - LLPointer< LLViewerTexture > mParcelTexture ; //the texture replaces this media texure when it is a parcel media texture. public: static void updateClass() ; diff --git a/indra/newview/llvopartgroup.cpp b/indra/newview/llvopartgroup.cpp index 7585842623..143cd2d9c6 100644 --- a/indra/newview/llvopartgroup.cpp +++ b/indra/newview/llvopartgroup.cpp @@ -249,6 +249,12 @@ BOOL LLVOPartGroup::updateGeometry(LLDrawable *drawable) facep->mCenterLocal = part->mPosAgent; facep->setFaceColor(part->mColor); facep->setTexture(part->mImagep); + + //check if this particle texture is replaced by a parcel media texture. + if(part->mImagep.notNull() && part->mImagep->hasParcelMedia()) + { + part->mImagep->getParcelMedia()->addMediaToFace(facep) ; + } mPixelArea = tot_area * pixel_meter_ratio; const F32 area_scale = 10.f; // scale area to increase priority a bit -- cgit v1.2.3 From 99aa77baae97b8de22339bded6ba890bcb86b3ee Mon Sep 17 00:00:00 2001 From: Martin Reddy <lynx@lindenlab.com> Date: Mon, 2 Nov 2009 11:37:44 +0000 Subject: DEV-41358: Include the current user's maturity and teen ratings in the URL that we send to the Search web page. This can be used to determine the maturity levels to display. These bools are passed as query params in the URL (as agreed upon with the search team). --- indra/newview/llfloatersearch.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/indra/newview/llfloatersearch.cpp b/indra/newview/llfloatersearch.cpp index 4c83530f43..bd9798c18e 100644 --- a/indra/newview/llfloatersearch.cpp +++ b/indra/newview/llfloatersearch.cpp @@ -34,6 +34,7 @@ #include "llviewerprecompiledheaders.h" #include "llfloatersearch.h" #include "llmediactrl.h" +#include "llagent.h" LLFloaterSearch::LLFloaterSearch(const LLSD& key) : @@ -117,6 +118,14 @@ void LLFloaterSearch::search(const LLSD &key) std::string search_text = key.has("id") ? key["id"].asString() : ""; url += std::string("?q=") + search_text; + // append the maturity and teen capabilities for this agent + BOOL godlike = gAgent.isGodlike(); + bool mature_enabled = gAgent.canAccessMature() || godlike; + bool adult_enabled = gAgent.canAccessAdult() || godlike; + std::string mature = (mature_enabled) ? "True" : "False"; + std::string teen = (!adult_enabled) ? "True" : "False"; + url += "&t=" + teen + "&m=" + mature; + // and load the URL in the web view mBrowser->navigateTo(url); } -- cgit v1.2.3 From d8b3e7a021b97bf3cb4494c4d9228ed0a3c16738 Mon Sep 17 00:00:00 2001 From: Martin Reddy <lynx@lindenlab.com> Date: Mon, 2 Nov 2009 11:50:17 +0000 Subject: Added a newline at the end of llui/lliconctrl.cpp to unbork parabuild. --- indra/llui/lliconctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llui/lliconctrl.cpp b/indra/llui/lliconctrl.cpp index 82ffac9580..c1bc21f2e9 100644 --- a/indra/llui/lliconctrl.cpp +++ b/indra/llui/lliconctrl.cpp @@ -123,4 +123,4 @@ void LLIconCtrl::setIconImageDrawSize() mImagep->getImage()->setKnownDrawSize(mDrawWidth, mDrawHeight) ; } } -} \ No newline at end of file +} -- cgit v1.2.3 From 3ec9f79f0782539659963f159f6b94c86d1ebd7b Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 2 Nov 2009 15:51:55 +0000 Subject: DEV-40702: fixed the audio device enumeration code so that it works with Vivox V2 and V3 SDKs. We were assuming that the <CaptureDevice> tag contains only a single tag (<Device>), but the V3 SDK returns other tags such as <DisplayName> and <Type>. I also added the current Vivox SDK version to the About window so that it is easier to tell which version your client is actually using. --- indra/newview/llfloaterabout.cpp | 2 ++ indra/newview/llvoiceclient.cpp | 33 ++++++++++++---------- indra/newview/llvoiceclient.h | 5 ++++ .../newview/skins/default/xui/en/floater_about.xml | 1 + 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp index 63ea990d14..88658f7b9f 100644 --- a/indra/newview/llfloaterabout.cpp +++ b/indra/newview/llfloaterabout.cpp @@ -39,6 +39,7 @@ #include "llagent.h" #include "llappviewer.h" #include "llsecondlifeurls.h" +#include "llvoiceclient.h" #include "lluictrlfactory.h" #include "llviewertexteditor.h" #include "llviewercontrol.h" @@ -268,6 +269,7 @@ LLSD LLFloaterAbout::getInfo() info["J2C_VERSION"] = LLImageJ2C::getEngineInfo(); bool want_fullname = true; info["AUDIO_DRIVER_VERSION"] = gAudiop ? LLSD(gAudiop->getDriverName(want_fullname)) : LLSD(); + info["VIVOX_VERSION"] = gVoiceClient ? gVoiceClient->getAPIVersion() : "Unknown"; // TODO: Implement media plugin version query info["QT_WEBKIT_VERSION"] = "4.5.2"; diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp index 2834284a9b..df5481c874 100644 --- a/indra/newview/llvoiceclient.cpp +++ b/indra/newview/llvoiceclient.cpp @@ -254,6 +254,7 @@ protected: std::string nameString; std::string audioMediaString; std::string displayNameString; + std::string deviceString; int participantType; bool isLocallyMuted; bool isModeratorMuted; @@ -485,6 +486,14 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr) { gVoiceClient->clearRenderDevices(); } + else if (!stricmp("CaptureDevice", tag)) + { + deviceString.clear(); + } + else if (!stricmp("RenderDevice", tag)) + { + deviceString.clear(); + } else if (!stricmp("Buddies", tag)) { gVoiceClient->deleteAllBuddies(); @@ -508,7 +517,6 @@ void LLVivoxProtocolParser::StartTag(const char *tag, const char **attr) void LLVivoxProtocolParser::EndTag(const char *tag) { const std::string& string = textBuffer; - bool clearbuffer = true; responseDepth--; @@ -580,6 +588,8 @@ void LLVivoxProtocolParser::EndTag(const char *tag) nameString = string; else if (!stricmp("DisplayName", tag)) displayNameString = string; + else if (!stricmp("Device", tag)) + deviceString = string; else if (!stricmp("AccountName", tag)) nameString = string; else if (!stricmp("ParticipantType", tag)) @@ -596,18 +606,13 @@ void LLVivoxProtocolParser::EndTag(const char *tag) uriString = string; else if (!stricmp("Presence", tag)) statusString = string; - else if (!stricmp("Device", tag)) - { - // This closing tag shouldn't clear the accumulated text. - clearbuffer = false; - } else if (!stricmp("CaptureDevice", tag)) { - gVoiceClient->addCaptureDevice(textBuffer); + gVoiceClient->addCaptureDevice(deviceString); } else if (!stricmp("RenderDevice", tag)) { - gVoiceClient->addRenderDevice(textBuffer); + gVoiceClient->addRenderDevice(deviceString); } else if (!stricmp("Buddy", tag)) { @@ -648,12 +653,8 @@ void LLVivoxProtocolParser::EndTag(const char *tag) else if (!stricmp("SubscriptionType", tag)) subscriptionType = string; - - if(clearbuffer) - { - textBuffer.clear(); - accumulateText= false; - } + textBuffer.clear(); + accumulateText= false; if (responseDepth == 0) { @@ -1160,7 +1161,8 @@ LLVoiceClient::LLVoiceClient() : mVoiceEnabled(false), mWriteInProgress(false), - mLipSyncEnabled(false) + mLipSyncEnabled(false), + mAPIVersion("Unknown") { gVoiceClient = this; @@ -3749,6 +3751,7 @@ void LLVoiceClient::connectorCreateResponse(int statusCode, std::string &statusS { // Connector created, move forward. LL_INFOS("Voice") << "Connector.Create succeeded, Vivox SDK version is " << versionID << LL_ENDL; + mAPIVersion = versionID; mConnectorHandle = connectorHandle; if(getState() == stateConnectorStarting) { diff --git a/indra/newview/llvoiceclient.h b/indra/newview/llvoiceclient.h index bddd18dee8..9df96d9a52 100644 --- a/indra/newview/llvoiceclient.h +++ b/indra/newview/llvoiceclient.h @@ -204,6 +204,9 @@ static void updatePosition(void); void keyDown(KEY key, MASK mask); void keyUp(KEY key, MASK mask); void middleMouseState(bool down); + + // Return the version of the Vivox library + std::string getAPIVersion() const { return mAPIVersion; } ///////////////////////////// // Accessors for data related to nearby speakers @@ -739,6 +742,8 @@ static std::string nameFromsipURI(const std::string &uri); BOOL mLipSyncEnabled; + std::string mAPIVersion; + typedef std::set<LLVoiceClientParticipantObserver*> observer_set_t; observer_set_t mParticipantObservers; diff --git a/indra/newview/skins/default/xui/en/floater_about.xml b/indra/newview/skins/default/xui/en/floater_about.xml index 02c6ed1b20..3f2636ae52 100644 --- a/indra/newview/skins/default/xui/en/floater_about.xml +++ b/indra/newview/skins/default/xui/en/floater_about.xml @@ -49,6 +49,7 @@ libcurl Version: [LIBCURL_VERSION] J2C Decoder Version: [J2C_VERSION] Audio Driver Version: [AUDIO_DRIVER_VERSION] Qt Webkit Version: [QT_WEBKIT_VERSION] +Vivox Version: [VIVOX_VERSION] </floater.string> <floater.string name="none"> -- cgit v1.2.3 From 9fb250e34430c356852f6a3109d04e4c904dfc96 Mon Sep 17 00:00:00 2001 From: Lynx Linden <lynx@lindenlab.com> Date: Mon, 2 Nov 2009 16:15:22 +0000 Subject: DEV-40744 EXT-332: include viewer version information in the Buy L$ requests to the XML-RPC server, including the channel name and the major, minor, patch, and build version numbers. This information is needed by the international billing guys to determine whether an international customer is trying to use a 1.23 viewer to buy L$. --- indra/newview/llcurrencyuimanager.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/indra/newview/llcurrencyuimanager.cpp b/indra/newview/llcurrencyuimanager.cpp index 979a1a9a60..c4bfd71999 100644 --- a/indra/newview/llcurrencyuimanager.cpp +++ b/indra/newview/llcurrencyuimanager.cpp @@ -35,6 +35,8 @@ #include "lluictrlfactory.h" #include "lltextbox.h" #include "lllineeditor.h" +#include "llviewercontrol.h" +#include "llversionviewer.h" #include "llcurrencyuimanager.h" @@ -156,6 +158,11 @@ void LLCurrencyUIManager::Impl::updateCurrencyInfo() "secureSessionId", gAgent.getSecureSessionID().asString()); keywordArgs.appendInt("currencyBuy", mUserCurrencyBuy); + keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName")); + keywordArgs.appendInt("viewerMajorVersion", LL_VERSION_MAJOR); + keywordArgs.appendInt("viewerMinorVersion", LL_VERSION_MINOR); + keywordArgs.appendInt("viewerPatchVersion", LL_VERSION_PATCH); + keywordArgs.appendInt("viewerBuildVersion", LL_VERSION_BUILD); LLXMLRPCValue params = LLXMLRPCValue::createArray(); params.append(keywordArgs); @@ -209,7 +216,12 @@ void LLCurrencyUIManager::Impl::startCurrencyBuy(const std::string& password) { keywordArgs.appendString("password", password); } - + keywordArgs.appendString("viewerChannel", gSavedSettings.getString("VersionChannelName")); + keywordArgs.appendInt("viewerMajorVersion", LL_VERSION_MAJOR); + keywordArgs.appendInt("viewerMinorVersion", LL_VERSION_MINOR); + keywordArgs.appendInt("viewerPatchVersion", LL_VERSION_PATCH); + keywordArgs.appendInt("viewerBuildVersion", LL_VERSION_BUILD); + LLXMLRPCValue params = LLXMLRPCValue::createArray(); params.append(keywordArgs); -- cgit v1.2.3 From b4b516b96689a2f8001bfebd641af7bb871ab11d Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Mon, 2 Nov 2009 08:35:37 -0800 Subject: Fix unclear function names around Pacific versus "SLT" time in string operations. Reviewed with Brad. --- indra/llcommon/llstring.cpp | 16 ++++++++-------- indra/llcommon/llstring.h | 17 ++++++++++------- indra/newview/llappviewer.cpp | 2 -- indra/newview/llappviewer.h | 4 ---- indra/newview/lleventinfo.cpp | 1 - indra/newview/llfloaterbump.cpp | 1 - indra/newview/llstartup.cpp | 8 +++++--- indra/newview/llworldmap.cpp | 1 - 8 files changed, 23 insertions(+), 27 deletions(-) diff --git a/indra/llcommon/llstring.cpp b/indra/llcommon/llstring.cpp index 721e5670e7..c027aa7bdd 100644 --- a/indra/llcommon/llstring.cpp +++ b/indra/llcommon/llstring.cpp @@ -671,9 +671,9 @@ std::string ll_convert_wide_to_string(const wchar_t* in) } #endif // LL_WINDOWS -long LLStringOps::sltOffset; -long LLStringOps::localTimeOffset; -bool LLStringOps::daylightSavings; +long LLStringOps::sPacificTimeOffset = 0; +long LLStringOps::sLocalTimeOffset = 0; +bool LLStringOps::sPacificDaylightTime = 0; std::map<std::string, std::string> LLStringOps::datetimeToCodes; S32 LLStringOps::collate(const llwchar* a, const llwchar* b) @@ -700,11 +700,11 @@ void LLStringOps::setupDatetimeInfo (bool daylight) tmpT = gmtime (&nowT); gmtT = mktime (tmpT); - localTimeOffset = (long) (gmtT - localT); + sLocalTimeOffset = (long) (gmtT - localT); - daylightSavings = daylight; - sltOffset = (daylightSavings? 7 : 8 ) * 60 * 60; + sPacificDaylightTime = daylight; + sPacificTimeOffset = (sPacificDaylightTime? 7 : 8 ) * 60 * 60; datetimeToCodes["wkday"] = "%a"; // Thu datetimeToCodes["weekday"] = "%A"; // Thursday @@ -957,7 +957,7 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token, } else if (param != "utc") // slt { - secFromEpoch -= LLStringOps::getSltOffset(); + secFromEpoch -= LLStringOps::getPacificTimeOffset(); } // if never fell into those two ifs above, param must be utc @@ -980,7 +980,7 @@ bool LLStringUtil::formatDatetime(std::string& replacement, std::string token, { // "slt" = Second Life Time, which is deprecated. // If not utc or user local time, fallback to Pacific time - replacement = LLStringOps::getDaylightSavings() ? "PDT" : "PST"; + replacement = LLStringOps::getPacificDaylightTime() ? "PDT" : "PST"; } return true; } diff --git a/indra/llcommon/llstring.h b/indra/llcommon/llstring.h index 0f2f05a0d8..edbb007f61 100644 --- a/indra/llcommon/llstring.h +++ b/indra/llcommon/llstring.h @@ -151,9 +151,9 @@ struct char_traits<U16> class LL_COMMON_API LLStringOps { private: - static long sltOffset; - static long localTimeOffset; - static bool daylightSavings; + static long sPacificTimeOffset; + static long sLocalTimeOffset; + static bool sPacificDaylightTime; static std::map<std::string, std::string> datetimeToCodes; public: @@ -184,10 +184,13 @@ public: static S32 collate(const char* a, const char* b) { return strcoll(a, b); } static S32 collate(const llwchar* a, const llwchar* b); - static void setupDatetimeInfo (bool daylight); - static long getSltOffset (void) {return sltOffset;} - static long getLocalTimeOffset (void) {return localTimeOffset;} - static bool getDaylightSavings (void) {return daylightSavings;} + static void setupDatetimeInfo(bool pacific_daylight_time); + static long getPacificTimeOffset(void) { return sPacificTimeOffset;} + static long getLocalTimeOffset(void) { return sLocalTimeOffset;} + // Is the Pacific time zone (aka server time zone) + // currently in daylight savings time? + static bool getPacificDaylightTime(void) { return sPacificDaylightTime;} + static std::string getDatetimeCode (std::string key); }; diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 06c9171d67..873215169e 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -238,8 +238,6 @@ U32 gFrameCount = 0; U32 gForegroundFrameCount = 0; // number of frames that app window was in foreground LLPumpIO* gServicePump = NULL; -BOOL gPacificDaylightTime = FALSE; - U64 gFrameTime = 0; F32 gFrameTimeSeconds = 0.f; F32 gFrameIntervalSeconds = 0.f; diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h index d970aa6ae1..73256a8fe6 100644 --- a/indra/newview/llappviewer.h +++ b/indra/newview/llappviewer.h @@ -301,10 +301,6 @@ extern U32 gForegroundFrameCount; extern LLPumpIO* gServicePump; -// Is the Pacific time zone (aka server time zone) -// currently in daylight savings time? -extern BOOL gPacificDaylightTime; - extern U64 gFrameTime; // The timestamp of the most-recently-processed frame extern F32 gFrameTimeSeconds; // Loses msec precision after ~4.5 hours... extern F32 gFrameIntervalSeconds; // Elapsed time between current and previous gFrameTimeSeconds diff --git a/indra/newview/lleventinfo.cpp b/indra/newview/lleventinfo.cpp index 9be45d18fb..aabd7ed997 100644 --- a/indra/newview/lleventinfo.cpp +++ b/indra/newview/lleventinfo.cpp @@ -33,7 +33,6 @@ #include "llviewerprecompiledheaders.h" #include "lleventinfo.h" -#include "llappviewer.h" // for gPacificDaylightTime #include "lluuid.h" #include "message.h" diff --git a/indra/newview/llfloaterbump.cpp b/indra/newview/llfloaterbump.cpp index 8b64f913e0..68f06b1e5b 100644 --- a/indra/newview/llfloaterbump.cpp +++ b/indra/newview/llfloaterbump.cpp @@ -40,7 +40,6 @@ #include "llsd.h" #include "lluictrlfactory.h" #include "llviewermessage.h" -#include "llappviewer.h" // gPacificDaylightTime ///---------------------------------------------------------------------------- /// Class LLFloaterBump diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp index 43b039f94e..9aa74e8b9f 100644 --- a/indra/newview/llstartup.cpp +++ b/indra/newview/llstartup.cpp @@ -1149,7 +1149,8 @@ bool idle_startup() } //setup map of datetime strings to codes and slt & local time offset from utc - LLStringOps::setupDatetimeInfo (gPacificDaylightTime); + // *TODO: Does this need to be here? + LLStringOps::setupDatetimeInfo (false); transition_back_to_login_panel(emsg.str()); show_connect_box = true; } @@ -3037,14 +3038,15 @@ bool process_login_success_response() gAgent.setGenderChosen(TRUE); } + bool pacific_daylight_time = false; flag = login_flags["daylight_savings"].asString(); if(flag == "Y") { - gPacificDaylightTime = (flag == "Y") ? TRUE : FALSE; + pacific_daylight_time = (flag == "Y"); } //setup map of datetime strings to codes and slt & local time offset from utc - LLStringOps::setupDatetimeInfo (gPacificDaylightTime); + LLStringOps::setupDatetimeInfo(pacific_daylight_time); } LLSD initial_outfit = response["initial-outfit"][0]; diff --git a/indra/newview/llworldmap.cpp b/indra/newview/llworldmap.cpp index 829d631473..f198f3a0cf 100644 --- a/indra/newview/llworldmap.cpp +++ b/indra/newview/llworldmap.cpp @@ -37,7 +37,6 @@ #include "llregionhandle.h" #include "message.h" -#include "llappviewer.h" // for gPacificDaylightTime #include "llagent.h" #include "llmapresponders.h" #include "llviewercontrol.h" -- cgit v1.2.3 From 94dfb5c933739fc69f8a6c083899d1cd313bc514 Mon Sep 17 00:00:00 2001 From: James Cook <james@lindenlab.com> Date: Mon, 2 Nov 2009 08:48:33 -0800 Subject: Ignore WinMerge .bak temp files. Not reviewed. --- .hgignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.hgignore b/.hgignore index 8e02212e79..454be00dbf 100644 --- a/.hgignore +++ b/.hgignore @@ -1,6 +1,10 @@ syntax: glob +# WinMerge temp files +*.bak +# Compiled python bytecode *.pyc +# Emacs temp files *~ .*.swp LICENSES -- cgit v1.2.3