summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorRichard Linden <none@none>2010-03-18 15:38:23 -0700
committerRichard Linden <none@none>2010-03-18 15:38:23 -0700
commitb48ea0148c5d48d79488076b1b3760394a8023be (patch)
treee451c960e2c0a91a32d170bcc58c305430db19c7 /indra/newview
parent8c90061c7dfb784580099bcff951f03d0626cc6b (diff)
EXT-5849 - [crashhunters] Crash in LLView::drawChildren()
attempted fix by removing gesture combo popup lists from floater view holder reviewed by Leyla
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llnearbychatbar.cpp21
-rw-r--r--indra/newview/llnearbychatbar.h2
2 files changed, 10 insertions, 13 deletions
diff --git a/indra/newview/llnearbychatbar.cpp b/indra/newview/llnearbychatbar.cpp
index 483756b16e..af711b6943 100644
--- a/indra/newview/llnearbychatbar.cpp
+++ b/indra/newview/llnearbychatbar.cpp
@@ -96,11 +96,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
params.commit_on_keyboard_movement(false);
mList = LLUICtrlFactory::create<LLScrollListCtrl>(params);
-
- // *HACK: adding list as a child to FloaterViewHolder to make it fully visible without
- // making it top control (because it would cause problems).
- gViewerWindow->getFloaterViewHolder()->addChild(mList);
- mList->setVisible(FALSE);
+ addChild(mList);
//****************************Gesture Part********************************/
@@ -115,7 +111,7 @@ LLGestureComboList::LLGestureComboList(const LLGestureComboList::Params& p)
setFocusLostCallback(boost::bind(&LLGestureComboList::hideList, this));
}
-BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent)
+BOOL LLGestureComboList::handleKeyHere(KEY key, MASK mask)
{
BOOL handled = FALSE;
@@ -126,7 +122,7 @@ BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent)
}
else
{
- handled = mList->handleKey(key, mask, called_from_parent);
+ handled = mList->handleKeyHere(key, mask);
}
return handled;
@@ -135,18 +131,17 @@ BOOL LLGestureComboList::handleKey(KEY key, MASK mask, BOOL called_from_parent)
void LLGestureComboList::showList()
{
LLRect rect = mList->getRect();
- LLRect screen;
- mButton->localRectToScreen(getRect(), &screen);
+ LLRect button_rect = mButton->getRect();
// Calculating amount of space between the navigation bar and gestures combo
LLNavigationBar* nb = LLNavigationBar::getInstance();
S32 x, nb_bottom;
- nb->localPointToScreen(0, 0, &x, &nb_bottom);
+ nb->localPointToOtherView(0, 0, &x, &nb_bottom, this);
- S32 max_height = nb_bottom - screen.mTop;
+ S32 max_height = nb_bottom - button_rect.mTop;
mList->calcColumnWidths();
- rect.setOriginAndSize(screen.mLeft, screen.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
+ rect.setOriginAndSize(button_rect.mLeft, button_rect.mTop, llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
mList->setRect(rect);
mList->fitContents( llmax(mList->getMaxContentWidth(),mButton->getRect().getWidth()), max_height);
@@ -156,6 +151,7 @@ void LLGestureComboList::showList()
// Show the list and push the button down
mButton->setToggleState(TRUE);
mList->setVisible(TRUE);
+ LLUI::addPopup(mList);
}
void LLGestureComboList::onButtonCommit()
@@ -188,6 +184,7 @@ void LLGestureComboList::hideList()
mButton->setToggleState(FALSE);
mList->setVisible(FALSE);
mList->mouseOverHighlightNthItem(-1);
+ LLUI::removePopup(mList);
gFocusMgr.setKeyboardFocus(NULL);
}
}
diff --git a/indra/newview/llnearbychatbar.h b/indra/newview/llnearbychatbar.h
index 559c1ee091..dd467d7978 100644
--- a/indra/newview/llnearbychatbar.h
+++ b/indra/newview/llnearbychatbar.h
@@ -70,7 +70,7 @@ public:
LLCtrlListInterface* getListInterface() { return (LLCtrlListInterface*)mList; };
virtual void showList();
virtual void hideList();
- virtual BOOL handleKey(KEY key, MASK mask, BOOL called_from_parent);
+ virtual BOOL handleKeyHere(KEY key, MASK mask);
S32 getCurrentIndex() const;
void onItemSelected(const LLSD& data);