From c35801ef1c56b6c84063f47b490a8d2220b77ca7 Mon Sep 17 00:00:00 2001 From: Richard Linden Date: Tue, 5 Nov 2013 19:26:23 -0800 Subject: fixed focus issue on inventory --- indra/newview/app_settings/settings.xml | 44 --------- indra/newview/llavatariconctrl.cpp | 67 ++++++++----- indra/newview/llavatariconctrl.h | 46 +++++++-- indra/newview/llsidepanelinventory.cpp | 2 +- indra/newview/llviewertexturelist.cpp | 51 +++++++--- indra/newview/llviewertexturelist.h | 10 +- indra/newview/skins/default/textures/textures.xml | 10 +- .../textures/widgets/horizontal_drag_handle.png | Bin 197 -> 217 bytes .../textures/widgets/vertical_drag_handle.png | Bin 196 -> 238 bytes .../skins/default/xui/en/panel_main_inventory.xml | 2 - .../skins/default/xui/en/sidepanel_inventory.xml | 105 ++++++++++----------- .../skins/default/xui/en/widgets/avatar_icon.xml | 12 ++- 12 files changed, 189 insertions(+), 160 deletions(-) (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 09d74a7f5e..df9dd3e1b5 100755 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -12004,50 +12004,6 @@ Value 1 - UIAvatariconctrlSymbolHPad - - Comment - UI Avatar Icon Control Symbol Horizontal Pad - Persist - 1 - Type - S32 - Value - 2 - - UIAvatariconctrlSymbolVPad - - Comment - UI Avatar Icon Control Symbol Vertical Pad - Persist - 1 - Type - S32 - Value - 2 - - UIAvatariconctrlSymbolSize - - Comment - UI Avatar Icon Control Symbol Size - Persist - 1 - Type - S32 - Value - 5 - - UIAvatariconctrlSymbolPosition - - Comment - UI Avatar Icon Control Symbol Position (TopLeft|TopRight|BottomLeft|BottomRight) - Persist - 1 - Type - String - Value - BottomRight - UIButtonOrigHPad Comment diff --git a/indra/newview/llavatariconctrl.cpp b/indra/newview/llavatariconctrl.cpp index 7a49b77490..746b541f9d 100755 --- a/indra/newview/llavatariconctrl.cpp +++ b/indra/newview/llavatariconctrl.cpp @@ -49,6 +49,18 @@ static LLDefaultChildRegistry::Register r("avatar_icon"); +namespace LLInitParam +{ + void TypeValues::declareValues() + { + declare("BottomLeft", LLAvatarIconCtrlEnums::BOTTOM_LEFT); + declare("BottomRight", LLAvatarIconCtrlEnums::BOTTOM_RIGHT); + declare("TopLeft", LLAvatarIconCtrlEnums::TOP_LEFT); + declare("TopRight", LLAvatarIconCtrlEnums::TOP_RIGHT); + } +} + + bool LLAvatarIconIDCache::LLAvatarIconIDCacheItem::expired() { const F64 SEC_PER_DAY_PLUS_HOUR = (24.0 + 1.0) * 60.0 * 60.0; @@ -145,52 +157,63 @@ void LLAvatarIconIDCache::remove (const LLUUID& avatar_id) LLAvatarIconCtrl::Params::Params() : avatar_id("avatar_id"), draw_tooltip("draw_tooltip", true), - default_icon_name("default_icon_name") + default_icon_name("default_icon_name"), + symbol_hpad("symbol_hpad"), + symbol_vpad("symbol_vpad"), + symbol_size("symbol_size", 1), + symbol_pos("symbol_pos", LLAvatarIconCtrlEnums::BOTTOM_RIGHT) { + changeDefault(min_width, 32); + changeDefault(min_height, 32); } LLAvatarIconCtrl::LLAvatarIconCtrl(const LLAvatarIconCtrl::Params& p) - : LLIconCtrl(p), +: LLIconCtrl(p), LLAvatarPropertiesObserver(), mAvatarId(), mFullName(), mDrawTooltip(p.draw_tooltip), mDefaultIconName(p.default_icon_name), - mAvatarNameCacheConnection() + mAvatarNameCacheConnection(), + mSymbolHpad(p.symbol_hpad), + mSymbolVpad(p.symbol_vpad), + mSymbolSize(p.symbol_size), + mSymbolPos(p.symbol_pos) { 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); - static LLUICachedControl llavatariconctrl_symbol_size("UIAvatariconctrlSymbolSize", 5); - static LLUICachedControl llavatariconctrl_symbol_pos("UIAvatariconctrlSymbolPosition", "BottomRight"); // BottomRight is the default position - S32 left = rect.getWidth() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_hpad; - S32 bottom = llavatariconctrl_symbol_vpad; + S32 left = rect.getWidth() - mSymbolSize - mSymbolHpad; + S32 bottom = mSymbolVpad; - if ("BottomLeft" == (std::string)llavatariconctrl_symbol_pos) + switch(mSymbolPos) + { + case LLAvatarIconCtrlEnums::BOTTOM_LEFT: { - left = llavatariconctrl_symbol_hpad; - bottom = llavatariconctrl_symbol_vpad; + left = mSymbolHpad; + bottom = mSymbolVpad; } - else if ("TopLeft" == (std::string)llavatariconctrl_symbol_pos) + + case LLAvatarIconCtrlEnums::TOP_LEFT: { - left = llavatariconctrl_symbol_hpad; - bottom = rect.getHeight() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_vpad; + left = mSymbolHpad; + bottom = rect.getHeight() - mSymbolSize - mSymbolVpad; } - else if ("TopRight" == (std::string)llavatariconctrl_symbol_pos) + + case LLAvatarIconCtrlEnums::TOP_RIGHT: { - left = rect.getWidth() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_hpad; - bottom = rect.getHeight() - llavatariconctrl_symbol_size - llavatariconctrl_symbol_vpad; + left = rect.getWidth() - mSymbolSize - mSymbolHpad; + bottom = rect.getHeight() - mSymbolSize - mSymbolVpad; } - rect.setOriginAndSize(left, bottom, llavatariconctrl_symbol_size, llavatariconctrl_symbol_size); + case LLAvatarIconCtrlEnums::BOTTOM_RIGHT: + // fallthrough, is default + default: + rect.setOriginAndSize(left, bottom, mSymbolSize, mSymbolSize); + } if (p.avatar_id.isProvided()) { diff --git a/indra/newview/llavatariconctrl.h b/indra/newview/llavatariconctrl.h index 4929efb7d0..5b5720f4ac 100755 --- a/indra/newview/llavatariconctrl.h +++ b/indra/newview/llavatariconctrl.h @@ -29,7 +29,7 @@ #include -#include "../llui/lliconctrl.h" +#include "lliconctrl.h" #include "llavatarpropertiesprocessor.h" #include "llviewermenu.h" @@ -41,14 +41,14 @@ public: struct LLAvatarIconIDCacheItem { LLUUID icon_id; - LLDate cached_time; + LLDate cached_time; bool expired(); }; - LLAvatarIconIDCache():mFilename("avatar_icons_cache.txt") - { - } + LLAvatarIconIDCache() + : mFilename("avatar_icons_cache.txt") + {} void load (); void save (); @@ -64,15 +64,41 @@ protected: std::map mCache;//we cache only LLUID and time }; +namespace LLAvatarIconCtrlEnums +{ + enum ESymbolPos + { + BOTTOM_LEFT, + BOTTOM_RIGHT, + TOP_LEFT, + TOP_RIGHT + }; +} + + +namespace LLInitParam +{ + template<> + struct TypeValues : public TypeValuesHelper + { + static void declareValues(); + }; +} + class LLAvatarIconCtrl : public LLIconCtrl, public LLAvatarPropertiesObserver { public: struct Params : public LLInitParam::Block { - Optional avatar_id; - Optional draw_tooltip; - Optional default_icon_name; + Optional avatar_id; + Optional draw_tooltip; + Optional default_icon_name; + Optional symbol_hpad, + symbol_vpad, + symbol_size; + Optional symbol_pos; + Params(); }; @@ -98,6 +124,10 @@ protected: std::string mFullName; bool mDrawTooltip; std::string mDefaultIconName; + S32 mSymbolHpad, + mSymbolVpad, + mSymbolSize; + LLAvatarIconCtrlEnums::ESymbolPos mSymbolPos; bool updateFromCache(); diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index d20f89456b..7121822015 100755 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -161,7 +161,7 @@ BOOL LLSidepanelInventory::postBuild() { // UI elements from inventory panel { - mInventoryPanel = getChild("sidepanel__inventory_panel"); + mInventoryPanel = getChild("sidepanel_inventory_panel"); mInfoBtn = mInventoryPanel->getChild("info_btn"); mInfoBtn->setClickedCallback(boost::bind(&LLSidepanelInventory::onInfoButtonClicked, this)); diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index 2f887d7185..dae76272ec 100755 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -70,6 +70,7 @@ S32 LLViewerTextureList::sNumImages = 0; LLViewerTextureList gTextureList; static LLTrace::BlockTimerStatHandle FTM_PROCESS_IMAGES("Process Images"); + /////////////////////////////////////////////////////////////////////////////// LLViewerTextureList::LLViewerTextureList() @@ -1587,28 +1588,31 @@ LLUIImagePtr LLUIImageList::getUIImage(const std::string& image_name, S32 priori } LLUIImagePtr LLUIImageList::loadUIImageByName(const std::string& name, const std::string& filename, - BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority ) + BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority, + LLUIImage::EScaleStyle scale_style) { if (boost_priority == LLGLTexture::BOOST_NONE) { boost_priority = LLGLTexture::BOOST_UI; } LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTextureFromFile(filename, FTT_LOCAL_FILE, MIPMAP_NO, boost_priority); - return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect); + return loadUIImage(imagep, name, use_mips, scale_rect, clip_rect, scale_style); } LLUIImagePtr LLUIImageList::loadUIImageByID(const LLUUID& id, - BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority) + BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLViewerTexture::EBoostLevel boost_priority, + LLUIImage::EScaleStyle scale_style) { if (boost_priority == LLGLTexture::BOOST_NONE) { boost_priority = LLGLTexture::BOOST_UI; } LLViewerFetchedTexture* imagep = LLViewerTextureManager::getFetchedTexture(id, FTT_DEFAULT, MIPMAP_NO, boost_priority); - return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect); + return loadUIImage(imagep, id.asString(), use_mips, scale_rect, clip_rect, scale_style); } -LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect) +LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, + LLUIImage::EScaleStyle scale_style) { if (!imagep) return NULL; @@ -1621,6 +1625,8 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st imagep->setNoDelete(); LLUIImagePtr new_imagep = new LLUIImage(name, imagep); + new_imagep->setScaleStyle(scale_style); + mUIImages.insert(std::make_pair(name, new_imagep)); mUITextureList.push_back(imagep); @@ -1639,7 +1645,7 @@ LLUIImagePtr LLUIImageList::loadUIImage(LLViewerFetchedTexture* imagep, const st return new_imagep; } -LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect) +LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLUIImage::EScaleStyle scale_style) { // look for existing image uuid_ui_image_map_t::iterator found_it = mUIImages.find(name); @@ -1649,7 +1655,7 @@ LLUIImagePtr LLUIImageList::preloadUIImage(const std::string& name, const std::s LL_ERRS() << "UI Image " << name << " already loaded." << LL_ENDL; } - return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect); + return loadUIImageByName(name, filename, use_mips, scale_rect, clip_rect, LLGLTexture::BOOST_UI, scale_style); } //static @@ -1709,14 +1715,28 @@ void LLUIImageList::onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_v } } +namespace LLInitParam +{ + template<> + struct TypeValues : public TypeValuesHelper + { + static void declareValues() + { + declare("scale_inner", LLUIImage::SCALE_INNER); + declare("scale_outer", LLUIImage::SCALE_OUTER); + } + }; +} + struct UIImageDeclaration : public LLInitParam::Block { - Mandatory name; - Optional file_name; - Optional preload; - Optional scale; - Optional clip; - Optional use_mips; + Mandatory name; + Optional file_name; + Optional preload; + Optional scale; + Optional clip; + Optional use_mips; + Optional scale_type; UIImageDeclaration() : name("name"), @@ -1724,7 +1744,8 @@ struct UIImageDeclaration : public LLInitParam::Block preload("preload", false), scale("scale"), clip("clip"), - use_mips("use_mips", false) + use_mips("use_mips", false), + scale_type("scale_type", LLUIImage::SCALE_INNER) {} }; @@ -1812,7 +1833,7 @@ bool LLUIImageList::initFromFile() { continue; } - preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip); + preloadUIImage(image.name, file_name, image.use_mips, image.scale, image.clip, image.scale_type); } if (cur_pass == PASS_DECODE_NOW && !gSavedSettings.getBOOL("NoPreload")) diff --git a/indra/newview/llviewertexturelist.h b/indra/newview/llviewertexturelist.h index 9dd3a9ee8b..2f84d0947a 100755 --- a/indra/newview/llviewertexturelist.h +++ b/indra/newview/llviewertexturelist.h @@ -218,20 +218,22 @@ public: bool initFromFile(); - LLPointer preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect); + LLPointer preloadUIImage(const std::string& name, const std::string& filename, BOOL use_mips, const LLRect& scale_rect, const LLRect& clip_rect, LLUIImage::EScaleStyle stype); static void onUIImageLoaded( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata ); private: LLPointer loadUIImageByName(const std::string& name, const std::string& filename, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null, - LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI); + LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI, + LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER); LLPointer loadUIImageByID(const LLUUID& id, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null, - LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI); + LLViewerTexture::EBoostLevel boost_priority = LLGLTexture::BOOST_UI, + LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER); - LLPointer loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null); + LLPointer loadUIImage(LLViewerFetchedTexture* imagep, const std::string& name, BOOL use_mips = FALSE, const LLRect& scale_rect = LLRect::null, const LLRect& clip_rect = LLRect::null, LLUIImage::EScaleStyle = LLUIImage::SCALE_INNER); struct LLUIImageLoadData diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml index 54f60f4441..ff0a692741 100755 --- a/indra/newview/skins/default/textures/textures.xml +++ b/indra/newview/skins/default/textures/textures.xml @@ -29,7 +29,7 @@ with the same filename but different name --> - + @@ -231,8 +231,9 @@ with the same filename but different name + - + @@ -646,8 +647,9 @@ with the same filename but different name + - @@ -775,6 +777,4 @@ with the same filename but different name - - diff --git a/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png b/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png index 642eac4065..5f5a33be42 100644 Binary files a/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png and b/indra/newview/skins/default/textures/widgets/horizontal_drag_handle.png differ diff --git a/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png b/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png index b06b70cf36..2ce5208c21 100644 Binary files a/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png and b/indra/newview/skins/default/textures/widgets/vertical_drag_handle.png differ diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index 1c882bb099..0518688f45 100755 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -1,6 +1,5 @@ - - - Purchases from the marketplace will be delivered here. - + +Purchases from the marketplace will be delivered here. + - - - -