From ad95704832bd04d24212bd66d2e128aae82d44d1 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 15 Mar 2025 15:46:40 -0300 Subject: [PATCH] Gui: spinbox add patch for qt<6.3 --- src/Gui/SpinBox.cpp | 18 ++++++++++++++++-- src/Gui/SpinBox.h | 1 + 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/Gui/SpinBox.cpp b/src/Gui/SpinBox.cpp index fbdcfc1abe..eebf84a245 100644 --- a/src/Gui/SpinBox.cpp +++ b/src/Gui/SpinBox.cpp @@ -60,12 +60,22 @@ ExpressionSpinBox::ExpressionSpinBox(QAbstractSpinBox* sb) // horizontal to avoid going under the icon lineedit->setAlignment(Qt::AlignVCenter); int iconWidth = iconLabel->sizeHint().width(); - int margin = lineedit->style()->pixelMetric(QStyle::PM_LineEditIconMargin, nullptr, lineedit); + int margin = getMargin(); lineedit->setTextMargins(margin, margin, margin + iconWidth, margin); } ExpressionSpinBox::~ExpressionSpinBox() = default; +int ExpressionSpinBox::getMargin() +{ + lineedit = spinbox->findChild(); +#if QT_VERSION >= QT_VERSION_CHECK(6, 3, 0) + return lineedit->style()->pixelMetric(QStyle::PM_LineEditIconMargin, nullptr, lineedit) / 2; +#else + return lineedit->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, lineedit); +#endif +} + void ExpressionSpinBox::bind(const App::ObjectIdentifier &_path) { ExpressionBinding::bind(_path); @@ -169,7 +179,11 @@ void ExpressionSpinBox::onChange() void ExpressionSpinBox::resizeWidget() { - int margin = lineedit->style()->pixelMetric(QStyle::PM_LineEditIconMargin, nullptr, lineedit); +#if QT_VERSION >= QT_VERSION_CHECK(6, 3, 0) + int margin = lineedit->style()->pixelMetric(QStyle::PM_LineEditIconMargin, nullptr, lineedit) / 2; +#else + int margin = lineedit->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, nullptr, lineedit); +#endif int iconWidth = iconLabel->width() + margin; iconLabel->move(lineedit->width() - iconWidth, (lineedit->height() - iconLabel->height()) / 2); updateExpression(); diff --git a/src/Gui/SpinBox.h b/src/Gui/SpinBox.h index 6402d6de31..2ba27f9b36 100644 --- a/src/Gui/SpinBox.h +++ b/src/Gui/SpinBox.h @@ -63,6 +63,7 @@ protected: virtual void showIcon(); virtual void validateInput(); void resizeWidget(); + int getMargin(); bool handleKeyEvent(const QString&); virtual void openFormulaDialog();