From ab68d36518dc8a320b465217e89e1207ee4b00fd Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Thu, 28 Jan 2010 08:22:26 +0200 Subject: working on normal EXT-4261 Cannot use Keyboard to navigate to search result in my landmarks tab --HG-- branch : product-engine --- indra/newview/llfolderview.cpp | 100 +++++++++++++++++++++++++++++++ indra/newview/llfolderview.h | 5 ++ indra/newview/llplacesinventorypanel.cpp | 17 ++++++ indra/newview/llplacesinventorypanel.h | 2 + 4 files changed, 124 insertions(+) (limited to 'indra') diff --git a/indra/newview/llfolderview.cpp b/indra/newview/llfolderview.cpp index b833c611bf..c6135d3bc3 100644 --- a/indra/newview/llfolderview.cpp +++ b/indra/newview/llfolderview.cpp @@ -1508,10 +1508,26 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (next == last_selected) { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } return FALSE; } setSelection( next, FALSE, TRUE ); } + else + { + //special case for LLAccordionCtrl + if(notifyParent(LLSD().with("action","select_next")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; + } } scrollToShowSelection(); mSearchString.clear(); @@ -1556,6 +1572,13 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask ) { if (prev == this) { + // If case we are in accordion tab notify parent to go to the previous accordion + if(notifyParent(LLSD().with("action","select_prev")) > 0 )//message was processed + { + clearSelection(); + return TRUE; + } + return FALSE; } setSelection( prev, FALSE, TRUE ); @@ -2241,6 +2264,83 @@ void LLFolderView::updateRenamerPosition() } } +bool LLFolderView::selectFirstItem() +{ + for (folders_t::iterator iter = mFolders.begin(); + iter != mFolders.end();) + { + LLFolderViewFolder* folder = (*iter ); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getNextFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + + } + for(items_t::iterator iit = mItems.begin(); + iit != mItems.end(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} +bool LLFolderView::selectLastItem() +{ + for(items_t::reverse_iterator iit = mItems.rbegin(); + iit != mItems.rend(); ++iit) + { + LLFolderViewItem* itemp = (*iit); + if (itemp->getVisible()) + { + setSelection(itemp,FALSE,TRUE); + return true; + } + } + for (folders_t::reverse_iterator iter = mFolders.rbegin(); + iter != mFolders.rend();) + { + LLFolderViewFolder* folder = (*iter); + if (folder->getVisible()) + { + LLFolderViewItem* itemp = folder->getPreviousFromChild(0,true); + if(itemp) + setSelection(itemp,FALSE,TRUE); + return true; + } + } + return false; +} + + +S32 LLFolderView::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + setFocus(true); + selectFirstItem(); + return 1; + + } + else if(str_action == "select_last") + { + setFocus(true); + selectLastItem(); + return 1; + } + } + return 0; +} + ///---------------------------------------------------------------------------- /// Local function definitions diff --git a/indra/newview/llfolderview.h b/indra/newview/llfolderview.h index 89e1865e35..56ebdfcf79 100644 --- a/indra/newview/llfolderview.h +++ b/indra/newview/llfolderview.h @@ -266,6 +266,8 @@ public: LLPanel* getParentPanel() { return mParentPanel; } // DEBUG only void dumpSelectionInformation(); + + virtual S32 notify(const LLSD& info) ; private: void updateRenamerPosition(); @@ -278,6 +280,9 @@ protected: void finishRenamingItem( void ); void closeRenamer( void ); + + bool selectFirstItem(); + bool selectLastItem(); protected: LLHandle mPopupMenuHandle; diff --git a/indra/newview/llplacesinventorypanel.cpp b/indra/newview/llplacesinventorypanel.cpp index 4de953a59d..8edeebaeeb 100644 --- a/indra/newview/llplacesinventorypanel.cpp +++ b/indra/newview/llplacesinventorypanel.cpp @@ -143,6 +143,23 @@ void LLPlacesInventoryPanel::restoreFolderState() getRootFolder()->scrollToShowSelection(); } +S32 LLPlacesInventoryPanel::notify(const LLSD& info) +{ + if(info.has("action")) + { + std::string str_action = info["action"]; + if(str_action == "select_first") + { + return getRootFolder()->notify(info); + } + else if(str_action == "select_last") + { + return getRootFolder()->notify(info); + } + } + return 0; +} + /************************************************************************/ /* PROTECTED METHODS */ /************************************************************************/ diff --git a/indra/newview/llplacesinventorypanel.h b/indra/newview/llplacesinventorypanel.h index 7b34045d32..86937e7c7f 100644 --- a/indra/newview/llplacesinventorypanel.h +++ b/indra/newview/llplacesinventorypanel.h @@ -57,6 +57,8 @@ public: void saveFolderState(); void restoreFolderState(); + virtual S32 notify(const LLSD& info) ; + private: LLSaveFolderState* mSavedFolderState; }; -- cgit v1.3 From 3c616d627bcaa28e0e7d31eb8f6c04e3847adb3d Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Thu, 28 Jan 2010 09:16:13 +0200 Subject: fix for EXT-4742 Group Info panel state resets on save --HG-- branch : product-engine --- indra/newview/llpanelgroup.cpp | 15 ++++++++++++--- indra/newview/llpanelgroup.h | 7 +------ 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'indra') diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp index 1d447a22d7..23db7ad226 100644 --- a/indra/newview/llpanelgroup.cpp +++ b/indra/newview/llpanelgroup.cpp @@ -89,8 +89,8 @@ BOOL LLPanelGroupTab::postBuild() LLPanelGroup::LLPanelGroup() : LLPanel(), LLGroupMgrObserver( LLUUID() ), - mAllowEdit( TRUE ) - ,mShowingNotifyDialog(false) + mSkipRefresh(FALSE), + mShowingNotifyDialog(false) { // Set up the factory callbacks. // Roles sub tabs @@ -168,7 +168,6 @@ BOOL LLPanelGroup::postBuild() button = getChild("btn_refresh"); button->setClickedCallback(onBtnRefresh, this); - button->setVisible(mAllowEdit); getChild("btn_create")->setVisible(false); @@ -492,7 +491,12 @@ bool LLPanelGroup::apply(LLPanelGroupTab* tab) std::string apply_mesg; if(tab->apply( apply_mesg ) ) + { + //we skip refreshing group after ew manually apply changes since its very annoying + //for those who are editing group + mSkipRefresh = TRUE; return true; + } if ( !apply_mesg.empty() ) { @@ -539,6 +543,11 @@ void LLPanelGroup::draw() void LLPanelGroup::refreshData() { + if(mSkipRefresh) + { + mSkipRefresh = FALSE; + return; + } LLGroupMgr::getInstance()->clearGroupData(getID()); setGroupID(getID()); diff --git a/indra/newview/llpanelgroup.h b/indra/newview/llpanelgroup.h index 8c84695677..6e23eedffb 100644 --- a/indra/newview/llpanelgroup.h +++ b/indra/newview/llpanelgroup.h @@ -85,9 +85,6 @@ public: virtual void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - - static void refreshCreatedGroup(const LLUUID& group_id); static void showNotice(const std::string& subject, @@ -126,7 +123,7 @@ protected: LLTimer mRefreshTimer; - BOOL mAllowEdit; + BOOL mSkipRefresh; std::string mDefaultNeedsApplyMesg; std::string mWantApplyMesg; @@ -169,8 +166,6 @@ public: virtual BOOL isVisibleByAgent(LLAgent* agentp); - void setAllowEdit(BOOL v) { mAllowEdit = v; } - virtual void setGroupID(const LLUUID& id) {mGroupID = id;}; void notifyObservers() {}; -- cgit v1.3 From 1631ca7173d77576ed18fb35b1843c5a28cbb5e4 Mon Sep 17 00:00:00 2001 From: Ychebotarev ProductEngine Date: Thu, 28 Jan 2010 10:34:12 +0200 Subject: fix for normal EXT-4512 [BSI] Can't minimize Mini-Map also this fix EXT-2119 even if its marked as fixed... --HG-- branch : product-engine --- indra/newview/llfloatermap.cpp | 1 + indra/newview/skins/default/xui/en/floater_map.xml | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/llfloatermap.cpp b/indra/newview/llfloatermap.cpp index d18f127f85..568f4b254e 100644 --- a/indra/newview/llfloatermap.cpp +++ b/indra/newview/llfloatermap.cpp @@ -112,6 +112,7 @@ BOOL LLFloaterMap::postBuild() sendChildToBack(getDragHandle()); setIsChrome(TRUE); + getDragHandle()->setTitleVisible(TRUE); // keep onscreen gFloaterView->adjustToFitScreen(this, FALSE); diff --git a/indra/newview/skins/default/xui/en/floater_map.xml b/indra/newview/skins/default/xui/en/floater_map.xml index 3a5ceed5fb..3ddb7bc349 100644 --- a/indra/newview/skins/default/xui/en/floater_map.xml +++ b/indra/newview/skins/default/xui/en/floater_map.xml @@ -1,14 +1,17 @@ Date: Thu, 28 Jan 2010 11:32:02 +0200 Subject: fix for normal EXT-3807 ABOUT LAND/OBJECTS: (i) icon is badly positioned now I wonder how was this working before... --HG-- branch : product-engine --- indra/llui/llscrolllistctrl.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llui/llscrolllistctrl.cpp b/indra/llui/llscrolllistctrl.cpp index 78386220d9..478e270c98 100644 --- a/indra/llui/llscrolllistctrl.cpp +++ b/indra/llui/llscrolllistctrl.cpp @@ -1534,7 +1534,7 @@ LLRect LLScrollListCtrl::getCellRect(S32 row_index, S32 column_index) S32 rect_bottom = getRowOffsetFromIndex(row_index); LLScrollListColumn* columnp = getColumn(column_index); cell_rect.setOriginAndSize(rect_left, rect_bottom, - rect_left + columnp->getWidth(), mLineHeight); + /*rect_left + */columnp->getWidth(), mLineHeight); return cell_rect; } -- cgit v1.3 From b1fa6bb3421f5a281b36156a04fcbe0ab6b4bcfb Mon Sep 17 00:00:00 2001 From: Denis Serdjuk Date: Thu, 28 Jan 2010 11:42:20 +0200 Subject: fix for EXT-4186 List items are displayed as links in the FlatList if match URL regexp allow_html attribute was updated for titles of group list items, group info panel, landmark info panel and for a title of floaters. --HG-- branch : product-engine --- indra/llui/lldraghandle.cpp | 1 + indra/newview/skins/default/xui/en/panel_group_info_sidetray.xml | 1 + indra/newview/skins/default/xui/en/panel_group_list_item.xml | 1 + indra/newview/skins/default/xui/en/panel_landmark_info.xml | 1 + indra/newview/skins/default/xui/en/panel_place_profile.xml | 2 ++ 5 files changed, 6 insertions(+) (limited to 'indra') diff --git a/indra/llui/lldraghandle.cpp b/indra/llui/lldraghandle.cpp index a93c666648..832f148902 100644 --- a/indra/llui/lldraghandle.cpp +++ b/indra/llui/lldraghandle.cpp @@ -113,6 +113,7 @@ void LLDragHandleTop::setTitle(const std::string& title) params.follows.flags(FOLLOWS_TOP | FOLLOWS_LEFT | FOLLOWS_RIGHT); params.font_shadow(LLFontGL::DROP_SHADOW_SOFT); params.use_ellipses = true; + params.allow_html = false; //cancel URL replacement in floater title mTitleBox = LLUICtrlFactory::create (params); addChild( mTitleBox ); } 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 0893c204e7..1968d96205 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 @@ -37,6 +37,7 @@ background_visible="true" top="2" width="23" /> Date: Thu, 28 Jan 2010 15:51:49 +0200 Subject: fixed EXT-3841 [BSI] "Send IM..." choosable in IM floater context menu --HG-- branch : product-engine --- indra/llcommon/llchat.h | 4 +++- indra/newview/llchathistory.cpp | 8 ++++++++ indra/newview/llimfloater.cpp | 1 + 3 files changed, 12 insertions(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/llcommon/llchat.h b/indra/llcommon/llchat.h index 5af7991006..46456882ba 100644 --- a/indra/llcommon/llchat.h +++ b/indra/llcommon/llchat.h @@ -87,7 +87,8 @@ public: mTimeStr(), mPosAgent(), mURL(), - mChatStyle(CHAT_STYLE_NORMAL) + mChatStyle(CHAT_STYLE_NORMAL), + mSessionID() { } std::string mText; // UTF-8 line of text @@ -102,6 +103,7 @@ public: LLVector3 mPosAgent; std::string mURL; EChatStyle mChatStyle; + LLUUID mSessionID; }; #endif diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp index d6a7edee5b..2cdbd18996 100644 --- a/indra/newview/llchathistory.cpp +++ b/indra/newview/llchathistory.cpp @@ -34,6 +34,7 @@ #include "llinstantmessage.h" +#include "llimview.h" #include "llchathistory.h" #include "llpanel.h" #include "lluictrlfactory.h" @@ -183,6 +184,7 @@ public: void setup(const LLChat& chat,const LLStyle::Params& style_params) { mAvatarID = chat.mFromID; + mSessionID = chat.mSessionID; mSourceType = chat.mSourceType; gCacheName->get(mAvatarID, FALSE, boost::bind(&LLChatHistoryHeader::nameUpdatedCallback, this, _1, _2, _3, _4)); if(chat.mFromID.isNull()) @@ -305,6 +307,11 @@ protected: menu->setItemEnabled("Remove Friend", false); } + if (mSessionID == LLIMMgr::computeSessionID(IM_NOTHING_SPECIAL, mAvatarID)) + { + menu->setItemVisible("Send IM", false); + } + menu->buildDrawLabels(); menu->updateParent(LLMenuGL::sMenuContainer); LLMenuGL::showPopup(this, menu, x, y); @@ -344,6 +351,7 @@ protected: std::string mFirstName; std::string mLastName; std::string mFrom; + LLUUID mSessionID; S32 mMinUserNameWidth; }; diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp index 73597e7de3..c0f22fcea2 100644 --- a/indra/newview/llimfloater.cpp +++ b/indra/newview/llimfloater.cpp @@ -599,6 +599,7 @@ void LLIMFloater::updateMessages() LLChat chat; chat.mFromID = from_id; + chat.mSessionID = mSessionID; chat.mFromName = from; chat.mText = message; chat.mTimeStr = time; -- cgit v1.3 From da08cc05af85ac334cabd943a5d9fcbcaa1500b6 Mon Sep 17 00:00:00 2001 From: Igor Borovkov Date: Thu, 28 Jan 2010 18:28:08 +0200 Subject: fixed win build --HG-- branch : product-engine --- indra/newview/lllocationhistory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'indra') diff --git a/indra/newview/lllocationhistory.cpp b/indra/newview/lllocationhistory.cpp index f494f7d7c1..47139758e5 100644 --- a/indra/newview/lllocationhistory.cpp +++ b/indra/newview/lllocationhistory.cpp @@ -62,7 +62,7 @@ void LLLocationHistory::addItem(const LLLocationHistoryItem& item) { { mItems.erase(mItems.begin(), mItems.end()-max_items); } - llassert(mItems.size() <= max_items); + llassert((S32) mItems.size() <= max_items); } /* -- cgit v1.3