From 845f3d1f3a70c162d1daf420f22e2dcf35ce041c Mon Sep 17 00:00:00 2001 From: Kitty Barnett Date: Sat, 4 Aug 2012 00:56:15 +0200 Subject: [PATCH] FIRE-7209/VWR-28494: Hovering the mouse above/below the separator line doesn't highlight anything if the items above/below it are invisible -> right-click on the "Current Outfit" folder and hover on the separators --- indra/llui/llmenugl.cpp | 47 +++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/indra/llui/llmenugl.cpp b/indra/llui/llmenugl.cpp index 8bd297aa8a..451d7115ac 100644 --- a/indra/llui/llmenugl.cpp +++ b/indra/llui/llmenugl.cpp @@ -2672,21 +2672,35 @@ LLMenuItemGL* LLMenuGL::highlightNextItem(LLMenuItemGL* cur_item, BOOL skip_disa while(1) { // skip separators and disabled/invisible items - if ((*next_item_iter)->getEnabled() && (*next_item_iter)->getVisible() && !dynamic_cast(*next_item_iter)) +// [SL:KB] - Patch: UI-Misc | Checked: 2012-08-03 (Catznip-3.3) + bool fCanHighlight = ((*next_item_iter)->getVisible()) && (!dynamic_cast(*next_item_iter)); + if ( (fCanHighlight) && ((*next_item_iter)->getEnabled()) ) { - if (cur_item) - { - cur_item->setHighlight(FALSE); - } (*next_item_iter)->setHighlight(TRUE); return (*next_item_iter); } - - if (!skip_disabled || next_item_iter == cur_item_iter) + // We always want to skip invisible items and separators so only break if it was actually disabled + if ( ((!skip_disabled) && (fCanHighlight)) || (next_item_iter == cur_item_iter) ) { break; } +// [/SL:KB] +// if ((*next_item_iter)->getEnabled() && (*next_item_iter)->getVisible() && !dynamic_cast(*next_item_iter)) +// { +// if (cur_item) +// { +// cur_item->setHighlight(FALSE); +// } +// (*next_item_iter)->setHighlight(TRUE); +// return (*next_item_iter); +// } +// +// +// if (!skip_disabled || next_item_iter == cur_item_iter) +// { +// break; +// } next_item_iter++; if (next_item_iter == mItems.end()) @@ -2762,19 +2776,30 @@ LLMenuItemGL* LLMenuGL::highlightPrevItem(LLMenuItemGL* cur_item, BOOL skip_disa while(1) { // skip separators and disabled/invisible items -// if ((*prev_item_iter)->getEnabled() && (*prev_item_iter)->getVisible() && (*prev_item_iter)->getName() != SEPARATOR_NAME) // [SL:KB] - Patch: UI-Misc | Checked: 2012-08-03 (Catznip-3.3) - if ((*prev_item_iter)->getEnabled() && (*prev_item_iter)->getVisible() && !dynamic_cast(*prev_item_iter)) -// [/SL:KB] + bool fCanHighlight = ((*prev_item_iter)->getVisible()) && (!dynamic_cast(*prev_item_iter)); + if ( (fCanHighlight) && ((*prev_item_iter)->getEnabled()) ) { (*prev_item_iter)->setHighlight(TRUE); return (*prev_item_iter); } - if (!skip_disabled || prev_item_iter == cur_item_iter) + // We always want to skip invisible items and separators (unless the iterator round-tripped) + if ( ((!skip_disabled) && (fCanHighlight)) || (prev_item_iter == cur_item_iter) ) { break; } +// [/SL:KB] +// if ((*prev_item_iter)->getEnabled() && (*prev_item_iter)->getVisible() && (*prev_item_iter)->getName() != SEPARATOR_NAME) +// { +// (*prev_item_iter)->setHighlight(TRUE); +// return (*prev_item_iter); +// } +// +// if (!skip_disabled || prev_item_iter == cur_item_iter) +// { +// break; +// } prev_item_iter++; if (prev_item_iter == mItems.rend())