Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Fixed

- Escape now dismisses search-based sheets and popovers (database switcher, quick switcher, column and connection pickers). Pressing Escape clears the search text first; a second Escape closes the sheet. (#1490)
- Running `EXPLAIN` or `EXPLAIN ANALYZE` typed in the editor now opens the plan viewer instead of squashing the plan into one truncated grid cell. (#1480)
- Filtering the data grid keeps you on the keyboard. Applying or clearing a filter returns focus to the grid so you can keep moving through cells, Return applies the filter, and Escape closes the filter panel and returns to the grid. (#1490)
- Opening a table (Return or double-click in the sidebar) moves keyboard focus into the data grid so you can navigate cells with the arrow keys. Arrowing the sidebar still previews tables without taking focus. (#1490)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ struct DatabaseSwitcherSheet: View {
}
}
.frame(width: 480, height: 460)
.onExitCommand { dismiss() }
.task { await viewModel.fetchDatabases() }
}

Expand Down
8 changes: 4 additions & 4 deletions TablePro/Views/Sidebar/NativeSearchField.swift
Original file line number Diff line number Diff line change
Expand Up @@ -94,11 +94,11 @@ struct NativeSearchField: NSViewRepresentable {

func control(_ control: NSControl, textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
if commandSelector == #selector(NSResponder.cancelOperation(_:)) {
guard let field = control as? NSSearchField else { return false }
if !field.stringValue.isEmpty {
field.stringValue = ""
text.wrappedValue = ""
guard let field = control as? NSSearchField, !field.stringValue.isEmpty else {
return false
}
field.stringValue = ""
text.wrappedValue = ""
return true
}
if commandSelector == #selector(NSResponder.moveUp(_:)), let onMoveUp {
Expand Down
Loading