polish: row numbers, ping indicator, frozen column, keyboard nav

- ResultsPanel: _RowNumberProxy keeps vertical header numbers sequential
  in visual order (sort-stable); both views get a 48 px wide row-number header
- MainWindow: _PingWorker pings each active connection every 30 s via
  test_connection(); status dot (green/red) shown in status bar with tooltip
- TableViewer: 📌 toggle freezes first column using dual-view overlay
  (_frozen_view child widget) with synced scroll, row heights, and resize
  event-filter; column 0 is hidden in the main view while frozen
- RowDialog: OK set as default button; first field focused on open
- ConnectionDialog: OK set as default; Enter in password field submits

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-21 17:37:50 -04:00
co-authored by Claude Sonnet 4.6
parent b7e7411c1b
commit 6cff9557b3
5 changed files with 191 additions and 9 deletions
+9
View File
@@ -88,6 +88,9 @@ class ConnectionDialog(QDialog):
)
bbox.accepted.connect(self._accept)
bbox.rejected.connect(self.reject)
ok_btn = bbox.button(QDialogButtonBox.StandardButton.Ok)
if ok_btn:
ok_btn.setDefault(True)
btn_row = QHBoxLayout()
btn_row.addWidget(self._test_btn)
@@ -167,6 +170,12 @@ class ConnectionDialog(QDialog):
self._timeout.setSuffix(" sec")
form.addRow("Timeout:", self._timeout)
# Enter in password submits the dialog
self._password.returnPressed.connect(self._accept)
# Focus starts on the name field
self._name.setFocus()
return w
def _build_ssl_tab(self) -> QWidget: