diff options
author | Vadim Savchuk <vsavchuk@productengine.com> | 2009-11-26 17:47:45 +0200 |
---|---|---|
committer | Vadim Savchuk <vsavchuk@productengine.com> | 2009-11-26 17:47:45 +0200 |
commit | 0b129e6e3ecd1a59165604a09f180e4c8c79fc91 (patch) | |
tree | 98bcae4c249da70f105512a7fb63621cfb1d6820 | |
parent | 81fdca151fa38494992115bfea219c7f9c6baf1e (diff) | |
parent | e6187ecaebcd39fd164f900a15710be6e21ecaf8 (diff) |
merge
--HG--
branch : product-engine
-rw-r--r-- | indra/llui/llflatlistview.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/indra/llui/llflatlistview.cpp b/indra/llui/llflatlistview.cpp index 8de3a8a96f..26a03e922a 100644 --- a/indra/llui/llflatlistview.cpp +++ b/indra/llui/llflatlistview.cpp @@ -554,12 +554,21 @@ BOOL LLFlatListView::handleKeyHere(KEY key, MASK mask) break; } - if ( key == KEY_UP || key == KEY_DOWN ) + if ( ( key == KEY_UP || key == KEY_DOWN ) && mSelectedItemPairs.size() ) { - LLRect selcted_rect = getLastSelectedItemRect().stretch(1); - LLRect visible_rect = getVisibleContentRect(); - if ( !visible_rect.contains (selcted_rect) ) - scrollToShowRect(selcted_rect); + LLRect visible_rc = getVisibleContentRect(); + LLRect selected_rc = getLastSelectedItemRect(); + + if ( !visible_rc.contains (selected_rc) ) + { + // But scroll in Items panel coordinates + scrollToShowRect(selected_rc); + } + + // In case we are in accordion tab notify parent to show selected rectangle + LLRect screen_rc; + localRectToScreen(selected_rc, &screen_rc); + notifyParent(LLSD().insert("scrollToShowRect",screen_rc.getValue())); handled = TRUE; } |