From 9bca4a330f96da635a74a38fd98b83847b84ac5e Mon Sep 17 00:00:00 2001 From: Andrew Productengine Date: Tue, 23 Nov 2010 19:28:17 +0200 Subject: STORM-491 FIXED Fixed black arrows appearance near column's titles in scrollist. Bug was caused by setting image overlay with arrows that have "transparent" color when arrows are not needed. When scrollist was disabled while refreshing, they somewhy were visible in black color. - Now null image overlay is set when arrow shouldn't be visible. --- indra/llui/llscrolllistcolumn.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'indra/llui') diff --git a/indra/llui/llscrolllistcolumn.cpp b/indra/llui/llscrolllistcolumn.cpp index 2a4c1ca44c..696e4a2bb1 100644 --- a/indra/llui/llscrolllistcolumn.cpp +++ b/indra/llui/llscrolllistcolumn.cpp @@ -83,7 +83,14 @@ void LLScrollColumnHeader::draw() && (sort_column == mColumn->mSortingColumn || sort_column == mColumn->mName); BOOL is_ascending = mColumn->mParentCtrl->getSortAscending(); - setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, draw_arrow ? LLColor4::white : LLColor4::transparent); + if (draw_arrow) + { + setImageOverlay(is_ascending ? "up_arrow.tga" : "down_arrow.tga", LLFontGL::RIGHT, LLColor4::white); + } + else + { + setImageOverlay(LLUUID::null); + } // Draw children LLButton::draw(); -- cgit v1.3 From 552ddf4be4a5b906fb65b477cfba68da54bb8ec2 Mon Sep 17 00:00:00 2001 From: Vadim ProductEngine Date: Wed, 24 Nov 2010 18:56:21 +0200 Subject: STORM-666 FIXED Menu spawned by the overflow button had invalid position in Place Profile and Avatar Profile panels. Changes: * Changed the button class from LLButton to LLMenuButton to avoid duplicating menu positioning logic. * Enabled LLMenuButton to support aligning menu to the top right corner of the button. --- indra/llui/llmenubutton.cpp | 7 +++++++ indra/llui/llmenubutton.h | 1 + indra/newview/llpanelavatar.cpp | 22 +++------------------- indra/newview/llpanelavatar.h | 4 ---- indra/newview/llpanelplaces.cpp | 16 ++++------------ indra/newview/llpanelplaces.h | 3 ++- .../newview/skins/default/xui/da/panel_places.xml | 2 +- .../newview/skins/default/xui/da/panel_profile.xml | 2 +- .../newview/skins/default/xui/de/panel_places.xml | 2 +- .../newview/skins/default/xui/de/panel_profile.xml | 2 +- .../newview/skins/default/xui/en/panel_places.xml | 2 +- .../newview/skins/default/xui/en/panel_profile.xml | 2 +- .../newview/skins/default/xui/es/panel_places.xml | 2 +- .../newview/skins/default/xui/es/panel_profile.xml | 2 +- .../newview/skins/default/xui/fr/panel_places.xml | 2 +- .../newview/skins/default/xui/fr/panel_profile.xml | 2 +- .../newview/skins/default/xui/it/panel_places.xml | 2 +- .../newview/skins/default/xui/it/panel_profile.xml | 2 +- .../newview/skins/default/xui/ja/panel_places.xml | 2 +- .../newview/skins/default/xui/ja/panel_profile.xml | 2 +- .../newview/skins/default/xui/pl/panel_places.xml | 2 +- .../newview/skins/default/xui/pl/panel_profile.xml | 2 +- .../newview/skins/default/xui/pt/panel_places.xml | 2 +- .../newview/skins/default/xui/pt/panel_profile.xml | 2 +- 24 files changed, 35 insertions(+), 54 deletions(-) (limited to 'indra/llui') diff --git a/indra/llui/llmenubutton.cpp b/indra/llui/llmenubutton.cpp index ac568a83e4..eed0085273 100644 --- a/indra/llui/llmenubutton.cpp +++ b/indra/llui/llmenubutton.cpp @@ -175,6 +175,13 @@ void LLMenuButton::updateMenuOrigin() mY = rect.mTop + mMenuHandle.get()->getRect().getHeight(); break; } + case MP_TOP_RIGHT: + { + const LLRect& menu_rect = mMenuHandle.get()->getRect(); + mX = rect.mRight - menu_rect.getWidth(); + mY = rect.mTop + menu_rect.getHeight(); + break; + } case MP_BOTTOM_LEFT: { mX = rect.mLeft; diff --git a/indra/llui/llmenubutton.h b/indra/llui/llmenubutton.h index 9e91b9e99d..7b657595da 100644 --- a/indra/llui/llmenubutton.h +++ b/indra/llui/llmenubutton.h @@ -47,6 +47,7 @@ public: typedef enum e_menu_position { MP_TOP_LEFT, + MP_TOP_RIGHT, MP_BOTTOM_LEFT } EMenuPosition; diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 57180f63b5..1249d5d856 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -34,6 +34,7 @@ #include "llcombobox.h" #include "lldateutil.h" // ageFromDate() #include "llimview.h" +#include "llmenubutton.h" #include "llnotificationsutil.h" #include "lltexteditor.h" #include "lltexturectrl.h" @@ -479,7 +480,6 @@ BOOL LLPanelAvatarProfile::postBuild() childSetCommitCallback("im",(boost::bind(&LLPanelAvatarProfile::onIMButtonClick,this)),NULL); childSetCommitCallback("call",(boost::bind(&LLPanelAvatarProfile::onCallButtonClick,this)),NULL); childSetCommitCallback("teleport",(boost::bind(&LLPanelAvatarProfile::onTeleportButtonClick,this)),NULL); - childSetCommitCallback("overflow_btn", boost::bind(&LLPanelAvatarProfile::onOverflowButtonClicked, this), NULL); childSetCommitCallback("share",(boost::bind(&LLPanelAvatarProfile::onShareButtonClick,this)),NULL); childSetCommitCallback("show_on_map_btn", (boost::bind( &LLPanelAvatarProfile::onMapButtonClick, this)), NULL); @@ -500,7 +500,8 @@ BOOL LLPanelAvatarProfile::postBuild() enable.add("Profile.EnableBlock", boost::bind(&LLPanelAvatarProfile::enableBlock, this)); enable.add("Profile.EnableUnblock", boost::bind(&LLPanelAvatarProfile::enableUnblock, this)); - mProfileMenu = LLUICtrlFactory::getInstance()->createFromFile("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + LLToggleableMenu* profile_menu = LLUICtrlFactory::getInstance()->createFromFile("menu_profile_overflow.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance()); + getChild("overflow_btn")->setMenu(profile_menu, LLMenuButton::MP_TOP_RIGHT); LLVoiceClient::getInstance()->addObserver((LLVoiceClientStatusObserver*)this); @@ -752,23 +753,6 @@ void LLPanelAvatarProfile::onShareButtonClick() //*TODO not implemented } -void LLPanelAvatarProfile::onOverflowButtonClicked() -{ - if (!mProfileMenu->toggleVisibility()) - return; - - LLView* btn = getChild("overflow_btn"); - - if (mProfileMenu->getButtonRect().isEmpty()) - { - mProfileMenu->setButtonRect(btn); - } - mProfileMenu->updateParent(LLMenuGL::sMenuContainer); - - LLRect rect = btn->getRect(); - LLMenuGL::showPopup(this, mProfileMenu, rect.mRight, rect.mTop); -} - LLPanelAvatarProfile::~LLPanelAvatarProfile() { if(getAvatarId().notNull()) diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 11c7716322..71d9d0a95a 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -34,7 +34,6 @@ class LLComboBox; class LLLineEditor; -class LLToggleableMenu; enum EOnlineStatus { @@ -207,14 +206,11 @@ protected: void onCallButtonClick(); void onTeleportButtonClick(); void onShareButtonClick(); - void onOverflowButtonClicked(); private: typedef std::map< std::string,LLUUID> group_map_t; group_map_t mGroups; - - LLToggleableMenu* mProfileMenu; }; /** diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp index f0e60386b6..c524fd7059 100644 --- a/indra/newview/llpanelplaces.cpp +++ b/indra/newview/llpanelplaces.cpp @@ -39,6 +39,7 @@ #include "llfiltereditor.h" #include "llfirstuse.h" #include "llfloaterreg.h" +#include "llmenubutton.h" #include "llnotificationsutil.h" #include "lltabcontainer.h" #include "lltexteditor.h" @@ -282,8 +283,8 @@ BOOL LLPanelPlaces::postBuild() mCloseBtn = getChild("close_btn"); mCloseBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this)); - mOverflowBtn = getChild("overflow_btn"); - mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this)); + mOverflowBtn = getChild("overflow_btn"); + mOverflowBtn->setMouseDownCallback(boost::bind(&LLPanelPlaces::onOverflowButtonClicked, this)); mPlaceInfoBtn = getChild("profile_btn"); mPlaceInfoBtn->setClickedCallback(boost::bind(&LLPanelPlaces::onProfileButtonClicked, this)); @@ -783,16 +784,7 @@ void LLPanelPlaces::onOverflowButtonClicked() return; } - if (!menu->toggleVisibility()) - return; - - if (menu->getButtonRect().isEmpty()) - { - menu->setButtonRect(mOverflowBtn); - } - menu->updateParent(LLMenuGL::sMenuContainer); - LLRect rect = mOverflowBtn->getRect(); - LLMenuGL::showPopup(this, menu, rect.mRight, rect.mTop); + mOverflowBtn->setMenu(menu, LLMenuButton::MP_TOP_RIGHT); } void LLPanelPlaces::onProfileButtonClicked() diff --git a/indra/newview/llpanelplaces.h b/indra/newview/llpanelplaces.h index c3b2ab806f..5523122a0f 100644 --- a/indra/newview/llpanelplaces.h +++ b/indra/newview/llpanelplaces.h @@ -47,6 +47,7 @@ class LLPlacesParcelObserver; class LLRemoteParcelInfoObserver; class LLTabContainer; class LLToggleableMenu; +class LLMenuButton; typedef std::pair folder_pair_t; @@ -123,7 +124,7 @@ private: LLButton* mSaveBtn; LLButton* mCancelBtn; LLButton* mCloseBtn; - LLButton* mOverflowBtn; + LLMenuButton* mOverflowBtn; LLButton* mPlaceInfoBtn; LLPlacesInventoryObserver* mInventoryObserver; diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml index ca3d7c71bb..fe8ca69f34 100644 --- a/indra/newview/skins/default/xui/da/panel_places.xml +++ b/indra/newview/skins/default/xui/da/panel_places.xml @@ -21,7 +21,7 @@