summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYchebotarev ProductEngine <ychebotarev@productengine.com>2010-03-03 12:43:53 +0200
committerYchebotarev ProductEngine <ychebotarev@productengine.com>2010-03-03 12:43:53 +0200
commit57d498850e4047481c2bcaf356d88b8e99511dc0 (patch)
treeec836a380a83b7ff72224c2d31c8598a4acb4124
parent9180edf9c0d6e9d0600659709cead3ab17d6b7e3 (diff)
parentbb8071e448c5d35a87cff965a76347732579cbed (diff)
merge
--HG-- branch : product-engine
-rw-r--r--indra/newview/llavatarlist.cpp9
-rw-r--r--indra/newview/llavatarlist.h2
-rw-r--r--indra/newview/llpanelpeople.cpp15
-rw-r--r--indra/newview/llviewerwindow.cpp15
4 files changed, 24 insertions, 17 deletions
diff --git a/indra/newview/llavatarlist.cpp b/indra/newview/llavatarlist.cpp
index 50d8672083..45c540b3a3 100644
--- a/indra/newview/llavatarlist.cpp
+++ b/indra/newview/llavatarlist.cpp
@@ -183,6 +183,15 @@ void LLAvatarList::sortByName()
sort();
}
+void LLAvatarList::setDirty(bool val /*= true*/, bool force_refresh /*= false*/)
+{
+ mDirty = val;
+ if(mDirty && force_refresh)
+ {
+ refresh();
+ }
+}
+
//////////////////////////////////////////////////////////////////////////
// PROTECTED SECTION
//////////////////////////////////////////////////////////////////////////
diff --git a/indra/newview/llavatarlist.h b/indra/newview/llavatarlist.h
index 0e4215e91a..00c72f1f9d 100644
--- a/indra/newview/llavatarlist.h
+++ b/indra/newview/llavatarlist.h
@@ -73,7 +73,7 @@ public:
virtual void clear();
void setNameFilter(const std::string& filter);
- void setDirty(bool val = true) { mDirty = val; }
+ void setDirty(bool val = true, bool force_refresh = false);
uuid_vector_t& getIDs() { return mIDs; }
bool contains(const LLUUID& id);
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index d2a518a06a..93a6a7803a 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -683,9 +683,15 @@ void LLPanelPeople::updateFriendList()
online_friendsp.push_back(buddy_id);
}
- mOnlineFriendList->setDirty();
- mAllFriendList->setDirty();
-
+ /*
+ * Avatarlists will be hidden by showFriendsAccordionsIfNeeded(), if they do not have items.
+ * But avatarlist can be updated only if it is visible @see LLAvatarList::draw();
+ * So we need to do force update of lists to avoid inconsistency of data and view of avatarlist.
+ */
+ mOnlineFriendList->setDirty(true, !mOnlineFriendList->filterHasMatches());// do force update if list do NOT have items
+ mAllFriendList->setDirty(true, !mAllFriendList->filterHasMatches());
+ //update trash and other buttons according to a selected item
+ updateButtons();
showFriendsAccordionsIfNeeded();
}
@@ -1434,9 +1440,8 @@ void LLPanelPeople::onFriendListRefreshComplete(LLUICtrl*ctrl, const LLSD& param
{
showAccordion("tab_all", param.asInteger());
}
+ updateButtons();
- LLAccordionCtrl* accordion = getChild<LLAccordionCtrl>("friends_accordion");
- accordion->arrange();
}
void LLPanelPeople::setAccordionCollapsedByUser(LLUICtrl* acc_tab, bool collapsed)
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index f1ec489a20..30f2d2c41b 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -695,22 +695,15 @@ BOOL LLViewerWindow::handleAnyMouseClick(LLWindow *window, LLCoordGL pos, MASK
{
S32 local_x, local_y;
top_ctrl->screenPointToLocal( x, y, &local_x, &local_y );
- if (down)
+ if (top_ctrl->pointInView(local_x, local_y))
{
- if (top_ctrl->pointInView(local_x, local_y))
- {
- return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ;
- }
- else
- {
- gFocusMgr.setTopCtrl(NULL);
- }
+ return top_ctrl->handleAnyMouseClick(local_x, local_y, mask, clicktype, down) ;
}
else
{
- if (top_ctrl->pointInView(local_x, local_y) && top_ctrl->handleMouseUp(local_x, local_y, mask))
+ if (down)
{
- return TRUE;
+ gFocusMgr.setTopCtrl(NULL);
}
}
}