diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-11 08:48:27 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2016-04-11 09:12:36 +0200 |
commit | f34e73a16a3d757057e007874cb5008f16e20f02 (patch) | |
tree | bcc228617cf240773fd09daac1a1a2614b552b68 /src/widgets/widgets | |
parent | 5380808453728a354ae28aae76e85ac448245cf1 (diff) | |
parent | b9d386f2ccd69c7f6a766a6d90a6024eeb48e90a (diff) |
Merge remote-tracking branch 'origin/5.7' into dev
Conflicts:
src/corelib/kernel/qobject.cpp
src/gui/painting/qpaintengine_raster.cpp
Change-Id: I74e1779832f43d033708dcfd6b666c7b4f0111fb
Diffstat (limited to 'src/widgets/widgets')
-rw-r--r-- | src/widgets/widgets/qabstractbutton.cpp | 13 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractscrollarea.cpp | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractslider.cpp | 10 | ||||
-rw-r--r-- | src/widgets/widgets/qcalendarwidget.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qlabel.cpp | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qlineedit_p.cpp | 2 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbutton.cpp | 9 | ||||
-rw-r--r-- | src/widgets/widgets/qtoolbutton.h | 1 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgetlinecontrol.cpp | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qwidgettextcontrol.cpp | 2 |
10 files changed, 36 insertions, 16 deletions
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp index 44123d4dda..1a5b8db33c 100644 --- a/src/widgets/widgets/qabstractbutton.cpp +++ b/src/widgets/widgets/qabstractbutton.cpp @@ -188,15 +188,16 @@ QList<QAbstractButton *>QAbstractButtonPrivate::queryButtonList() const QList<QAbstractButton*>candidates = parent->findChildren<QAbstractButton *>(); if (autoExclusive) { - for (int i = candidates.count() - 1; i >= 0; --i) { - QAbstractButton *candidate = candidates.at(i); - if (!candidate->autoExclusive() + auto isNoMemberOfMyAutoExclusiveGroup = [](QAbstractButton *candidate) { + return !candidate->autoExclusive() #ifndef QT_NO_BUTTONGROUP || candidate->group() #endif - ) - candidates.removeAt(i); - } + ; + }; + candidates.erase(std::remove_if(candidates.begin(), candidates.end(), + isNoMemberOfMyAutoExclusiveGroup), + candidates.end()); } return candidates; } diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index 760f7b999a..90cd6bde99 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -269,6 +269,7 @@ void QAbstractScrollAreaPrivate::replaceScrollBar(QScrollBar *scrollBar, scrollBar->setOrientation(oldBar->orientation()); scrollBar->setPageStep(oldBar->pageStep()); scrollBar->setSingleStep(oldBar->singleStep()); + scrollBar->d_func()->viewMayChangeSingleStep = oldBar->d_func()->viewMayChangeSingleStep; scrollBar->setSliderDown(oldBar->isSliderDown()); scrollBar->setSliderPosition(oldBar->sliderPosition()); scrollBar->setTracking(oldBar->hasTracking()); diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp index 8cd35495e9..3f6185b4e7 100644 --- a/src/widgets/widgets/qabstractslider.cpp +++ b/src/widgets/widgets/qabstractslider.cpp @@ -731,8 +731,16 @@ bool QAbstractSliderPrivate::scrollByDelta(Qt::Orientation orientation, Qt::Keyb stepsToScroll = int(offset_accumulated); #endif offset_accumulated -= int(offset_accumulated); - if (stepsToScroll == 0) + if (stepsToScroll == 0) { + // We moved less than a line, but might still have accumulated partial scroll, + // unless we already are at one of the ends. + if (offset_accumulated > 0.f && value < maximum) + return true; + if (offset_accumulated < 0.f && value > minimum) + return true; + offset_accumulated = 0; return false; + } } if (invertedControls) diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp index 66e4a89fe9..caeabb660b 100644 --- a/src/widgets/widgets/qcalendarwidget.cpp +++ b/src/widgets/widgets/qcalendarwidget.cpp @@ -554,7 +554,7 @@ void QCalendarDateValidator::setFormat(const QString &format) bool quoting = false; QString separator; while (pos < format.size()) { - QString mid = format.mid(pos); + const QStringRef mid = format.midRef(pos); int offset = 1; if (mid.startsWith(quote)) { diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp index d2d7af145c..5db1013fd2 100644 --- a/src/widgets/widgets/qlabel.cpp +++ b/src/widgets/widgets/qlabel.cpp @@ -1095,14 +1095,16 @@ void QLabel::paintEvent(QPaintEvent *) if (d->pixmap && !d->pixmap->isNull()) { QPixmap pix; if (d->scaledcontents) { - if (!d->scaledpixmap || d->scaledpixmap->size() != cr.size()) { + QSize scaledSize = cr.size() * devicePixelRatioF(); + if (!d->scaledpixmap || d->scaledpixmap->size() != scaledSize) { if (!d->cachedimage) d->cachedimage = new QImage(d->pixmap->toImage()); delete d->scaledpixmap; QImage scaledImage = - d->cachedimage->scaled(cr.size() * devicePixelRatioF(), + d->cachedimage->scaled(scaledSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); d->scaledpixmap = new QPixmap(QPixmap::fromImage(scaledImage)); + d->scaledpixmap->setDevicePixelRatio(devicePixelRatioF()); } pix = *d->scaledpixmap; } else diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp index 6ff40e9c50..3d8a854753 100644 --- a/src/widgets/widgets/qlineedit_p.cpp +++ b/src/widgets/widgets/qlineedit_p.cpp @@ -97,7 +97,7 @@ void QLineEditPrivate::_q_completionHighlighted(const QString &newText) } else { int c = control->cursor(); QString text = control->text(); - q->setText(text.left(c) + newText.mid(c)); + q->setText(text.leftRef(c) + newText.midRef(c)); control->moveCursor(control->end(), false); #ifndef Q_OS_ANDROID const bool mark = true; diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp index 664aec9a53..aef4634a9a 100644 --- a/src/widgets/widgets/qtoolbutton.cpp +++ b/src/widgets/widgets/qtoolbutton.cpp @@ -68,6 +68,7 @@ public: void init(); #ifndef QT_NO_MENU void _q_buttonPressed(); + void _q_buttonReleased(); void popupTimerDone(); void _q_updateButtonDown(); void _q_menuTriggered(QAction *); @@ -217,6 +218,7 @@ void QToolButtonPrivate::init() #ifndef QT_NO_MENU QObject::connect(q, SIGNAL(pressed()), q, SLOT(_q_buttonPressed())); + QObject::connect(q, SIGNAL(released()), q, SLOT(_q_buttonReleased())); #endif setLayoutItemMargins(QStyle::SE_ToolButtonLayoutItem); @@ -704,12 +706,17 @@ void QToolButtonPrivate::_q_buttonPressed() return; // no menu to show if (popupMode == QToolButton::MenuButtonPopup) return; - else if (delay > 0 && !popupTimer.isActive() && popupMode == QToolButton::DelayedPopup) + else if (delay > 0 && popupMode == QToolButton::DelayedPopup) popupTimer.start(delay, q); else if (delay == 0 || popupMode == QToolButton::InstantPopup) q->showMenu(); } +void QToolButtonPrivate::_q_buttonReleased() +{ + popupTimer.stop(); +} + void QToolButtonPrivate::popupTimerDone() { Q_Q(QToolButton); diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h index d9bfed4c47..7b6114b5c1 100644 --- a/src/widgets/widgets/qtoolbutton.h +++ b/src/widgets/widgets/qtoolbutton.h @@ -125,6 +125,7 @@ private: Q_DECLARE_PRIVATE(QToolButton) #ifndef QT_NO_MENU Q_PRIVATE_SLOT(d_func(), void _q_buttonPressed()) + Q_PRIVATE_SLOT(d_func(), void _q_buttonReleased()) Q_PRIVATE_SLOT(d_func(), void _q_updateButtonDown()) Q_PRIVATE_SLOT(d_func(), void _q_menuTriggered(QAction*)) #endif diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp index a77794df8a..af8e5a8b42 100644 --- a/src/widgets/widgets/qwidgetlinecontrol.cpp +++ b/src/widgets/widgets/qwidgetlinecontrol.cpp @@ -118,7 +118,7 @@ void QWidgetLineControl::updateDisplayText(bool forceUpdate) // characters) QChar* uc = str.data(); for (int i = 0; i < (int)str.length(); ++i) { - if ((uc[i] < 0x20 && uc[i] != 0x09) + if ((uc[i].unicode() < 0x20 && uc[i].unicode() != 0x09) || uc[i] == QChar::LineSeparator || uc[i] == QChar::ParagraphSeparator || uc[i] == QChar::ObjectReplacementCharacter) @@ -1180,14 +1180,14 @@ QString QWidgetLineControl::maskString(uint pos, const QString &str, bool clear) int n = findInMask(i, true, true, str[(int)strIndex]); if (n != -1) { if (str.length() != 1 || i == 0 || (i > 0 && (!m_maskData[i-1].separator || m_maskData[i-1].maskChar != str[(int)strIndex]))) { - s += fill.mid(i, n-i+1); + s += fill.midRef(i, n - i + 1); i = n + 1; // update i to find + 1 } } else { // search for valid m_blank if not n = findInMask(i, true, false, str[(int)strIndex]); if (n != -1) { - s += fill.mid(i, n-i); + s += fill.midRef(i, n - i); switch (m_maskData[n].caseMode) { case MaskInputData::Upper: s += str[(int)strIndex].toUpper(); diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp index dfb1f865dc..af6d879661 100644 --- a/src/widgets/widgets/qwidgettextcontrol.cpp +++ b/src/widgets/widgets/qwidgettextcontrol.cpp @@ -2123,7 +2123,7 @@ QVariant QWidgetTextControl::inputMethodQuery(Qt::InputMethodQuery property, QVa tmpCursor.movePosition(QTextCursor::NextBlock); --numBlocks; } - result += block.text().mid(0,localPos); + result += block.text().midRef(0, localPos); return QVariant(result); } default: |