diff options
| author | Merov Linden <merov@lindenlab.com> | 2014-12-19 06:00:48 -0800 |
|---|---|---|
| committer | Merov Linden <merov@lindenlab.com> | 2014-12-19 06:00:48 -0800 |
| commit | b0f590f6ab4033503ff9d80e2374e374397d40fb (patch) | |
| tree | 97e9758c011105b48218cbd2e611c51cc967520d /indra/llui/llmenugl.cpp | |
| parent | d0d5a6a15cf3c573c89ce590030c7a150b19dd05 (diff) | |
| parent | 4ec9bce3c2a715f53938e4568c95b7a2bdfc9e16 (diff) | |
Pull merge from lindenlab/viewer-release
Diffstat (limited to 'indra/llui/llmenugl.cpp')
| -rwxr-xr-x | indra/llui/llmenugl.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 604dc92789..d3ed4a1286 100755 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -1276,7 +1276,15 @@ void LLMenuItemBranchGL::openMenu() { // open upwards if menu extends past bottom // adjust by the height of the menu item branch since it is a submenu - delta_y = branch_rect.getHeight() - getRect().getHeight(); + if (y + 2 * branch_rect.getHeight() - getRect().getHeight() > menu_region_rect.mTop) + { + // overlaps with top border, align with top + delta_y = menu_region_rect.mTop - y - branch_rect.getHeight(); + } + else + { + delta_y = branch_rect.getHeight() - getRect().getHeight(); + } } if( x + branch_rect.getWidth() > menu_region_rect.mRight ) @@ -3258,6 +3266,11 @@ void LLMenuGL::showPopup(LLView* spawning_view, LLMenuGL* menu, S32 x, S32 y) CURSOR_WIDTH + MOUSE_CURSOR_PADDING * 2, CURSOR_HEIGHT + MOUSE_CURSOR_PADDING * 2); menu->translateIntoRectWithExclusion( menu_region_rect, mouse_rect ); + if (menu->getRect().mTop > menu_region_rect.mTop) + { + // not enough space: align with top, ignore exclusion + menu->translateIntoRect( menu_region_rect ); + } menu->getParent()->sendChildToFront(menu); } |
