diff options
| -rwxr-xr-x | indra/llui/llfolderview.cpp | 22 | 
1 files changed, 10 insertions, 12 deletions
diff --git a/indra/llui/llfolderview.cpp b/indra/llui/llfolderview.cpp index 13d231d712..173279fa81 100755 --- a/indra/llui/llfolderview.cpp +++ b/indra/llui/llfolderview.cpp @@ -1127,18 +1127,18 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )  		if((mSelectedItems.size() > 0) && mScrollContainer)  		{  			LLFolderViewItem* last_selected = getCurSelectedItem(); +			BOOL shift_select = mask & MASK_SHIFT; +			// don't shift select down to children of folders (they are implicitly selected through parent) +			LLFolderViewItem* next = last_selected->getNextOpenNode(!shift_select); -			if (!mKeyboardSelection) +			if (!mKeyboardSelection || (!shift_select && (!next || next == last_selected)))  			{  				setSelection(last_selected, FALSE, TRUE);  				mKeyboardSelection = TRUE;  			} -			LLFolderViewItem* next = NULL; -			if (mask & MASK_SHIFT) +			if (shift_select)  			{ -				// don't shift select down to children of folders (they are implicitly selected through parent) -				next = last_selected->getNextOpenNode(FALSE);  				if (next)  				{  					if (next->isSelected()) @@ -1155,7 +1155,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )  			}  			else  			{ -				next = last_selected->getNextOpenNode();  				if( next )  				{  					if (next == last_selected) @@ -1191,18 +1190,18 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )  		if((mSelectedItems.size() > 0) && mScrollContainer)  		{  			LLFolderViewItem* last_selected = mSelectedItems.back(); +			BOOL shift_select = mask & MASK_SHIFT; +			// don't shift select down to children of folders (they are implicitly selected through parent) +			LLFolderViewItem* prev = prev = last_selected->getPreviousOpenNode(!shift_select); -			if (!mKeyboardSelection) +			if (!mKeyboardSelection || (!shift_select && prev == this))  			{  				setSelection(last_selected, FALSE, TRUE);  				mKeyboardSelection = TRUE;  			} -			LLFolderViewItem* prev = NULL; -			if (mask & MASK_SHIFT) +			if (shift_select)  			{ -				// don't shift select down to children of folders (they are implicitly selected through parent) -				prev = last_selected->getPreviousOpenNode(FALSE);  				if (prev)  				{  					if (prev->isSelected()) @@ -1219,7 +1218,6 @@ BOOL LLFolderView::handleKeyHere( KEY key, MASK mask )  			}  			else  			{ -				prev = last_selected->getPreviousOpenNode();  				if( prev )  				{  					if (prev == this)  | 
