diff options
Diffstat (limited to 'src/widgets/widgets/qabstractspinbox.cpp')
-rw-r--r-- | src/widgets/widgets/qabstractspinbox.cpp | 95 |
1 files changed, 32 insertions, 63 deletions
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp index 154957eea3..f377275d23 100644 --- a/src/widgets/widgets/qabstractspinbox.cpp +++ b/src/widgets/widgets/qabstractspinbox.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWidgets module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #include <qplatformdefs.h> #include <private/qabstractspinbox_p.h> @@ -58,10 +22,11 @@ #include <qpalette.h> #include <qstylepainter.h> #include <qdebug.h> -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) # include <qaccessible.h> #endif +#include <QtCore/qpointer.h> //#define QABSTRACTSPINBOX_QSBDEBUG #ifdef QABSTRACTSPINBOX_QSBDEBUG @@ -72,6 +37,8 @@ QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + /*! \class QAbstractSpinBox \brief The QAbstractSpinBox class provides a spinbox and a line edit to @@ -420,7 +387,7 @@ bool QAbstractSpinBox::isAccelerated() const \since 5.3 - This property holds whether a thousands separator is enabled. By default this + \brief whether a thousands separator is enabled. By default this property is false. */ bool QAbstractSpinBox::isGroupSeparatorShown() const @@ -671,7 +638,8 @@ void QAbstractSpinBox::stepBy(int steps) } else if (e == AlwaysEmit) { d->emitSignals(e, old); } - selectAll(); + if (style()->styleHint(QStyle::SH_SpinBox_SelectOnStep, nullptr, this, nullptr)) + selectAll(); } /*! @@ -724,14 +692,14 @@ void QAbstractSpinBox::setLineEdit(QLineEdit *lineEdit) d->edit->setAcceptDrops(false); if (d->type != QMetaType::UnknownType) { - connect(d->edit, SIGNAL(textChanged(QString)), - this, SLOT(_q_editorTextChanged(QString))); - connect(d->edit, SIGNAL(cursorPositionChanged(int,int)), - this, SLOT(_q_editorCursorPositionChanged(int,int))); - connect(d->edit, SIGNAL(cursorPositionChanged(int,int)), - this, SLOT(updateMicroFocus())); - connect(d->edit->d_func()->control, SIGNAL(updateMicroFocus()), - this, SLOT(updateMicroFocus())); + QObjectPrivate::connect(d->edit, &QLineEdit::textChanged, + d, &QAbstractSpinBoxPrivate::editorTextChanged); + QObjectPrivate::connect(d->edit, &QLineEdit::cursorPositionChanged, + d, &QAbstractSpinBoxPrivate::editorCursorPositionChanged); + connect(d->edit, &QLineEdit::cursorPositionChanged, + this, [this]() { updateMicroFocus(); }); + connect(d->edit->d_func()->control, &QWidgetLineControl::updateMicroFocus, + this, [this]() { updateMicroFocus(); }); } d->updateEditFieldGeometry(); d->edit->setContextMenuPolicy(Qt::NoContextMenu); @@ -905,7 +873,7 @@ QSize QAbstractSpinBox::sizeHint() const int h = d->edit->sizeHint().height(); int w = 0; QString s; - QString fixedContent = d->prefix + d->suffix + QLatin1Char(' '); + QString fixedContent = d->prefix + d->suffix + u' '; s = d->textFromValue(d->minimum); s.truncate(18); s += fixedContent; @@ -945,7 +913,7 @@ QSize QAbstractSpinBox::minimumSizeHint() const int w = 0; QString s; - QString fixedContent = d->prefix + QLatin1Char(' '); + QString fixedContent = d->prefix + u' '; s = d->textFromValue(d->minimum); s.truncate(18); s += fixedContent; @@ -1048,12 +1016,12 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event) } if (d->spinClickTimerId == -1) stepBy(steps); - if(event->isAutoRepeat() && !isPgUpOrDown) { - if(d->spinClickThresholdTimerId == -1 && d->spinClickTimerId == -1) { + if (event->isAutoRepeat() && !isPgUpOrDown) { + if (d->spinClickThresholdTimerId == -1 && d->spinClickTimerId == -1) { d->updateState(up, true); } } -#ifndef QT_NO_ACCESSIBILITY +#if QT_CONFIG(accessibility) QAccessibleValueChangeEvent event(this, d->value); QAccessible::updateAccessibility(&event); #endif @@ -1095,7 +1063,7 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event) case Qt::Key_U: if (event->modifiers() & Qt::ControlModifier - && QGuiApplication::platformName() == QLatin1String("xcb")) { // only X11 + && QGuiApplication::platformName() == "xcb"_L1) { // only X11 event->accept(); if (!isReadOnly()) clear(); @@ -1269,7 +1237,7 @@ void QAbstractSpinBox::timerEvent(QTimerEvent *event) killTimer(d->spinClickThresholdTimerId); d->spinClickThresholdTimerId = -1; d->effectiveSpinRepeatRate = d->buttonState & Keyboard - ? QGuiApplication::styleHints()->keyboardAutoRepeatRate() + ? QGuiApplication::styleHints()->keyboardAutoRepeatRateF() : d->spinClickTimerInterval; d->spinClickTimerId = startTimer(d->effectiveSpinRepeatRate); doStep = true; @@ -1543,7 +1511,7 @@ void QAbstractSpinBoxPrivate::emitSignals(EmitPolicy, const QVariant &) signal. */ -void QAbstractSpinBoxPrivate::_q_editorTextChanged(const QString &t) +void QAbstractSpinBoxPrivate::editorTextChanged(const QString &t) { Q_Q(QAbstractSpinBox); @@ -1573,7 +1541,7 @@ void QAbstractSpinBoxPrivate::_q_editorTextChanged(const QString &t) the different sections etc. */ -void QAbstractSpinBoxPrivate::_q_editorCursorPositionChanged(int oldpos, int newpos) +void QAbstractSpinBoxPrivate::editorCursorPositionChanged(int oldpos, int newpos) { if (!edit->hasSelectedText() && !ignoreCursorPositionChanged && !specialValue()) { ignoreCursorPositionChanged = true; @@ -1624,7 +1592,7 @@ void QAbstractSpinBoxPrivate::init() Q_Q(QAbstractSpinBox); q->setLineEdit(new QLineEdit(q)); - edit->setObjectName(QLatin1String("qt_spinbox_lineedit")); + edit->setObjectName("qt_spinbox_lineedit"_L1); validator = new QSpinBoxValidator(q, this); edit->setValidator(validator); @@ -1678,13 +1646,13 @@ void QAbstractSpinBoxPrivate::updateState(bool up, bool fromKeyboard /* = false reset(); if (q && (q->stepEnabled() & (up ? QAbstractSpinBox::StepUpEnabled : QAbstractSpinBox::StepDownEnabled))) { - spinClickThresholdTimerId = q->startTimer(spinClickThresholdTimerInterval); buttonState = (up ? Up : Down) | (fromKeyboard ? Keyboard : Mouse); int steps = up ? 1 : -1; if (keyboardModifiers & stepModifier) steps *= 10; q->stepBy(steps); -#ifndef QT_NO_ACCESSIBILITY + spinClickThresholdTimerId = q->startTimer(spinClickThresholdTimerInterval); +#if QT_CONFIG(accessibility) QAccessibleValueChangeEvent event(q, value); QAccessible::updateAccessibility(&event); #endif @@ -1968,7 +1936,7 @@ QVariant QAbstractSpinBoxPrivate::calculateAdaptiveDecimalStep(int steps) const QSpinBoxValidator::QSpinBoxValidator(QAbstractSpinBox *qp, QAbstractSpinBoxPrivate *dp) : QValidator(qp), qptr(qp), dptr(dp) { - setObjectName(QLatin1String("qt_spinboxvalidator")); + setObjectName("qt_spinboxvalidator"_L1); } /*! @@ -1985,7 +1953,7 @@ QValidator::State QSpinBoxValidator::validate(QString &input, int &pos) const if (!dptr->prefix.isEmpty() && !input.startsWith(dptr->prefix)) { input.prepend(dptr->prefix); - pos += dptr->prefix.length(); + pos += dptr->prefix.size(); } if (!dptr->suffix.isEmpty() && !input.endsWith(dptr->suffix)) @@ -2075,6 +2043,7 @@ QVariant operator-(const QVariant &arg1, const QVariant &arg2) dt.setTime(dt.time().addMSecs(msecs)); ret = QVariant(dt); } + break; } default: break; } |