diff --git a/src/widgets/virtual_advanced_table/virtual_advanced_table.zig b/src/widgets/virtual_advanced_table/virtual_advanced_table.zig index bbb4225..d750431 100644 --- a/src/widgets/virtual_advanced_table/virtual_advanced_table.zig +++ b/src/widgets/virtual_advanced_table/virtual_advanced_table.zig @@ -43,6 +43,7 @@ pub const CellGeometry = types.CellGeometry; pub const DataProvider = data_provider.DataProvider; pub const CellEditorColors = cell_editor.CellEditorColors; pub const CellEditorResult = cell_editor.CellEditorResult; +pub const NavigateDirection = cell_editor.NavigateDirection; pub const drawCellEditor = cell_editor.drawCellEditor; pub const VirtualAdvancedTableState = state_mod.VirtualAdvancedTableState; @@ -106,7 +107,7 @@ pub const VirtualAdvancedTableResult = struct { previous_row: ?usize = null, /// Navegación solicitada después de commit - navigate_direction: cell_editor.CellEditorResult.NavigateDirection = .none, + navigate_direction: cell_editor.NavigateDirection = .none, /// Tab presionado sin edición activa (pasar focus al siguiente widget) tab_out: bool = false, @@ -1017,8 +1018,11 @@ fn handleKeyboard( }, .tab => { // Tab sin edición activa: indica que el panel debe mover focus - result.tab_out = true; - result.tab_shift = event.modifiers.shift; + // IMPORTANTE: Solo si CellEditor no procesó Tab (evita doble procesamiento) + if (result.navigate_direction == .none) { + result.tab_out = true; + result.tab_shift = event.modifiers.shift; + } }, else => {}, }