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>bb10
parent
e481ea595e
commit
05f5f194f5
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue