CHUI-101 WIP Make LLFolderview general purpose

partial fix for crash on startup
master
Richard Linden 2012-07-04 00:30:00 -07:00
parent 1494a1058f
commit d3edb1c466
4 changed files with 18 additions and 6 deletions

View File

@ -1798,8 +1798,8 @@ void LLFolderView::update()
BOOL filter_finished = getViewModelItem()->passedFilter()
&& mViewModel->contentsReady();
if (filter_finished
|| gFocusMgr.childHasKeyboardFocus(getParent()) // assume we are inside a scroll container
|| gFocusMgr.childHasMouseCapture(getParent()))
|| gFocusMgr.childHasKeyboardFocus(mParentPanel)
|| gFocusMgr.childHasMouseCapture(mParentPanel))
{
// finishing the filter process, giving focus to the folder view, or dragging the scrollbar all stop the auto select process
mNeedsAutoSelect = FALSE;

View File

@ -53,7 +53,7 @@ public:
{
Optional<LLUIImage*> folder_arrow_image,
selection_image;
Optional<LLFolderView*> root;
Mandatory<LLFolderView*> root;
Mandatory<LLFolderViewModelItem*> listener;
Optional<S32> folder_indentation, // pixels

View File

@ -47,8 +47,9 @@
// LLIMFloaterContainer
//
LLIMFloaterContainer::LLIMFloaterContainer(const LLSD& seed)
: LLMultiFloater(seed)
,mExpandCollapseBtn(NULL)
: LLMultiFloater(seed),
mExpandCollapseBtn(NULL),
mFolders(NULL)
{
// Firstly add our self to IMSession observers, so we catch session events
LLIMMgr::getInstance()->addSessionObserver(this);
@ -90,6 +91,16 @@ BOOL LLIMFloaterContainer::postBuild()
mConversationsListPanel = getChild<LLPanel>("conversations_list_panel");
LLFolderView::Params p;
//TODO RN: define view model for conversations
//p.view_model = ?;
p.parent_panel = mConversationsListPanel;
p.rect = mConversationsListPanel->getLocalRect();
p.follows.flags = FOLLOWS_ALL;
mFolders = LLUICtrlFactory::create<LLFolderView>(p);
mConversationsListPanel->addChild(mFolders);
mExpandCollapseBtn = getChild<LLButton>("expand_collapse_btn");
mExpandCollapseBtn->setClickedCallback(boost::bind(&LLIMFloaterContainer::onExpandCollapseButtonClicked, this));
@ -512,7 +523,7 @@ LLFolderViewItem* LLIMFloaterContainer::createConversationItemWidget(LLConversat
//params.icon = bridge->getIcon();
//params.icon_open = bridge->getOpenIcon();
//params.creation_date = bridge->getCreationDate();
//params.root = mFolderRoot;
params.root = mFolders;
params.listener = item;
params.rect = LLRect (0, 0, 0, 0);
params.tool_tip = params.name;

View File

@ -194,6 +194,7 @@ private:
LLPanel* mConversationsListPanel; // This is the widget we add items to (i.e. clickable title for each conversation)
conversations_items_map mConversationsItems;
conversations_widgets_map mConversationsWidgets;
LLFolderView* mFolders;
};
#endif // LL_LLIMFLOATERCONTAINER_H