diff options
author | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-07-14 17:22:23 +0200 |
---|---|---|
committer | Tor Arne Vestbø <tor.arne.vestbo@qt.io> | 2017-07-14 20:16:42 +0000 |
commit | 8fad51b7bc1a92916fab7639ca835acce1da2922 (patch) | |
tree | 3405b09d2e888a810a483b020ea9219329c0bd5e /src/plugins/styles/mac | |
parent | 97d471c99ff43443af17c82638e7b350fb198f52 (diff) |
macOS: Fix exception when drawing scrollbars with zero-range
Terminating app due to uncaught exception 'CALayerInvalidGeometry',
reason: 'CALayer position contains NaN: [nan nan]'
0 CoreFoundation __exceptionPreprocess
1 libobjc.A.dylib objc_exception_throw
2 CoreFoundation +[NSException raise:format:]
3 QuartzCore _ZN2CA5Layer12set_positionERKNS_4Vec2IdEEb
4 QuartzCore -[CALayer setPosition:]
5 QuartzCore -[CALayer setFrame:]
6 AppKit -[NSScrollerImp _updateLayerGeometry]
7 AppKit -[NSScroller setFloatValue:knobProportion:]
8 libqmacstyle setupScroller(NSScroller*, QStyleOptionSlider const*)
9 libqmacstyle QMacStyle::drawComplexControl(...)
Change-Id: I5afe7e7d3e94ff1d9ee34f5a9bc0d229d4f7c4c6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
Diffstat (limited to 'src/plugins/styles/mac')
-rw-r--r-- | src/plugins/styles/mac/qmacstyle_mac.mm | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/plugins/styles/mac/qmacstyle_mac.mm b/src/plugins/styles/mac/qmacstyle_mac.mm index 7e54025d6e..1386a98586 100644 --- a/src/plugins/styles/mac/qmacstyle_mac.mm +++ b/src/plugins/styles/mac/qmacstyle_mac.mm @@ -300,7 +300,8 @@ static bool setupScroller(NSScroller *scroller, const QStyleOptionSlider *sb) if (qFuzzyIsNull(length)) return false; const qreal proportion = sb->pageStep / length; - qreal value = qreal(sb->sliderValue - sb->minimum) / qreal(sb->maximum - sb->minimum); + const qreal range = qreal(sb->maximum - sb->minimum); + qreal value = range ? qreal(sb->sliderValue - sb->minimum) / range : 0; if (sb->orientation == Qt::Horizontal && sb->direction == Qt::RightToLeft) value = 1.0 - value; |