diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2012-12-11 15:44:14 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-12-11 18:34:19 +0100 |
commit | 05f5f194f597723cfa67db04f31814cb5ccabd0c (patch) | |
tree | e78cfd02738a18c22764a3343f08d715d22ce536 /src/widgets | |
parent | e481ea595e97456aec35e6a62d3ada62cddd0c2b (diff) |
Mac: disable transient scrollbar animations for non-QScrollBars
Task-number: QTBUG-28389
Task-number: QTBUG-28380
Change-Id: I91edd9c8aba60118d722bbf9ad5b85f994398823
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@digia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/styles/qmacstyle_mac.mm | 6 | ||||
-rw-r--r-- | src/widgets/widgets/qabstractscrollarea.cpp | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qscrollbar.cpp | 10 |
3 files changed, 12 insertions, 8 deletions
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index 649e7f267d..b6adc38687 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -2706,6 +2706,10 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w ret = false; break; case SH_ScrollBar_Transient: + if (!qobject_cast<const QScrollBar*>(w)) { + ret = false; + break; + } ret = QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7; #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_7) @@ -4906,7 +4910,7 @@ void QMacStyle::drawComplexControl(ComplexControl cc, const QStyleOptionComplex } #if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - if (cc == CC_ScrollBar && proxy()->styleHint(SH_ScrollBar_Transient)) { + if (cc == CC_ScrollBar && proxy()->styleHint(SH_ScrollBar_Transient, 0, widget)) { bool wasActive = false; CGFloat opacity = 1.0; CGFloat expandScale = 1.0; diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp index 2a3bdb0a59..ae363fe71f 100644 --- a/src/widgets/widgets/qabstractscrollarea.cpp +++ b/src/widgets/widgets/qabstractscrollarea.cpp @@ -490,7 +490,7 @@ void QAbstractScrollAreaPrivate::layoutChildren() horizontalScrollBarRect.adjust(vsbExt, 0, 0, 0); #endif #ifdef Q_OS_MAC - if (!hasCornerWidget && QSysInfo::macVersion() >= QSysInfo::MV_10_8 && q->style()->styleHint(QStyle::SH_ScrollBar_Transient)) + if (!hasCornerWidget && QSysInfo::macVersion() >= QSysInfo::MV_10_8 && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, hbar)) horizontalScrollBarRect.adjust(0, 0, cornerOffset.x(), 0); #endif scrollBarContainers[Qt::Horizontal]->setGeometry(QStyle::visualRect(opt.direction, opt.rect, horizontalScrollBarRect)); @@ -500,7 +500,7 @@ void QAbstractScrollAreaPrivate::layoutChildren() if (needv) { QRect verticalScrollBarRect (QPoint(cornerPoint.x(), controlsRect.top() + hHeaderBottom), QPoint(controlsRect.right(), cornerPoint.y() - 1)); #ifdef Q_OS_MAC - if (!hasCornerWidget && QSysInfo::macVersion() >= QSysInfo::MV_10_8 && q->style()->styleHint(QStyle::SH_ScrollBar_Transient)) + if (!hasCornerWidget && QSysInfo::macVersion() >= QSysInfo::MV_10_8 && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, vbar)) verticalScrollBarRect.adjust(0, 0, 0, cornerOffset.y()); #endif scrollBarContainers[Qt::Vertical]->setGeometry(QStyle::visualRect(opt.direction, opt.rect, verticalScrollBarRect)); diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp index d59d7cdd55..491f54ebd9 100644 --- a/src/widgets/widgets/qscrollbar.cpp +++ b/src/widgets/widgets/qscrollbar.cpp @@ -235,7 +235,7 @@ void QScrollBarPrivate::setTransient(bool value) if (transient != value) { transient = value; if (q->isVisible()) { - if (q->style()->styleHint(QStyle::SH_ScrollBar_Transient)) + if (q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q)) q->update(); } else if (!transient) { q->show(); @@ -246,7 +246,7 @@ void QScrollBarPrivate::setTransient(bool value) void QScrollBarPrivate::flash() { Q_Q(QScrollBar); - if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient)) { + if (!flashed && q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q)) { flashed = true; q->show(); } @@ -384,7 +384,7 @@ void QScrollBarPrivate::init() invertedControls = true; pressedControl = hoverControl = QStyle::SC_None; pointerOutsidePressedControl = false; - transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient); + transient = q->style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, q); flashed = false; q->setFocusPolicy(Qt::NoFocus); QSizePolicy sp(QSizePolicy::Minimum, QSizePolicy::Fixed, QSizePolicy::Slider); @@ -484,7 +484,7 @@ bool QScrollBar::event(QEvent *event) d_func()->updateHoverControl(he->pos()); break; case QEvent::StyleChange: - d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient)); + d_func()->setTransient(style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)); break; default: break; @@ -531,7 +531,7 @@ void QScrollBar::paintEvent(QPaintEvent *) opt.activeSubControls = (QStyle::SubControl)d->hoverControl; } style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, &p, this); - if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient)) { + if (d->flashed && style()->styleHint(QStyle::SH_ScrollBar_Transient, 0, this)) { d->flashed = false; update(); } |