This problem begins from expanding accordion_tab:
1. adjustToFitScreen - calls adjustContainerPanel with "fit screen" rectangle (calls reshape() and resize()).
Enter adjustContainerPanel("fit screen")
2. reshape calls ensureSelectedVisible -> scrollToShowRect...
scrollToShowRect notifyParent about "scrollToShowRect" (notifiParent is sync call)
Enter LLAccordionCtrl::notifyParent("scrollToShowRect")
4. AccordionCtrl handles "scrollToShowRect" notification and perform adjustContainerPanel with "another" rectangle.
Perform adjustContainerPanel("another") // At least I have not seen 3rd recursive call of adjustContainerPanel
5. Exit LLAccordionCtrl::notifyParent("scrollToShowRect")
6. Exit reshape("fit screen").
7. setRect("fit screen").
8. Exit adjustContainerPanel("fit screen").
...
As result we get AccordionTab that reshaped to "another" rectangle and resized to "fit screen" rectangle.
+ Fixed by handling "scrollToShowRect" message in LLAccordionCtrlTab from "LLScrollContainer".
+ Removed the workaround comment.
Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/727/
--HG--
branch : product-engine
- This issue was a regression caused by EXT-8052. Bug was caused by setting visibility of border to FALSE without respect to boolean argument passed to setNoItemsCommentVisible().
setNoItemsCommentVisible() is called on every rearrange, so border disappeared quite often. Fixed it by setting border's visibility depending on passed argument.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/764/
--HG--
branch : product-engine
Fixed an issue in LLFlatListView where calling setCommitOnSelectionChange(true) wasn't always causing the commit signal to be sent when the selection changed.
Reviewed by Richard at http://codereview.lindenlab.com/2579010
EXT-8235 FIX HUGE long delay when reopening and/or closing edit outfit sidepanel if "Add More..." is active
EXT-7695 FIX UI lockup after add wearable, right click av -> Change Outfit
reviewed by Vir
Added additional check to avoid deselcting of items when filter is applied and made a couple of renames according to Mike's comments in review at https://codereview.productengine.com/secondlife/r/648/
--HG--
branch : product-engine
- Added availability to force showing unmatched items to LLFlatListViewEx
- Applied it to wearable items lists in LLOutfitsList
- Changed condition for outfit accordion tab showing (because now all items are visible, so checking their number doesn't help).
Used here check for a flag added in this fix, which tells whether last applied filter found any matches in the list.
Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/648/
--HG--
branch : product-engine
- Moved wearable item name comparator from llcofwearables to llwearableitemslist.
- Added wearable item type comparator.
- Added item type and description getters to wearable item base class LLPanelInventoryListItemBase.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/407/
--HG--
branch : product-engine
- changed the LLInventoryItemsList::addNewItem() to add item to the list without immediately rearranging
- implemented LLFlatListViewEx::setFilterSubString(), sets up new filter string and filters the list.
- implemented LLFlatListViewEx::filterItems(), filters the list, rearranges and notifies parent about shape changes. The list items are filtered using the notify() functionality, without need in adding/removing them on each filter call. It sends 'match_filter' request to items and interprets the returned zero as sign of matched filter string, i.e. we don't hide items that don't support 'match_filter' action(separators etc).
- filtring of LLOutfitsList.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/342/
--HG--
branch : product-engine
Implemented passing of entered filter substring without head spaces to search URI in help message for null filtered results.
* Updated setting "no item message" to use search term from filter editor for avatar & group lists and for inventory panels.
* Updated appropriate translatable strings to get [SEARCH_TERM] substitution.
* Updated processing of filter substring to pass original string to methods applied new filter.
Additional necessary changes
* Changed place to set "no item message" for group list from refresh to where filter is updated (like in avatar lists)
* Removed converting of filter substring to upper case in Places & My Appearance sidepanels (this conversion has already been implemented in where filter is applied)
* Added a separate message for Landmarks to set search URI to secondlife:///app/search/places for Lanmarks panel;
other inventory related panels have URL to all searched categories (secondlife:///app/search/all)
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/326/
--HG--
branch : product-engine
Reason:
A) incorrect UP arrow handling in accordion control: invisible accordion tab was selected to handle selection.
B) invalid std::map item (in empty map) was used to make selection in Flat List
Fix: added checks against empty map before use front/back item pair before selecting first/last items.
Also updated processing of the UP key in accordion control to not select invisible accordion tab.
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/318/
--HG--
branch : product-engine
Partial implementation of help text in case of empty list when filtered for Nearby and Recent lists of People panel:
* Extracted support implementation of several messages for empty list depend of filtering from LLGroupList to LLFlatListEx
* change inheritence of LLGroupList and LLAvatarList from LLFlatListView to LLFlatListViewEx
* updated panel people to init Nearby & Recent lists with appropriate messages.
--HG--
branch : product-engine
- moved "No Items" textbox params to widget (flat_list_view.xml)
- set default vertical/horizontal padding to 10 px
- they can be overridden in panel's xml if necessary.
--HG--
branch : product-engine
I made it about a year and a half ago; Zero found it while reading code. I had added a return value to LLSD::insert(), but a) did it wrong, and b) broke the STL-like semantics of insert(). So I've put insert() back to returning void and created LLSD::with(), which does what my earlier insert() did. The compiler then caught all the cases where insert()'s return value were being used, and I changed those to use with() instead.
* Bugs: EXT-888 EXT-866 EXT-861 EXT-858 EXT-864 EXT-875 EXT-884 EXT-718 EXT-786 EXT-885 EXT-910 EXT-845 EXT-312 EXT-823 EXT-868
* New Development: EXT-748 EXT-863 EXT-835
QA: Please test Recent List to verify it has no troubles.