diff options
Diffstat (limited to 'indra/llui/llview.cpp')
| -rw-r--r-- | indra/llui/llview.cpp | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/indra/llui/llview.cpp b/indra/llui/llview.cpp index 1014f17898..56e24085ac 100644 --- a/indra/llui/llview.cpp +++ b/indra/llui/llview.cpp @@ -760,18 +760,10 @@ BOOL LLView::handleKey(KEY key, MASK mask, BOOL called_from_parent) } } - if( !handled && !called_from_parent) + if( !handled && !called_from_parent && mParentView) { - if (mIsFocusRoot) - { - // stop processing at focus root - handled = FALSE; - } - else if (mParentView) - { - // Upward traversal - handled = mParentView->handleKey( key, mask, FALSE ); - } + // Upward traversal + handled = mParentView->handleKey( key, mask, FALSE ); } return handled; } @@ -806,18 +798,10 @@ BOOL LLView::handleUnicodeChar(llwchar uni_char, BOOL called_from_parent) } - if (!handled && !called_from_parent) + if (!handled && !called_from_parent && mParentView) { - if (mIsFocusRoot) - { - // stop processing at focus root - handled = FALSE; - } - else if(mParentView) - { - // Upward traversal - handled = mParentView->handleUnicodeChar(uni_char, FALSE); - } + // Upward traversal + handled = mParentView->handleUnicodeChar(uni_char, FALSE); } return handled; @@ -1448,7 +1432,12 @@ void LLView::updateBoundingRect() for ( child_it = mChildList.begin(); child_it != mChildList.end(); ++child_it) { LLView* childp = *child_it; - if (!childp->getVisible()) continue; + // ignore invisible and "top" children when calculating bounding rect + // such as combobox popups + if (!childp->getVisible() || childp == gFocusMgr.getTopCtrl()) + { + continue; + } LLRect child_bounding_rect = childp->getBoundingRect(); |
