diff --git a/Furious/Qt/GuiEditorXXX.py b/Furious/Qt/GuiEditorXXX.py index 7992599..36873b4 100644 --- a/Furious/Qt/GuiEditorXXX.py +++ b/Furious/Qt/GuiEditorXXX.py @@ -79,7 +79,7 @@ class GuiEditorItemTextSpinBox(GuiEditorItemWidgetContainer): title = _(title) self._title = AppQLabel(title, translatable=translatable, parent=parent) - self._input = QSpinBox(parent=parent) + self._input = AppQSpinBox(parent=parent) def value(self) -> int: return self._input.value() diff --git a/Furious/Qt/QtWidgets.py b/Furious/Qt/QtWidgets.py index 412f224..563504c 100644 --- a/Furious/Qt/QtWidgets.py +++ b/Furious/Qt/QtWidgets.py @@ -48,6 +48,7 @@ __all__ = [ 'AppQMenuBar', 'AppQMessageBox', 'AppQPushButton', + 'AppQSpinBox', 'AppQTableView', 'AppQTableWidget', 'AppQTabWidget', @@ -63,12 +64,16 @@ __all__ = [ def moveToCenter(widget, parent=None): - geometry = widget.geometry() + geometry = widget.frameGeometry() - if parent is None: - center = QApplication.primaryScreen().availableGeometry().center() + if parent is not None: + if parent.isWindow(): + center = parent.frameGeometry().center() + else: + center = parent.mapToGlobal(parent.rect().center()) else: - center = parent.geometry().center() + screen = widget.screen() or QApplication.primaryScreen() + center = screen.availableGeometry().center() geometry.moveCenter(center) @@ -513,6 +518,24 @@ class AppQPushButton(Mixins.QTranslatable, Mixins.ThemeAware, QPushButton): self.setText(_(self.text())) +class AppQSpinBox(QSpinBox): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + + def resizeHints(self): + self.setMinimumWidth( + max( + self.sizeHint().width(), + self.fontMetrics().horizontalAdvance(str(self.maximum())) + 100, + ) + ) + + def setRange(self, *args, **kwargs): + super().setRange(*args, **kwargs) + + self.resizeHints() + + class AppQTableView(Mixins.ConnectionAware, QTableView): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) diff --git a/Furious/Widget/IndentSpinBox.py b/Furious/Widget/IndentSpinBox.py index 38013de..fa4af19 100644 --- a/Furious/Widget/IndentSpinBox.py +++ b/Furious/Widget/IndentSpinBox.py @@ -34,7 +34,7 @@ class IndentSpinBox(AppQDialog): self.indentText = AppQLabel(_('Indent:')) - self.indentSpin = QSpinBox() + self.indentSpin = AppQSpinBox() self.indentSpin.setRange(0, 8) self.indentSpin.setValue(2)