Pfeil-Navigation im Dateibrowser funktioniert nicht (links/rechts) #1

Closed
opened 2026-08-31 15:43:00 +00:00 by x3 · 0 comments
Owner

Beschreibung

Die klassische File-Manager-Steuerung (Total Commander / ranger) funktioniert nicht wie erwartet:

  • Links-Pfeil soll eine Verzeichnisebene nach oben wechseln, tut dies aber nicht.
  • Rechts-Pfeil soll den markierten Ordner öffnen, hat aber gar kein Binding.
  • Zusätzlich stürzt die Navigation ab, sobald ein Eintrag ausgewählt und geöffnet wird.

Ursachen (Root Cause Analysis)

  1. Widget-Binding überschreibt Screen-Binding: DataTable bindet die Pfeiltasten selbst (left -> cursor_left, right -> cursor_right). In Textual haben Widget-Bindings Vorrang vor Screen-Bindings. Das Screen-Binding left -> up_level wurde dadurch nie ausgelöst – der Links-Pfeil bewegte nur den (nutzlosen) horizontalen Cursor.
  2. Kein rechts-Binding: Es gab kein Binding, um per Rechts-Pfeil einen Ordner zu öffnen.
  3. _selected() liefert Text statt str: Die erste Spalte wird als rich.Text gerendert; _selected() gab dieses Objekt zurück. _open() ruft dann sel.startswith("↑") auf -> AttributeError: 'Text' object has no attribute 'startswith'. Dadurch schlug jedes Öffnen/Enter fehl.

Fix (umgesetzt, v0.3.0)

  • Neue Widget-Klasse FileTable(DataTable) in ftptui/app.py, die left -> „eine Ebene hoch" und right -> „öffnen" umbindet (priority=True).
  • _selected() gibt jetzt die Klartext-Zeichenkette der Namenszelle zurück (cell.plain).
  • Beide Panele nutzen FileTable.

Betroffen

  • ftptui/app.py

Status

Behoben in v0.3.0.

## Beschreibung Die klassische File-Manager-Steuerung (Total Commander / ranger) funktioniert nicht wie erwartet: - **Links-Pfeil** soll eine Verzeichnisebene nach oben wechseln, tut dies aber nicht. - **Rechts-Pfeil** soll den markierten Ordner öffnen, hat aber gar kein Binding. - Zusätzlich stürzt die Navigation ab, sobald ein Eintrag ausgewählt und geöffnet wird. ## Ursachen (Root Cause Analysis) 1. **Widget-Binding überschreibt Screen-Binding:** `DataTable` bindet die Pfeiltasten selbst (`left` -> `cursor_left`, `right` -> `cursor_right`). In Textual haben Widget-Bindings Vorrang vor Screen-Bindings. Das Screen-Binding `left` -> `up_level` wurde dadurch nie ausgelöst – der Links-Pfeil bewegte nur den (nutzlosen) horizontalen Cursor. 2. **Kein rechts-Binding:** Es gab kein Binding, um per Rechts-Pfeil einen Ordner zu öffnen. 3. **`_selected()` liefert `Text` statt `str`:** Die erste Spalte wird als `rich.Text` gerendert; `_selected()` gab dieses Objekt zurück. `_open()` ruft dann `sel.startswith("↑")` auf -> `AttributeError: 'Text' object has no attribute 'startswith'`. Dadurch schlug jedes Öffnen/Enter fehl. ## Fix (umgesetzt, v0.3.0) - Neue Widget-Klasse `FileTable(DataTable)` in `ftptui/app.py`, die `left` -> „eine Ebene hoch" und `right` -> „öffnen" umbindet (`priority=True`). - `_selected()` gibt jetzt die Klartext-Zeichenkette der Namenszelle zurück (`cell.plain`). - Beide Panele nutzen `FileTable`. ## Betroffen - `ftptui/app.py` ## Status Behoben in v0.3.0.
x3 closed this issue 2026-08-31 17:35:44 +00:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: x3/ftptui#1