Enhance thread navigation with improved expand/collapse behavior

Major improvements to threaded conversation navigation:

- Add Shift+Left shortcut to navigate to thread root from any reply
- Fix navigation state synchronization using accessibility flags instead of Qt's isExpanded()
- Implement proper child item flag management (selectable/non-selectable)
- Add comprehensive scrollToItem() calls for better focus management
- Enhance navigation methods with safety checks and proper state handling
- Force visual refresh attempts to work around Qt display sync issues

Navigation improvements:
- Right Arrow: Expand thread or move to first child when expanded
- Left Arrow: Collapse thread or move to parent
- Shift+Left: Jump to thread root from anywhere in the thread
- All navigation properly skips collapsed items

Known Qt quirk documented: Visual display may occasionally require
double-collapse cycle due to Qt tree widget display synchronization,
but navigation logic works correctly after first collapse.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Storm Dragon
2025-07-21 10:07:41 -04:00
parent ed7de5dafa
commit 1391d0c66f
3 changed files with 129 additions and 47 deletions

View File

@ -82,6 +82,9 @@ Bifrost includes a sophisticated sound system with:
### Navigation
- **Arrow Keys**: Navigate through posts
- **Right Arrow**: Expand thread / Move to first child when expanded
- **Left Arrow**: Collapse thread / Move to parent
- **Shift+Left Arrow**: Navigate to thread root from any reply
- **Page Up/Down**: Jump multiple posts
- **Home/End**: Go to first/last post
- **Enter**: Expand/collapse threads, or vote in polls
@ -156,6 +159,17 @@ Bifrost includes comprehensive poll support with full accessibility:
- Thread expansion/collapse with audio feedback
- Poll creation and voting with full accessibility support
### Known Qt Display Quirk
Due to a Qt tree widget display synchronization issue, thread collapse may occasionally require a double-operation for the visual display to fully sync:
**If collapse appears incomplete:**
1. Navigate to thread root post (use Shift+Left from any reply)
2. Press Left to collapse → announces "collapsed"
3. Press Right then Left again → now fully collapsed visually
Note: Navigation logic works correctly after the first collapse (arrow keys will skip collapsed replies), but the visual display may need the extra cycle to sync.
## Sound Pack Creation and Installation
### Creating Custom Sound Packs