Save and restore window geometry via `QSettings`

Seems to be required to get certain widgets to size correctly on macos
like the order-mode "health bar" among other types of labels?

(this commit msg was generated in some part by [`claude-code`][claude-code-gh])
[claude-code-gh]: https://github.com/anthropics/claude-code

Originally from @dnks with a weird(er) commit msg XP
macos_support
Gud Boi 2026-03-11 11:59:56 -04:00
parent 52e65dbe0d
commit d4fbfaae45
2 changed files with 14 additions and 0 deletions

View File

@ -37,6 +37,7 @@ from piker.ui.qt import (
QStatusBar,
QScreen,
QCloseEvent,
QSettings,
)
from ..log import get_logger
from ._style import _font_small, hcolor
@ -181,6 +182,13 @@ class MainWindow(QMainWindow):
self._status_label: QLabel = None
self._size: tuple[int, int]|None = None
# restore window geometry from previous session
settings = QSettings('pikers', 'piker')
geometry = settings.value('windowGeometry')
if geometry is not None:
self.restoreGeometry(geometry)
log.debug('Restored window geometry from previous session')
@property
def mode_label(self) -> QLabel:
@ -217,6 +225,11 @@ class MainWindow(QMainWindow):
'''Cancel the root actor asap.
'''
# save window geometry for next session
settings = QSettings('pikers', 'piker')
settings.setValue('windowGeometry', self.saveGeometry())
log.debug('Saved window geometry for next session')
# raising KBI seems to get intercepted by by Qt so just use the system.
os.kill(os.getpid(), signal.SIGINT)

View File

@ -44,6 +44,7 @@ from PyQt6.QtCore import (
QItemSelectionModel,
pyqtBoundSignal,
pyqtRemoveInputHook,
QSettings,
)
align_flag: EnumType = Qt.AlignmentFlag