diff options
-rw-r--r-- | Source/WebKit/qt/ChangeLog | 20 | ||||
-rw-r--r-- | Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp | 27 |
2 files changed, 31 insertions, 16 deletions
diff --git a/Source/WebKit/qt/ChangeLog b/Source/WebKit/qt/ChangeLog index 86bb26e3c..a6ddce81c 100644 --- a/Source/WebKit/qt/ChangeLog +++ b/Source/WebKit/qt/ChangeLog @@ -1,3 +1,23 @@ +2012-12-05 Zeno Albisser <zeno@webkit.org> + + [Qt][Mac] QWebView disappears when the system tries to hide the scrollbars. + https://bugs.webkit.org/show_bug.cgi?id=104116 + + This is a workaround for an issue in Qt that was + caused by Change-Id: I2000fa50d46b153e981ceafc12a53932a196382e + in qtbase. + Since we are drawing the scrollbars by ourselves, there is no + widget available that needs to be hidden by the style. + Therefore we have to disable transient scrollbar + animations on Mac. + + Patch by: J-P Nurmi <jpnurmi@digia.com> + + Reviewed by Simon Hausmann. + + * WidgetSupport/QStyleFacadeImp.cpp: + (WebKit::QStyleFacadeImp::paintScrollBar): + 2012-12-03 Jocelyn Turcotte <jocelyn.turcotte@digia.com> Document::initSecurityContext() fails to call securityOrigin().grantLoadLocalResources() diff --git a/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp b/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp index bd6be1e47..7e2b8cab7 100644 --- a/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp +++ b/Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp @@ -454,23 +454,18 @@ void QStyleFacadeImp::paintScrollBar(QPainter *painter, const QStyleFacadeOption MappedStyleOption<QStyleOptionSlider> opt(widget, proxyOption); -#ifdef Q_OS_MAC - // FIXME: We also need to check the widget style but today ScrollbarTheme is not aware of the page so we - // can't get the widget. - if (m_style->inherits("QMacStyle")) - m_style->drawComplexControl(QStyle::CC_ScrollBar, &opt, painter, widget); - else -#endif - { - // The QStyle expects the background to be already filled. - painter->fillRect(opt.rect, opt.palette.background()); - - const QPoint topLeft = opt.rect.topLeft(); - painter->translate(topLeft); - opt.rect.moveTo(QPoint(0, 0)); - style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, painter, widget); - opt.rect.moveTo(topLeft); + if (m_style->inherits("QMacStyle")) { + // FIXME: Disable transient scrollbar animations on OSX to avoid hiding the whole webview with the scrollbar fade out animation. + opt.styleObject = 0; } + + painter->fillRect(opt.rect, opt.palette.background()); + + const QPoint topLeft = opt.rect.topLeft(); + painter->translate(topLeft); + opt.rect.moveTo(QPoint(0, 0)); + style()->drawComplexControl(QStyle::CC_ScrollBar, &opt, painter, widget); + opt.rect.moveTo(topLeft); } QObject* QStyleFacadeImp::widgetForPainter(QPainter* painter) |