diff options
| author | Grail Finder <wohilas@gmail.com> | 2026-02-17 11:16:52 +0300 |
|---|---|---|
| committer | Grail Finder <wohilas@gmail.com> | 2026-02-17 11:16:52 +0300 |
| commit | 475936fb1b2200c600869ba71c45057a6424252d (patch) | |
| tree | ab7bf743995c5054abf2b625f5f0a4ac4fd1298d /docs/filepicker-search.md | |
| parent | c83779b4796bdb3e42b43cdeffa1f4dba2014de3 (diff) | |
Feat: filepicker search
Diffstat (limited to 'docs/filepicker-search.md')
| -rw-r--r-- | docs/filepicker-search.md | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/docs/filepicker-search.md b/docs/filepicker-search.md deleted file mode 100644 index e595c7a..0000000 --- a/docs/filepicker-search.md +++ /dev/null @@ -1,66 +0,0 @@ -# Filepicker Search Implementation - Notes - -## Goal -Add `/` key functionality in filepicker (Ctrl+O) to filter/search files by name, similar to how `/` works in the main TUI textview. - -## Requirements -- Press `/` to activate search mode -- Live case-insensitive filtering -- `../` (parent directory) always visible -- Show "No matching files" when nothing matches -- Esc to cancel (return to main app for sending messages) -- Enter to confirm search and close search input - -## Approaches Tried - -### Approach 1: Modify Flex Layout In-Place -Add search input to the existing flex container by replacing listView with searchInput. - -**Issues:** -- tview's `RemoveItem`/`AddItem` causes UI freezes/hangs -- Using `app.QueueUpdate` or `app.Draw` didn't help -- Layout changes don't render properly - -### Approach 2: Add Input Capture to ListView -Handle `/` key in listView's SetInputCapture. - -**Issues:** -- Key events don't reach listView when filepicker is open -- Global app input capture handles `/` for main textview search first -- Even when checking `pages.GetFrontPage()`, the key isn't captured - -### Approach 3: Global Handler with Page Replacement -Handle `/` in global app input capture when filepicker page is frontmost. - -**Issues:** -- Search input appears but text is invisible (color issues) -- Enter/Esc not handled - main TUI captures them -- Creating new pages adds on top instead of replacing, causing split-screen effect -- Enter on file item opens new filepicker (page stacking issue) - -### Approach 4: Overlay Page (Modal-style) -Create a new flex with search input on top and filepicker below, replace the page. - -**Issues:** -- Page replacement causes split-screen between main app and filepicker -- Search input renders but invisible text -- Enter/Esc handled by main TUI, not search input -- State lost when recreating filepicker - -## Root Causes - -1. **tview UI update issues**: Direct manipulation of flex items causes freezes or doesn't render -2. **Input capture priority**: Even with page overlay, main TUI's global input capture processes keys first -3. **Esc key conflict**: Esc is used for sending messages in main TUI, and it's hard to distinguish when filepicker is open -4. **Focus management**: tview's focus system doesn't work as expected with dynamic layouts - -## Possible Solutions (Not Tried) - -1. **Use tview's built-in Filter method**: ListView has a SetFilterFunc that might work -2. **Create separate search primitive**: Instead of replacing list, use a separate text input overlay -3. **Different key for search**: Use a key that isn't already mapped in main TUI -4. **Fork/extend tview**: May need to modify tview itself for better dynamic UI updates -5. **Use form with text input**: tview.Forms might handle input better - -## Current State -All search-related changes rolled back. Filepicker works as before without search functionality. |
