diff --git a/src/aare/gui/widgets/title_label.py b/src/aare/gui/widgets/title_label.py index 2d128825..ac9eef1f 100644 --- a/src/aare/gui/widgets/title_label.py +++ b/src/aare/gui/widgets/title_label.py @@ -71,7 +71,10 @@ class TitleLabel(QLabel): self.setCursor(Qt.CursorShape.PointingHandCursor) settings = QSettings("PSI", "AareGUI") - if settings.value(self._settings_key, False, type=bool): + # Default collapsed: a fresh GUI shows only banners (plus the expanded + # Beamline state panel, which manages its own default) until the user + # opens what they need; their choice is then persisted per title. + if settings.value(self._settings_key, True, type=bool): self._collapsed = True # Deferred: the panel adds its other widgets after constructing # the TitleLabel, so siblings don't exist yet. diff --git a/tests/unit/gui/test_title_label.py b/tests/unit/gui/test_title_label.py index 4cad9306..168dc31d 100644 --- a/tests/unit/gui/test_title_label.py +++ b/tests/unit/gui/test_title_label.py @@ -27,38 +27,41 @@ def _build_panel(qtbot): return panel, title, direct_child, nested_child -def test_toggle_hides_children_and_persists(qtbot): +def test_starts_collapsed_by_default_and_toggle_persists(qtbot): _remove_key() try: - panel, title, direct_child, nested_child = _build_panel(qtbot) - expanded_height = panel.sizeHint().height() - - title.toggle_collapsed() - assert direct_child.isHidden() + _panel, title, direct_child, nested_child = _build_panel(qtbot) + # Default is collapsed; applied deferred with a 0 ms timer (siblings + # don't exist yet at TitleLabel construction). + qtbot.waitUntil(lambda: direct_child.isHidden(), timeout=1000) assert nested_child.isHidden() assert not title.isHidden() - assert panel.sizeHint().height() < expanded_height assert title.toggle_button.text() == "+" - assert QSettings("PSI", "AareGUI").value(KEY, False, type=bool) is True title.toggle_collapsed() assert not direct_child.isHidden() assert not nested_child.isHidden() assert title.toggle_button.text() == "−" - assert QSettings("PSI", "AareGUI").value(KEY, False, type=bool) is False + assert QSettings("PSI", "AareGUI").value(KEY, True, type=bool) is False + + title.toggle_collapsed() + assert direct_child.isHidden() + assert title.toggle_button.text() == "+" + assert QSettings("PSI", "AareGUI").value(KEY, False, type=bool) is True finally: _remove_key() -def test_collapsed_state_restored_on_construction(qtbot): - QSettings("PSI", "AareGUI").setValue(KEY, True) +def test_saved_expanded_state_restored_on_construction(qtbot): + QSettings("PSI", "AareGUI").setValue(KEY, False) try: _panel, title, direct_child, nested_child = _build_panel(qtbot) - # Restore is deferred with a 0 ms timer (siblings don't exist yet at - # TitleLabel construction), so let the event loop run once. - qtbot.waitUntil(lambda: direct_child.isHidden(), timeout=1000) - assert nested_child.isHidden() - assert title.toggle_button.text() == "+" + # A saved expanded state must override the collapsed default; give the + # (absent) deferred collapse a chance to run before asserting. + qtbot.wait(100) + assert not direct_child.isHidden() + assert not nested_child.isHidden() + assert title.toggle_button.text() == "−" finally: _remove_key()