fix: scroll Local Contact tabs so rows keep text height
CI / lint (push) Skipped
CI / test (3.11) (push) Skipped
CI / test (3.12) (push) Skipped
CI / test (3.13) (push) Skipped
CI / test-with-beamline-plugins (pxi_bec) (push) Skipped
CI / test-with-beamline-plugins (pxii_bec) (push) Skipped
CI / test-with-beamline-plugins (pxiii_bec) (push) Skipped
CI / test (3.13) (pull_request) Successful in 45s
CI / test (3.12) (pull_request) Successful in 49s
CI / test-with-beamline-plugins (pxii_bec) (pull_request) Successful in 47s
CI / test-with-beamline-plugins (pxiii_bec) (pull_request) Successful in 1m8s
CI / test-with-coverage (pull_request) Successful in 2m6s
CI / coverage-analysis (pull_request) Failing after 4s
CI / test (3.11) (pull_request) Successful in 2m49s
CI / test-with-beamline-plugins (pxi_bec) (pull_request) Successful in 4m4s
CI / lint (pull_request) Failing after 4m25s

The dialog's explicit minimum size is smaller than some tabs' content;
without a scroll area Qt squeezes rows below text height (clipped labels
on the Hardware tab). Wrap every tab in a QScrollArea.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-06 18:32:07 +02:00
co-authored by Claude Fable 5
parent f104faa149
commit 9b6b45ba0a
+19 -7
View File
@@ -20,6 +20,7 @@ from PySide6.QtWidgets import (
QLabel,
QMessageBox,
QPushButton,
QScrollArea,
QTabWidget,
QTextEdit,
QVBoxLayout,
@@ -128,13 +129,16 @@ class LocalContactPanel(QFrame):
self._tabs = QTabWidget(self)
layout.addWidget(self._tabs, 1)
self._tabs.addTab(self._build_status_tab(), self.TAB_STATUS)
self._tabs.addTab(self._build_recovery_tab(), self.TAB_RECOVERY)
self._tabs.addTab(self._build_tell_tab(), self.TAB_TELL)
self._tabs.addTab(self._build_bec_tab(), self.TAB_BEC)
self._tabs.addTab(self._build_hardware_tab(), self.TAB_HARDWARE)
self._tabs.addTab(self._build_detector_tab(), self.TAB_DETECTOR)
self._tabs.addTab(self._build_config_tab(), self.TAB_CONFIG)
# Every tab scrolls: the dialog's explicit minimum size is smaller
# than some tabs' content, and without a scroll area Qt squeezes the
# rows below text height (clipped labels on the Hardware tab).
self._tabs.addTab(self._scrolled(self._build_status_tab()), self.TAB_STATUS)
self._tabs.addTab(self._scrolled(self._build_recovery_tab()), self.TAB_RECOVERY)
self._tabs.addTab(self._scrolled(self._build_tell_tab()), self.TAB_TELL)
self._tabs.addTab(self._scrolled(self._build_bec_tab()), self.TAB_BEC)
self._tabs.addTab(self._scrolled(self._build_hardware_tab()), self.TAB_HARDWARE)
self._tabs.addTab(self._scrolled(self._build_detector_tab()), self.TAB_DETECTOR)
self._tabs.addTab(self._scrolled(self._build_config_tab()), self.TAB_CONFIG)
self._daq.local_contact_simulation_state_loaded.connect(self._apply_simulation_state)
self._daq.local_contact_device_state_loaded.connect(self._apply_device_state)
@@ -174,6 +178,14 @@ class LocalContactPanel(QFrame):
)
return self._register_status_widget(widget)
@staticmethod
def _scrolled(widget: QWidget) -> QScrollArea:
area = QScrollArea()
area.setWidgetResizable(True)
area.setFrameShape(QFrame.Shape.NoFrame)
area.setWidget(widget)
return area
def _build_status_tab(self) -> QWidget:
tab = QWidget(self)
layout = QVBoxLayout(tab)