From bc5ad04d6164d186cf504212ea559405b8608811 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 09:41:54 +0200 Subject: applying patch for EXT-2357 --HG-- branch : product-engine --- indra/llui/lltabcontainer.cpp | 152 +++++++++++++++++++-- indra/llui/lltabcontainer.h | 26 +++- indra/newview/llimfloatercontainer.cpp | 10 +- .../skins/default/xui/en/floater_im_container.xml | 7 +- .../skins/default/xui/en/widgets/tab_container.xml | 1 + 5 files changed, 185 insertions(+), 11 deletions(-) (limited to 'indra') diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 6be76605fd..52fc2adb25 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -35,7 +35,6 @@ #include "lltabcontainer.h" #include "llfocusmgr.h" -#include "llbutton.h" #include "lllocalcliprect.h" #include "llrect.h" #include "llresizehandle.h" @@ -96,6 +95,92 @@ public: //---------------------------------------------------------------------------- +//============================================================================ +/* + * @file lltabcontainer.cpp + * @brief class implements LLButton with LLIconCtrl on it + */ +class LLCustomButtonIconCtrl : public LLButton +{ +public: + struct Params + : public LLInitParam::Block + { + // LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value + Optional icon_ctrl_pad; + + Optional icon_ctrl_width, + icon_ctrl_height; + Params(): + icon_ctrl_pad("icon_ctrl_pad", 0), + icon_ctrl_width("icon_ctrl_width", 16), + icon_ctrl_height("icon_ctrl_height", 16) + {} + }; + +protected: + friend class LLUICtrlFactory; + LLCustomButtonIconCtrl(const Params& p): + LLButton(p), + mIcon(NULL), + mIconCtrlPad(p.icon_ctrl_pad), + mIconCtrlWidht(p.icon_ctrl_width), + mIconCtrlHeight(p.icon_ctrl_height) + {} + +public: + + void updateLayout() + { + LLRect button_rect = getRect(); + LLRect icon_rect = mIcon->getRect(); + S32 pad = mIconCtrlPad * 2; + + switch(mIconAlignment) + { + case LLFontGL::LEFT: + icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad, mIconCtrlWidht - pad, mIconCtrlHeight - pad); + setLeftHPad(mIconCtrlWidht + pad); + break; + case LLFontGL::HCENTER: + //*TODO implement for HCENTER icon alignment + break; + case LLFontGL::RIGHT: + //*TODO implement for RIGHT icon alignment + break; + default: + break; + } + mIcon->setRect(icon_rect); + } + + void setIcon(LLIconCtrl* icon, LLFontGL::HAlign alignment = LLFontGL::LEFT) + { + if(icon) + { + if(mIcon) + { + removeChild(mIcon); + mIcon->die(); + } + mIcon = icon; + mIconAlignment = alignment; + + addChild(mIcon); + updateLayout(); + } + } + + +private: + LLIconCtrl* mIcon; + LLFontGL::HAlign mIconAlignment; + S32 mIconCtrlPad; + S32 mIconCtrlWidht; + S32 mIconCtrlHeight; +}; +//============================================================================ + struct LLPlaceHolderPanel : public LLPanel { // create dummy param block to register with "placeholder" nane @@ -127,7 +212,12 @@ LLTabContainer::Params::Params() tab_padding_right("tab_padding_right"), first_tab("first_tab"), middle_tab("middle_tab"), - last_tab("last_tab") + last_tab("last_tab"), + use_custom_icon_ctrl("use_custom_icon_ctrl", false), + tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0), + tab_icon_ctrl_width("tab_icon_ctrl_width"), + tab_icon_ctrl_height("tab_icon_ctrl_height") + { name(std::string("tab_container")); mouse_opaque = false; @@ -162,7 +252,11 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p) mFont(p.font), mFirstTabParams(p.first_tab), mMiddleTabParams(p.middle_tab), - mLastTabParams(p.last_tab) + mLastTabParams(p.last_tab), + mCustomIconCtrlUsed(p.use_custom_icon_ctrl), + mTabIconCtrlPad(p.tab_icon_ctrl_pad), + mTabIconCtrlWidth(p.tab_icon_ctrl_width), + mTabIconCtrlHeight(p.tab_icon_ctrl_height) { static LLUICachedControl tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -942,7 +1036,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) { p.pad_left(indent); } - btn = LLUICtrlFactory::create(p); + if(mCustomIconCtrlUsed) + { + btn = createCustomButton(p); + } + else + { + btn = LLUICtrlFactory::create(p); + } } else { @@ -980,7 +1081,14 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) p.follows.flags = p.follows.flags() | FOLLOWS_BOTTOM; } -++ btn = LLUICtrlFactory::create(p); + if(mCustomIconCtrlUsed) + { + btn = createCustomButton(p); + } + else + { + btn = LLUICtrlFactory::create(p); + } } } @@ -1043,6 +1151,19 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) updateMaxScrollPos(); } +LLButton* LLTabContainer::createCustomButton(const LLButton::Params& p) +{ + LLCustomButtonIconCtrl::Params custom_btn_params; + LLButton::Params* btn_params_p = dynamic_cast(&custom_btn_params); + + btn_params_p->overwriteFrom(p); + custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad); + custom_btn_params.icon_ctrl_width(mTabIconCtrlWidth); + custom_btn_params.icon_ctrl_height(mTabIconCtrlHeight); + + return LLUICtrlFactory::create(custom_btn_params); +} + void LLTabContainer::addPlaceholder(LLPanel* child, const std::string& label) { addTabPanel(TabPanelParams().panel(child).label(label).is_placeholder(true)); @@ -1484,7 +1605,7 @@ void LLTabContainer::setTabImage(LLPanel* child, std::string image_name, const L if( tuple ) { tuple->mButton->setImageOverlay(image_name, LLFontGL::LEFT, color); - reshape_tuple(tuple); + reshapeTuple(tuple); } } @@ -1494,11 +1615,26 @@ void LLTabContainer::setTabImage(LLPanel* child, const LLUUID& image_id, const L if( tuple ) { tuple->mButton->setImageOverlay(image_id, LLFontGL::LEFT, color); - reshape_tuple(tuple); + reshapeTuple(tuple); + } +} + +void LLTabContainer::setTabImage(LLPanel* child, LLIconCtrl* icon) +{ + LLTabTuple* tuple = getTabByPanel(child); + LLCustomButtonIconCtrl* button; + + if(tuple) + { + button = dynamic_cast(tuple->mButton); + if(button) + { + button->setIcon(icon); + } } } -void LLTabContainer::reshape_tuple(LLTabTuple* tuple) +void LLTabContainer::reshapeTuple(LLTabTuple* tuple) { static LLUICachedControl tab_padding ("UITabPadding", 0); static LLUICachedControl image_left_padding ("UIButtonImageLeftPadding", 4); diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 2a55877d3c..278cf01375 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -36,6 +36,8 @@ #include "llpanel.h" #include "lltextbox.h" #include "llframetimer.h" +#include "lliconctrl.h" +#include "llbutton.h" class LLTabTuple; @@ -90,6 +92,21 @@ public: middle_tab, last_tab; + /** + * Use LLCustomButtonIconCtrl or LLButton in LLTabTuple + */ + Optional use_custom_icon_ctrl; + + /** + * Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true) + */ + Optional tab_icon_ctrl_pad; + /** + * LLIconCtrl size + */ + Optional tab_icon_ctrl_width, + tab_icon_ctrl_height; + Params(); }; @@ -173,6 +190,7 @@ public: void setTabPanelFlashing(LLPanel* child, BOOL state); void setTabImage(LLPanel* child, std::string img_name, const LLColor4& color = LLColor4::white); void setTabImage(LLPanel* child, const LLUUID& img_id, const LLColor4& color = LLColor4::white); + void setTabImage(LLPanel* child, LLIconCtrl* icon); void setTitle( const std::string& title ); const std::string getPanelTitle(S32 index); @@ -228,7 +246,8 @@ private: // updates tab button images given the tuple, tab position and the corresponding params void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos); - void reshape_tuple(LLTabTuple* tuple); + void reshapeTuple(LLTabTuple* tuple); + LLButton* createCustomButton(const LLButton::Params& p); // Variables @@ -278,6 +297,11 @@ private: TabParams mFirstTabParams; TabParams mMiddleTabParams; TabParams mLastTabParams; + + bool mCustomIconCtrlUsed; + S32 mTabIconCtrlPad; + S32 mTabIconCtrlHeight; + S32 mTabIconCtrlWidth; }; #endif // LL_TABCONTAINER_H diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 22eb9a51d2..7c7a4222d4 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -111,6 +111,14 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, else { LLUUID avatar_id = LLIMModel::getInstance()->getOtherParticipantID(session_id); + + LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); + icon_params.avatar_id = avatar_id; + LLAvatarIconCtrl* icon = LLUICtrlFactory::instance().createWidget(icon_params); + icon->setValue(avatar_id); + mTabContainer->setTabImage(floaterp, icon); + + /* LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance(); app.addObserver(avatar_id, this); floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); @@ -125,7 +133,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, { mTabContainer->setTabImage(floaterp, "Generic_Person"); app.sendAvatarPropertiesRequest(avatar_id); - } + }*/ } } diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index bd25288a9e..0d1a4a831d 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -19,8 +19,13 @@ left="1" name="im_box_tab_container" tab_position="bottom" - tab_width="80" + tab_width="64" + tab_max_width = "134" + tab_icon_ctrl_width = "16" + tab_icon_ctrl_height = "16" tab_height="16" + use_custom_icon_ctrl="true" + tab_icon_ctrl_pad="2" top="0" width="390" /> Date: Fri, 5 Feb 2010 12:12:46 +0200 Subject: Fixed critical bug EXT-4947 (Viewer crashes after 'See my online status' check-box was checked for deleted from friends avatar) - added updating of allowed rights when friendship is terminated/started to disable/enable checkboxes - also added validation of avatar's relationship before committing and log a warning if it is absent. --HG-- branch : product-engine --- indra/newview/llpanelavatar.cpp | 32 ++++++++++++++++++++++++-------- indra/newview/llpanelavatar.h | 5 +++-- 2 files changed, 27 insertions(+), 10 deletions(-) (limited to 'indra') diff --git a/indra/newview/llpanelavatar.cpp b/indra/newview/llpanelavatar.cpp index 4a7cdfc856..d7c558d188 100644 --- a/indra/newview/llpanelavatar.cpp +++ b/indra/newview/llpanelavatar.cpp @@ -196,10 +196,9 @@ void LLPanelAvatarNotes::fillRightsData() childSetValue("map_check",LLRelationship::GRANT_MAP_LOCATION & rights ? TRUE : FALSE); childSetValue("objects_check",LLRelationship::GRANT_MODIFY_OBJECTS & rights ? TRUE : FALSE); - childSetEnabled("status_check",TRUE); - childSetEnabled("map_check",TRUE); - childSetEnabled("objects_check",TRUE); } + + enableCheckboxes(NULL != relation); } void LLPanelAvatarNotes::onCommitNotes() @@ -250,6 +249,17 @@ void LLPanelAvatarNotes::confirmModifyRights(bool grant, S32 rights) void LLPanelAvatarNotes::onCommitRights() { + const LLRelationship* buddy_relationship = + LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); + + if (NULL == buddy_relationship) + { + // Lets have a warning log message instead of having a crash. EXT-4947. + llwarns << "Trying to modify rights for non-friend avatar. Skipped." << llendl; + return; + } + + S32 rights = 0; if(childGetValue("status_check").asBoolean()) @@ -259,8 +269,6 @@ void LLPanelAvatarNotes::onCommitRights() if(childGetValue("objects_check").asBoolean()) rights |= LLRelationship::GRANT_MODIFY_OBJECTS; - const LLRelationship* buddy_relationship = - LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); bool allow_modify_objects = childGetValue("objects_check").asBoolean(); // if modify objects checkbox clicked @@ -304,9 +312,7 @@ void LLPanelAvatarNotes::resetControls() //Disable "Add Friend" button for friends. childSetEnabled("add_friend", TRUE); - childSetEnabled("status_check",FALSE); - childSetEnabled("map_check",FALSE); - childSetEnabled("objects_check",FALSE); + enableCheckboxes(false); } void LLPanelAvatarNotes::onAddFriendButtonClick() @@ -334,6 +340,13 @@ void LLPanelAvatarNotes::onShareButtonClick() //*TODO not implemented. } +void LLPanelAvatarNotes::enableCheckboxes(bool enable) +{ + childSetEnabled("status_check", enable); + childSetEnabled("map_check", enable); + childSetEnabled("objects_check", enable); +} + LLPanelAvatarNotes::~LLPanelAvatarNotes() { if(getAvatarId().notNull()) @@ -348,6 +361,9 @@ LLPanelAvatarNotes::~LLPanelAvatarNotes() void LLPanelAvatarNotes::changed(U32 mask) { childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); + + // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947. + fillRightsData(); } // virtual diff --git a/indra/newview/llpanelavatar.h b/indra/newview/llpanelavatar.h index 632590aa27..52b4255e34 100644 --- a/indra/newview/llpanelavatar.h +++ b/indra/newview/llpanelavatar.h @@ -259,8 +259,8 @@ private: }; /** -* Panel for displaying Avatar's notes and modifying friend's rights. -*/ + * Panel for displaying Avatar's notes and modifying friend's rights. + */ class LLPanelAvatarNotes : public LLPanelProfileTab , public LLFriendObserver @@ -311,6 +311,7 @@ protected: void onCallButtonClick(); void onTeleportButtonClick(); void onShareButtonClick(); + void enableCheckboxes(bool enable); }; #endif // LL_LLPANELAVATAR_H -- cgit v1.2.3 From 20e9e6b57e52973ccb12b45da05e69bcaa88d736 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan Date: Fri, 5 Feb 2010 11:46:34 +0200 Subject: Fixed normal bug EXT-4907 - Two voice indicators are displayed in chiclets bar after making second voice call --HG-- branch : product-engine --- indra/newview/llchiclet.cpp | 6 +++++- indra/newview/lloutputmonitorctrl.cpp | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llchiclet.cpp b/indra/newview/llchiclet.cpp index f646bcccb5..18bd7b725f 100644 --- a/indra/newview/llchiclet.cpp +++ b/indra/newview/llchiclet.cpp @@ -545,6 +545,7 @@ void LLIMChiclet::toggleSpeakerControl() } setRequiredWidth(); + mSpeakerCtrl->setSpeakerId(LLUUID::null); mSpeakerCtrl->setVisible(getShowSpeaker()); } @@ -954,7 +955,10 @@ LLIMGroupChiclet::~LLIMGroupChiclet() void LLIMGroupChiclet::draw() { - switchToCurrentSpeaker(); + if(getShowSpeaker()) + { + switchToCurrentSpeaker(); + } LLIMChiclet::draw(); } diff --git a/indra/newview/lloutputmonitorctrl.cpp b/indra/newview/lloutputmonitorctrl.cpp index 388fdeea7a..9857e37bc3 100644 --- a/indra/newview/lloutputmonitorctrl.cpp +++ b/indra/newview/lloutputmonitorctrl.cpp @@ -249,6 +249,11 @@ void LLOutputMonitorCtrl::draw() void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id) { + if (speaker_id.isNull() && mSpeakerId.notNull()) + { + LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this); + } + if (speaker_id.isNull() || speaker_id == mSpeakerId) return; if (mSpeakerId.notNull()) @@ -256,6 +261,7 @@ void LLOutputMonitorCtrl::setSpeakerId(const LLUUID& speaker_id) // Unregister previous registration to avoid crash. EXT-4782. LLSpeakingIndicatorManager::unregisterSpeakingIndicator(mSpeakerId, this); } + mSpeakerId = speaker_id; LLSpeakingIndicatorManager::registerSpeakingIndicator(mSpeakerId, this); -- cgit v1.2.3 From 553cf40d136e70f4819cb2b72d0483287db81b17 Mon Sep 17 00:00:00 2001 From: Dmitry Zaporozhan Date: Fri, 5 Feb 2010 12:25:18 +0200 Subject: Updated low bug EXT-4951 - Redundant edit box context menu in list items in Panel Picks/Classifieds. Reverted changeset 8956:930bef051fee. Added new parameter to control context menu visibility. --HG-- branch : product-engine --- indra/llui/lltexteditor.cpp | 8 +++++--- indra/llui/lltexteditor.h | 7 ++++++- .../newview/skins/default/xui/en/panel_classifieds_list_item.xml | 2 +- indra/newview/skins/default/xui/en/panel_pick_list_item.xml | 2 +- indra/newview/skins/default/xui/en/widgets/text_editor.xml | 3 ++- 5 files changed, 15 insertions(+), 7 deletions(-) (limited to 'indra') diff --git a/indra/llui/lltexteditor.cpp b/indra/llui/lltexteditor.cpp index 3fdb48b3ca..ac5a0376fc 100644 --- a/indra/llui/lltexteditor.cpp +++ b/indra/llui/lltexteditor.cpp @@ -242,7 +242,8 @@ LLTextEditor::Params::Params() handle_edit_keys_directly("handle_edit_keys_directly", false), show_line_numbers("show_line_numbers", false), default_color("default_color"), - commit_on_focus_lost("commit_on_focus_lost", false) + commit_on_focus_lost("commit_on_focus_lost", false), + show_context_menu("show_context_menu") {} LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) : @@ -258,7 +259,8 @@ LLTextEditor::LLTextEditor(const LLTextEditor::Params& p) : mMouseDownX(0), mMouseDownY(0), mTabsToNextField(p.ignore_tab), - mContextMenu(NULL) + mContextMenu(NULL), + mShowContextMenu(p.show_context_menu) { mDefaultFont = p.font; @@ -720,7 +722,7 @@ BOOL LLTextEditor::handleRightMouseDown(S32 x, S32 y, MASK mask) } if (!LLTextBase::handleRightMouseDown(x, y, mask)) { - if(getMouseOpaque()) + if(getChowContextMenu()) { showContextMenu(x, y); } diff --git a/indra/llui/lltexteditor.h b/indra/llui/lltexteditor.h index a136f9ccce..d96198d9ce 100644 --- a/indra/llui/lltexteditor.h +++ b/indra/llui/lltexteditor.h @@ -68,7 +68,8 @@ public: ignore_tab, handle_edit_keys_directly, show_line_numbers, - commit_on_focus_lost; + commit_on_focus_lost, + show_context_menu; //colors Optional default_color; @@ -200,6 +201,9 @@ public: const LLTextSegmentPtr getPreviousSegment() const; void getSelectedSegments(segment_vec_t& segments) const; + void setShowContextMenu(bool show) { mShowContextMenu = show; } + bool getChowContextMenu() const { return mShowContextMenu; } + protected: void showContextMenu(S32 x, S32 y); void drawPreeditMarker(); @@ -319,6 +323,7 @@ private: BOOL mTakesFocus; BOOL mAllowEmbeddedItems; + bool mShowContextMenu; LLUUID mSourceID; diff --git a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml index 0c1418fc2d..9518151b72 100644 --- a/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml +++ b/indra/newview/skins/default/xui/en/panel_classifieds_list_item.xml @@ -64,7 +64,7 @@ layout="topleft" left="103" name="description" - textbox.mouse_opaque="false" + textbox.show_context_menu="false" top_pad="0" width="178" word_wrap="true" /> 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 e62c1278f9..9bcce1685e 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 @@ -64,7 +64,7 @@ layout="topleft" left="103" name="picture_descr" - textbox.mouse_opaque="false" + textbox.show_context_menu="false" top_pad="0" width="178" word_wrap="true" /> diff --git a/indra/newview/skins/default/xui/en/widgets/text_editor.xml b/indra/newview/skins/default/xui/en/widgets/text_editor.xml index 23ca8ea338..2ced8b1b4b 100644 --- a/indra/newview/skins/default/xui/en/widgets/text_editor.xml +++ b/indra/newview/skins/default/xui/en/widgets/text_editor.xml @@ -1,4 +1,5 @@ + allow_html="false" + show_context_menu="true"/> -- cgit v1.2.3 From b79b8f87a37888decd3f82e9e255cce641a3955f Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 13:03:26 +0200 Subject: finished with EXT-2753 - Implement Avatar icons on IM multifloater tabs add floater flashing, fix group icon sizes, fix click,some code cleanup, ect. also I remove mIconCtrlWidth/Height since its kinda useless - mIconCtrlPad do the same thing... IconSize will be btn_height-2*mIconCtrlPad - simple and good enough. --HG-- branch : product-engine --- indra/llui/lltabcontainer.cpp | 65 +++++++++------------- indra/llui/lltabcontainer.h | 8 --- indra/newview/llimfloatercontainer.cpp | 50 ++++------------- indra/newview/llimfloatercontainer.h | 1 - .../skins/default/xui/en/floater_im_container.xml | 2 - 5 files changed, 37 insertions(+), 89 deletions(-) (limited to 'indra') diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index 52fc2adb25..d959d3099c 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -109,12 +109,8 @@ public: // LEFT, RIGHT, TOP, BOTTOM paddings of LLIconCtrl in this class has same value Optional icon_ctrl_pad; - Optional icon_ctrl_width, - icon_ctrl_height; Params(): - icon_ctrl_pad("icon_ctrl_pad", 0), - icon_ctrl_width("icon_ctrl_width", 16), - icon_ctrl_height("icon_ctrl_height", 16) + icon_ctrl_pad("icon_ctrl_pad", 1) {} }; @@ -123,9 +119,7 @@ protected: LLCustomButtonIconCtrl(const Params& p): LLButton(p), mIcon(NULL), - mIconCtrlPad(p.icon_ctrl_pad), - mIconCtrlWidht(p.icon_ctrl_width), - mIconCtrlHeight(p.icon_ctrl_height) + mIconCtrlPad(p.icon_ctrl_pad) {} public: @@ -134,19 +128,23 @@ public: { LLRect button_rect = getRect(); LLRect icon_rect = mIcon->getRect(); - S32 pad = mIconCtrlPad * 2; + + S32 icon_size = button_rect.getHeight() - 2*mIconCtrlPad; switch(mIconAlignment) { case LLFontGL::LEFT: - icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad, mIconCtrlWidht - pad, mIconCtrlHeight - pad); - setLeftHPad(mIconCtrlWidht + pad); + icon_rect.setLeftTopAndSize(button_rect.mLeft + mIconCtrlPad, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setLeftHPad(icon_size + mIconCtrlPad * 2); break; case LLFontGL::HCENTER: //*TODO implement for HCENTER icon alignment break; case LLFontGL::RIGHT: - //*TODO implement for RIGHT icon alignment + icon_rect.setLeftTopAndSize(button_rect.mRight - mIconCtrlPad - icon_size, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setRightHPad(icon_size + mIconCtrlPad * 2); break; default: break; @@ -176,8 +174,6 @@ private: LLIconCtrl* mIcon; LLFontGL::HAlign mIconAlignment; S32 mIconCtrlPad; - S32 mIconCtrlWidht; - S32 mIconCtrlHeight; }; //============================================================================ @@ -214,10 +210,7 @@ LLTabContainer::Params::Params() middle_tab("middle_tab"), last_tab("last_tab"), use_custom_icon_ctrl("use_custom_icon_ctrl", false), - tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0), - tab_icon_ctrl_width("tab_icon_ctrl_width"), - tab_icon_ctrl_height("tab_icon_ctrl_height") - + tab_icon_ctrl_pad("tab_icon_ctrl_pad", 0) { name(std::string("tab_container")); mouse_opaque = false; @@ -254,9 +247,7 @@ LLTabContainer::LLTabContainer(const LLTabContainer::Params& p) mMiddleTabParams(p.middle_tab), mLastTabParams(p.last_tab), mCustomIconCtrlUsed(p.use_custom_icon_ctrl), - mTabIconCtrlPad(p.tab_icon_ctrl_pad), - mTabIconCtrlWidth(p.tab_icon_ctrl_width), - mTabIconCtrlHeight(p.tab_icon_ctrl_height) + mTabIconCtrlPad(p.tab_icon_ctrl_pad) { static LLUICachedControl tabcntr_vert_tab_min_width ("UITabCntrVertTabMinWidth", 0); @@ -999,6 +990,11 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) LLTextBox* textbox = NULL; LLButton* btn = NULL; + LLCustomButtonIconCtrl::Params custom_btn_params; + { + custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad); + } + LLButton::Params normal_btn_params; if (placeholder) { @@ -1018,7 +1014,9 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) { if (mIsVertical) { - LLButton::Params p; + LLButton::Params& p = (mCustomIconCtrlUsed)? + custom_btn_params:normal_btn_params; + p.name(std::string("vert tab button")); p.rect(btn_rect); p.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT); @@ -1036,9 +1034,12 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) { p.pad_left(indent); } + + if(mCustomIconCtrlUsed) { - btn = createCustomButton(p); + btn = LLUICtrlFactory::create(custom_btn_params); + } else { @@ -1047,7 +1048,8 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) } else { - LLButton::Params p; + LLButton::Params& p = (mCustomIconCtrlUsed)? + custom_btn_params:normal_btn_params; p.name(std::string(child->getName()) + " tab"); p.rect(btn_rect); p.click_callback.function(boost::bind(&LLTabContainer::onTabBtn, this, _2, child)); @@ -1083,7 +1085,7 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) if(mCustomIconCtrlUsed) { - btn = createCustomButton(p); + btn = LLUICtrlFactory::create(custom_btn_params); } else { @@ -1151,19 +1153,6 @@ void LLTabContainer::addTabPanel(const TabPanelParams& panel) updateMaxScrollPos(); } -LLButton* LLTabContainer::createCustomButton(const LLButton::Params& p) -{ - LLCustomButtonIconCtrl::Params custom_btn_params; - LLButton::Params* btn_params_p = dynamic_cast(&custom_btn_params); - - btn_params_p->overwriteFrom(p); - custom_btn_params.icon_ctrl_pad(mTabIconCtrlPad); - custom_btn_params.icon_ctrl_width(mTabIconCtrlWidth); - custom_btn_params.icon_ctrl_height(mTabIconCtrlHeight); - - return LLUICtrlFactory::create(custom_btn_params); -} - void LLTabContainer::addPlaceholder(LLPanel* child, const std::string& label) { addTabPanel(TabPanelParams().panel(child).label(label).is_placeholder(true)); diff --git a/indra/llui/lltabcontainer.h b/indra/llui/lltabcontainer.h index 278cf01375..4b5d45fb73 100644 --- a/indra/llui/lltabcontainer.h +++ b/indra/llui/lltabcontainer.h @@ -101,11 +101,6 @@ public: * Paddings for LLIconCtrl in case of LLCustomButtonIconCtrl usage(use_custom_icon_ctrl = true) */ Optional tab_icon_ctrl_pad; - /** - * LLIconCtrl size - */ - Optional tab_icon_ctrl_width, - tab_icon_ctrl_height; Params(); }; @@ -247,7 +242,6 @@ private: // updates tab button images given the tuple, tab position and the corresponding params void update_images(LLTabTuple* tuple, TabParams params, LLTabContainer::TabPosition pos); void reshapeTuple(LLTabTuple* tuple); - LLButton* createCustomButton(const LLButton::Params& p); // Variables @@ -300,8 +294,6 @@ private: bool mCustomIconCtrlUsed; S32 mTabIconCtrlPad; - S32 mTabIconCtrlHeight; - S32 mTabIconCtrlWidth; }; #endif // LL_TABCONTAINER_H diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 7c7a4222d4..9539553121 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -37,6 +37,7 @@ #include "llfloaterreg.h" #include "llimview.h" #include "llavatariconctrl.h" +#include "llgroupiconctrl.h" #include "llagent.h" // @@ -90,23 +91,15 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLUUID session_id = floaterp->getKey(); + LLIconCtrl* icon = 0; + if(gAgent.isInGroup(session_id)) { - mSessions[session_id] = floaterp; - LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(session_id); - LLGroupMgr* gm = LLGroupMgr::getInstance(); - gm->addObserver(session_id, this); - floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); + LLGroupIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); + icon_params.group_id = session_id; + icon = LLUICtrlFactory::instance().createWidget(icon_params); - if (group_data && group_data->mInsigniaID.notNull()) - { - mTabContainer->setTabImage(get_ptr_in_map(mSessions, session_id), group_data->mInsigniaID); - } - else - { - mTabContainer->setTabImage(floaterp, "Generic_Group"); - gm->sendGroupPropertiesRequest(session_id); - } + mSessions[session_id] = floaterp; } else { @@ -114,27 +107,11 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, LLAvatarIconCtrl::Params icon_params = LLUICtrlFactory::instance().getDefaultParams(); icon_params.avatar_id = avatar_id; - LLAvatarIconCtrl* icon = LLUICtrlFactory::instance().createWidget(icon_params); - icon->setValue(avatar_id); - mTabContainer->setTabImage(floaterp, icon); - - /* - LLAvatarPropertiesProcessor& app = LLAvatarPropertiesProcessor::instance(); - app.addObserver(avatar_id, this); - floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); - mSessions[avatar_id] = floaterp; + icon = LLUICtrlFactory::instance().createWidget(icon_params); - LLUUID* icon_id_ptr = LLAvatarIconIDCache::getInstance()->get(avatar_id); - if(icon_id_ptr && icon_id_ptr->notNull()) - { - mTabContainer->setTabImage(floaterp, *icon_id_ptr); - } - else - { - mTabContainer->setTabImage(floaterp, "Generic_Person"); - app.sendAvatarPropertiesRequest(avatar_id); - }*/ + mSessions[avatar_id] = floaterp; } + mTabContainer->setTabImage(floaterp, icon); } void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type) @@ -167,13 +144,6 @@ void LLIMFloaterContainer::changed(const LLUUID& group_id, LLGroupChange gc) } } -void LLIMFloaterContainer::onCloseFloater(LLUUID id) -{ - LLAvatarPropertiesProcessor::instance().removeObserver(id, this); - LLGroupMgr::instance().removeObserver(id, this); - -} - void LLIMFloaterContainer::onNewMessageReceived(const LLSD& data) { LLUUID session_id = data["from_id"].asUUID(); diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index bc06f0cbd3..daf367da11 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -69,7 +69,6 @@ private: typedef std::map avatarID_panel_map_t; avatarID_panel_map_t mSessions; - void onCloseFloater(LLUUID avatar_id); void onNewMessageReceived(const LLSD& data); }; diff --git a/indra/newview/skins/default/xui/en/floater_im_container.xml b/indra/newview/skins/default/xui/en/floater_im_container.xml index 0d1a4a831d..978b40da77 100644 --- a/indra/newview/skins/default/xui/en/floater_im_container.xml +++ b/indra/newview/skins/default/xui/en/floater_im_container.xml @@ -21,8 +21,6 @@ tab_position="bottom" tab_width="64" tab_max_width = "134" - tab_icon_ctrl_width = "16" - tab_icon_ctrl_height = "16" tab_height="16" use_custom_icon_ctrl="true" tab_icon_ctrl_pad="2" -- cgit v1.2.3 From cc0895b90039a6446f7c9a0ab71518d445175c0f Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 13:20:12 +0200 Subject: a bit more on EXT-2753. --HG-- branch : product-engine --- indra/llui/lltabcontainer.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llui/lltabcontainer.cpp b/indra/llui/lltabcontainer.cpp index d959d3099c..19408989a5 100644 --- a/indra/llui/lltabcontainer.cpp +++ b/indra/llui/lltabcontainer.cpp @@ -139,7 +139,9 @@ public: setLeftHPad(icon_size + mIconCtrlPad * 2); break; case LLFontGL::HCENTER: - //*TODO implement for HCENTER icon alignment + icon_rect.setLeftTopAndSize(button_rect.mRight - (button_rect.getWidth() + mIconCtrlPad - icon_size)/2, button_rect.mTop - mIconCtrlPad, + icon_size, icon_size); + setRightHPad(icon_size + mIconCtrlPad * 2); break; case LLFontGL::RIGHT: icon_rect.setLeftTopAndSize(button_rect.mRight - mIconCtrlPad - icon_size, button_rect.mTop - mIconCtrlPad, -- cgit v1.2.3 From b80c6d68874a11292e7dff59b03b1d0f46fad232 Mon Sep 17 00:00:00 2001 From: Mike Antipov Date: Fri, 5 Feb 2010 13:48:48 +0200 Subject: Fixed major bug EXT-4994 (Sidebar Places View Suddenly Shifts While Renaming Favorites) - overridden default LLFolderView functionality to apply LLSelectFirstFilteredItem functor for Places / Landmarks Inventory panels - this also fixed normal bug EXT-1631 (Landmarks panel: There is selection in the each accordion after filter reset) --HG-- branch : product-engine --- indra/newview/llplacesinventorypanel.cpp | 9 +++++++++ indra/newview/llplacesinventorypanel.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 8edeebaeeb..6c6eb7c719 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -174,6 +174,15 @@ S32 LLPlacesInventoryPanel::notify(const LLSD& info) // PUBLIC METHODS ////////////////////////////////////////////////////////////////////////// +LLPlacesFolderView::LLPlacesFolderView(const LLFolderView::Params& p) +: LLFolderView(p) +{ + // we do not need auto select functionality in places landmarks, so override default behavior. + // this disables applying of the LLSelectFirstFilteredItem in LLFolderView::doIdle. + // Fixed issues: EXT-1631, EXT-4994. + mAutoSelectOverride = TRUE; +} + BOOL LLPlacesFolderView::handleRightMouseDown(S32 x, S32 y, MASK mask) { // let children to change selection first diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 86937e7c7f..04c6758eae 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -67,7 +67,7 @@ private: class LLPlacesFolderView : public LLFolderView { public: - LLPlacesFolderView(const LLFolderView::Params& p) : LLFolderView(p) {}; + LLPlacesFolderView(const LLFolderView::Params& p); /** * Handles right mouse down * -- cgit v1.2.3 From 91543fd6caf0478e543f7cdab9b5a9b6b93d332f Mon Sep 17 00:00:00 2001 From: Alexei Arabadji Date: Fri, 5 Feb 2010 14:41:05 +0200 Subject: =?UTF-8?q?fixed=20EXT-4908=20=E2=80=9CReport=20Abuse:=20Popup=20p?= =?UTF-8?q?revents=20interaction=20with=20Media=20Browser=E2=80=9D,=20made?= =?UTF-8?q?=20HelpReportAbuseEmailLL=20alert=20non-modal;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d16474873f..285f4989c2 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -3852,7 +3852,7 @@ Are you sure you want to quit? + type="alert"> 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 are investigated and resolved. -- cgit v1.2.3 From bde31b0068ba82636d2b9ae330f0e6a7b76c5b6c Mon Sep 17 00:00:00 2001 From: Andrew Dyukov Date: Fri, 5 Feb 2010 14:59:28 +0200 Subject: Fixed normal bug EXT-4649 (VCP stays in "leaving call" state if end call in a location where nearby voice chat is disabled) - Added manual setting of title and avatar list for nearby VCP in regions with disabled voice. --HG-- branch : product-engine --- indra/newview/llcallfloater.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'indra') diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp index bd4fae6ab6..53ae001923 100644 --- a/indra/newview/llcallfloater.cpp +++ b/indra/newview/llcallfloater.cpp @@ -750,18 +750,26 @@ void LLCallFloater::reset(const LLVoiceChannel::EState& new_state) mParticipants = NULL; mAvatarList->clear(); - // "loading" is shown in parcel with disabled voice only when state is "ringing" - // to avoid showing it in nearby chat vcp all the time- "no_one_near" is now shown there (EXT-4648) - bool show_loading = LLVoiceChannel::STATE_RINGING == new_state; - if(!show_loading && !LLViewerParcelMgr::getInstance()->allowAgentVoice() && mVoiceType == VC_LOCAL_CHAT) + // These ifs were added instead of simply showing "loading" to make VCP work correctly in parcels + // with disabled voice (EXT-4648 and EXT-4649) + if (!LLViewerParcelMgr::getInstance()->allowAgentVoice() && LLVoiceChannel::STATE_HUNG_UP == new_state) { + // hides "Leave Call" when call is ended in parcel with disabled voice- hiding usually happens in + // updateSession() which won't be called here because connect to nearby voice never happens + childSetVisible("leave_call_btn_panel", false); + // setting title to nearby chat an "no one near..." text- because in region with disabled + // voice we won't have chance to really connect to nearby, so VCP is changed here manually + setTitle(getString("title_nearby")); mAvatarList->setNoItemsCommentText(getString("no_one_near")); } - else + // "loading" is shown only when state is "ringing" to avoid showing it in nearby chat vcp + // of parcels with disabled voice all the time- "no_one_near" is now shown there (EXT-4648) + else if (new_state == LLVoiceChannel::STATE_RINGING) { // update floater to show Loading while waiting for data. mAvatarList->setNoItemsCommentText(LLTrans::getString("LoadingData")); } + mAvatarList->setVisible(TRUE); mNonAvatarCaller->setVisible(FALSE); -- cgit v1.2.3 From 5138d54b8977ecba24f0c7e142ef1c465ae2756c Mon Sep 17 00:00:00 2001 From: Denis Serdjuk Date: Fri, 5 Feb 2010 16:15:07 +0200 Subject: fixed bug EXT-4757 URL-name of object is shown as clickable HTTP URL in toasts Cause: ServerObjectMessage notification uses hardcoded message from simulator. There is no possible to escape object name separately. Solution: Whole server message has been escaped using tag. --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 7e4a95c623..02550a2bed 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -4763,7 +4763,7 @@ The objects on the selected parcel that are NOT owned by you have been returned name="ServerObjectMessage" type="notify"> Message from [NAME]: -[MSG] +<nolink>[MSG]</nolink> Date: Fri, 5 Feb 2010 16:36:19 +0200 Subject: Fixed critical bug EXT - 4906 (Viewer crashes after group message was sent if close IM chat from message sender previously) --HG-- branch : product-engine --- indra/newview/llimfloatercontainer.cpp | 7 +++++++ indra/newview/llimfloatercontainer.h | 1 + 2 files changed, 8 insertions(+) (limited to 'indra') diff --git a/indra/newview/llimfloatercontainer.cpp b/indra/newview/llimfloatercontainer.cpp index 9539553121..ba034609e9 100644 --- a/indra/newview/llimfloatercontainer.cpp +++ b/indra/newview/llimfloatercontainer.cpp @@ -100,6 +100,7 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, icon = LLUICtrlFactory::instance().createWidget(icon_params); mSessions[session_id] = floaterp; + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, session_id)); } else { @@ -110,10 +111,16 @@ void LLIMFloaterContainer::addFloater(LLFloater* floaterp, icon = LLUICtrlFactory::instance().createWidget(icon_params); mSessions[avatar_id] = floaterp; + floaterp->mCloseSignal.connect(boost::bind(&LLIMFloaterContainer::onCloseFloater, this, avatar_id)); } mTabContainer->setTabImage(floaterp, icon); } +void LLIMFloaterContainer::onCloseFloater(LLUUID& id) +{ + mSessions.erase(id); +} + void LLIMFloaterContainer::processProperties(void* data, enum EAvatarProcessorType type) { if (APT_PROPERTIES == type) diff --git a/indra/newview/llimfloatercontainer.h b/indra/newview/llimfloatercontainer.h index daf367da11..b07ef2d71d 100644 --- a/indra/newview/llimfloatercontainer.h +++ b/indra/newview/llimfloatercontainer.h @@ -51,6 +51,7 @@ public: /*virtual*/ BOOL postBuild(); /*virtual*/ void onOpen(const LLSD& key); + void onCloseFloater(LLUUID& id); /*virtual*/ void addFloater(LLFloater* floaterp, BOOL select_added_floater, -- cgit v1.2.3 From fd06fb8be5d1b38c875b28412b9c9a8f033855fb Mon Sep 17 00:00:00 2001 From: Denis Serdjuk Date: Fri, 5 Feb 2010 16:53:39 +0200 Subject: fixed bug EXT-4135 Region agent limit should be an integer --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/panel_region_general.xml | 1 + 1 file changed, 1 insertion(+) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/panel_region_general.xml b/indra/newview/skins/default/xui/en/panel_region_general.xml index 26568c2a28..c06e67a4bb 100644 --- a/indra/newview/skins/default/xui/en/panel_region_general.xml +++ b/indra/newview/skins/default/xui/en/panel_region_general.xml @@ -134,6 +134,7 @@ top="200" width="80" /> Date: Fri, 5 Feb 2010 17:09:22 +0200 Subject: Fixed normal bug EXT-4702 (Elements of type context_menu cannot have font set in XUI xml) --HG-- branch : product-engine --- indra/llui/llmenugl.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'indra') diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 7fa9a88059..d18abbfb2f 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -3941,7 +3941,6 @@ BOOL LLContextMenu::appendContextSubMenu(LLContextMenu *menu) item = LLUICtrlFactory::create(p); LLMenuGL::sMenuContainer->addChild(item->getBranch()); - item->setFont( LLFontGL::getFontSansSerif() ); return append( item ); } -- cgit v1.2.3 From 113ae58ef1774da61cf2766dec38bc5c3270ceaf Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Fri, 5 Feb 2010 17:09:22 +0200 Subject: Fixed low bug EXT-4217( Favorites overflow list closes after making copy/paste/delete) --HG-- branch : product-engine --- indra/newview/llfavoritesbar.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'indra') diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp index 0f52b30567..1e8a739d78 100644 --- a/indra/newview/llfavoritesbar.cpp +++ b/indra/newview/llfavoritesbar.cpp @@ -298,6 +298,20 @@ public: return TRUE; } + void setVisible(BOOL b) + { + // Overflow menu shouldn't hide when it still has focus. See EXT-4217. + if (!b && hasFocus()) + return; + LLToggleableMenu::setVisible(b); + setFocus(b); + } + + void onFocusLost() + { + setVisible(FALSE); + } + protected: LLFavoriteLandmarkToggleableMenu(const LLToggleableMenu::Params& p): LLToggleableMenu(p) @@ -777,6 +791,15 @@ void LLFavoritesBarCtrl::updateButtons() mChevronButton->setRect(rect); mChevronButton->setVisible(TRUE); } + // Update overflow menu + LLToggleableMenu* overflow_menu = static_cast (mPopupMenuHandle.get()); + if (overflow_menu && overflow_menu->getVisible()) + { + overflow_menu->setFocus(FALSE); + overflow_menu->setVisible(FALSE); + if (mUpdateDropDownItems) + showDropDownMenu(); + } } else { @@ -892,6 +915,8 @@ void LLFavoritesBarCtrl::showDropDownMenu() if (menu) { + // Release focus to allow changing of visibility. + menu->setFocus(FALSE); if (!menu->toggleVisibility()) return; -- cgit v1.2.3 From 3ee065838ac2aa87db617988f9d6459a1bcc7fdc Mon Sep 17 00:00:00 2001 From: Eugene Mutavchi Date: Fri, 5 Feb 2010 17:09:22 +0200 Subject: Fixed normal bug EXT-1622 ([BSI] When Chat Bubbles are enabled chat by users still shows in nearby chat toasts.) --HG-- branch : product-engine --- indra/newview/llnearbychathandler.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'indra') diff --git a/indra/newview/llnearbychathandler.cpp b/indra/newview/llnearbychathandler.cpp index be48770567..29e3c66684 100644 --- a/indra/newview/llnearbychathandler.cpp +++ b/indra/newview/llnearbychathandler.cpp @@ -345,8 +345,10 @@ void LLNearbyChatHandler::processChat(const LLChat& chat_msg, const LLSD &args) // tmp_chat.mFromName = tmp_chat.mFromID.asString(); } nearby_chat->addMessage(chat_msg, true, args); - if(nearby_chat->getVisible()) - return;//no need in toast if chat is visible + if( nearby_chat->getVisible() + || ( chat_msg.mSourceType == CHAT_SOURCE_AGENT + && gSavedSettings.getBOOL("UseChatBubbles") ) ) + return;//no need in toast if chat is visible or if bubble chat is enabled // Handle irc styled messages for toast panel if (tmp_chat.mChatStyle == CHAT_STYLE_IRC) -- cgit v1.2.3 From 173cb4331499f540890466f416c5773172e581e2 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 17:34:34 +0200 Subject: fix typo --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/notifications.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index d16474873f..ef5b058bfd 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -407,7 +407,7 @@ Do you wish to proceed? icon="alertmodal.tga" name="JoinGroupNoCost" type="alertmodal"> -You are Joining group [NAME]. +You are joining group [NAME]. Do you wish to proceed? Date: Fri, 5 Feb 2010 17:34:50 +0200 Subject: Fixed normal bug EXT - 3232 (Make button image overlay placement adjustable via xml) --HG-- branch : product-engine --- indra/llui/llbutton.cpp | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'indra') diff --git a/indra/llui/llbutton.cpp b/indra/llui/llbutton.cpp index 4944ed4fe7..14b77925f2 100644 --- a/indra/llui/llbutton.cpp +++ b/indra/llui/llbutton.cpp @@ -771,12 +771,7 @@ void LLButton::draw() center_x++; } - S32 text_width_delta = overlay_width + 1; - // if image paddings set, they should participate in scaling process - S32 image_size_delta = mImageOverlayTopPad + mImageOverlayBottomPad; - overlay_width = overlay_width - image_size_delta; - overlay_height = overlay_height - image_size_delta; - + center_y += (mImageOverlayBottomPad - mImageOverlayTopPad); // fade out overlay images on disabled buttons LLColor4 overlay_color = mImageOverlayColor.get(); if (!enabled) @@ -788,10 +783,9 @@ void LLButton::draw() switch(mImageOverlayAlignment) { case LLFontGL::LEFT: - text_left += overlay_width + mImageOverlayRightPad + 1; - text_width -= text_width_delta; + text_left += overlay_width + 1; mImageOverlay->draw( - mLeftHPad, + mImageOverlayLeftPad, center_y - (overlay_height / 2), overlay_width, overlay_height, @@ -806,10 +800,9 @@ void LLButton::draw() overlay_color); break; case LLFontGL::RIGHT: - text_right -= overlay_width + mImageOverlayLeftPad+ 1; - text_width -= text_width_delta; + text_right -= overlay_width + 1; mImageOverlay->draw( - getRect().getWidth() - mRightHPad - overlay_width, + getRect().getWidth() - mImageOverlayRightPad - overlay_width, center_y - (overlay_height / 2), overlay_width, overlay_height, -- cgit v1.2.3 From 87cf2ff1bafa0f0f59778c51bc4b5f63d848087a Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Fri, 5 Feb 2010 17:46:54 +0200 Subject: fix for major EXT-4833 [NUX] Verify the default size/positon of certain floaters. exept floater_world_map --HG-- branch : product-engine --- .../skins/default/xui/en/floater_help_browser.xml | 14 +++++++------- indra/newview/skins/default/xui/en/floater_map.xml | 6 +++--- indra/newview/skins/default/xui/en/floater_search.xml | 18 +++++++++--------- 3 files changed, 19 insertions(+), 19 deletions(-) (limited to 'indra') 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 be32e917e5..214fb6ce54 100644 --- a/indra/newview/skins/default/xui/en/floater_help_browser.xml +++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml @@ -2,7 +2,7 @@ + width="650"> Loading... @@ -20,20 +20,20 @@ name="done_text"> + width="640"> + width="620"> + height="610" + width="620" /> diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 775e7d66f7..9ca18d455b 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -2,16 +2,16 @@ + width="650"> Loading... @@ -21,20 +21,20 @@ Done + width="630"> + width="630"> + height="555" + width="630" /> Date: Fri, 5 Feb 2010 17:48:49 +0200 Subject: fix for major EXT-4833 [NUX] Verify the default size/positon of certain floaters. I don't really like floater_world_map changes. as for me now it looks much worse... --HG-- branch : product-engine --- indra/newview/skins/default/xui/en/floater_world_map.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'indra') 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 e1df50bf58..34d4b19410 100644 --- a/indra/newview/skins/default/xui/en/floater_world_map.xml +++ b/indra/newview/skins/default/xui/en/floater_world_map.xml @@ -4,7 +4,7 @@ can_resize="true" center_horiz="true" center_vert="true" - height="535" + height="600" layout="topleft" min_height="520" min_width="520" @@ -14,16 +14,16 @@ save_visibility="true" single_instance="true" title="WORLD MAP" - width="800"> + width="650"> + width="375" />