**Status:** First stages
---
=====Team=====
**Commissioner:** @billreynish
**Project leader:** @HooglyBoogly
=====Description=====
**Big picture:** Method to filter properties in the properties editor, but general enough to use elsewhere too
**Use cases**:
* A general way to find that one setting you always lose track of
* In more complicated situations, a faster way to navigate to a property than to scroll to and expand the relevant panels
**Design:**
T71185
**Engineer plan:**
Two new "passes" will be needed:
1. A filter for buttons that don't match the filter at the end of the layout code,
2. A "simple layout" pass, which runs a simpler version of the layout code for panels in all tabs to highlight the ones with active items.
It would also be conceivable to build the property search layout during the same pass as the regular layout code,
but there are a few downsides to that method, mostly in the added complexity to the regular layout code.
=====Work plan=====
**Milestone 1 - Poperty Search Layout Changes**
Time estimate: //A week or two//
[ ] Seach filter
[x] RNA property buttons
[ ] UILists
[ ] Operator buttons
[ ] `?` Search based on heading
[ ] Menu buttons
[ ] Build complete "search layout"
[x] Move items to single column layout
[ ] Replace text with RNA property description
[x] Preserve layout state such as inactive, redalert, and disabled
[x] Preserve alignment like for expanded enums
[ ] Keep decorators
[ ] Keep labels
[ ] Single properties
[ ] Array properties
[x] Don't change headers
[ ] Interaction with panels
[x] Search closed panels and their subpanels
[x] Don't display empty panels
[x] Panels animate as the search changes
[x] Display entire panel if panel label matches search
[x] Fix panel sorting during and after search
[ ] Fix panels re-sorting when a new panel is added
[ ] Make pin button work in header
[x] ctrl-F to activate search box
[x] alt-F to clear seach box
**Milestone 2 - Highlight Tabs with Filtered Items**
Time estimate: //A couple weeks//
[ ] Store "has property" per tab and display highlights
[ ] Separate layout pass for hidden blocks
[ ] Call panel layout code of panels for all tabs
[ ] Don't run more expensive operations like alignment
[ ] Switch to the next highlighted tab if the current tab is empty
**Branch**: `property-search-ui`