diff options
| author | Oz Linden <oz@lindenlab.com> | 2011-04-10 22:19:11 -0400 |
|---|---|---|
| committer | Oz Linden <oz@lindenlab.com> | 2011-04-10 22:19:11 -0400 |
| commit | c77fcfb7a8aeb2f271b050171bf0d6a9bd4c955b (patch) | |
| tree | d30164242aa4af36f721033eb7a93fb2f2198de4 /indra/llui/llmenugl.cpp | |
| parent | f1b1dbaba54ce678e6ec5311d4b50ded3f91d58c (diff) | |
| parent | e0adaa188ba06b6d3f3282121d149193de87c6e6 (diff) | |
merge changes for storm-250
Diffstat (limited to 'indra/llui/llmenugl.cpp')
| -rw-r--r-- | indra/llui/llmenugl.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 32d7be377a..8de9c769e2 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1936,9 +1936,15 @@ bool LLMenuGL::scrollItems(EScrollingDirection direction) { item_list_t::reverse_iterator first_visible_item_iter = mItems.rend(); + // Need to scroll through number of actual existing items in menu. + // Otherwise viewer will hang for a time needed to scroll U32_MAX + // times in std::advance(). STORM-659. + size_t nitems = mItems.size(); + U32 scrollable_items = nitems < mMaxScrollableItems ? nitems : mMaxScrollableItems; + // Advance by mMaxScrollableItems back from the end of the list // to make the last item visible. - std::advance(first_visible_item_iter, mMaxScrollableItems); + std::advance(first_visible_item_iter, scrollable_items); mFirstVisibleItem = *first_visible_item_iter; break; } @@ -3099,9 +3105,6 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) CURSOR_HEIGHT + MOUSE_CURSOR_PADDING * 2); menu->translateIntoRectWithExclusion( menu_region_rect, mouse_rect, FALSE ); menu->getParent()->sendChildToFront(menu); - - - } ///============================================================================ |
