From c37c507e58da50f4f94db998c19e355cc84e53d8 Mon Sep 17 00:00:00 2001 From: Zeno Albisser Date: Wed, 5 Dec 2012 16:48:30 +0100 Subject: [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 Reviewed by Simon Hausmann. * WidgetSupport/QStyleFacadeImp.cpp: (WebKit::QStyleFacadeImp::paintScrollBar): Change-Id: Ia9ff6d6634aecfe574ba2842258fc003d4a5c665 Reviewed-by: Simon Hausmann --- Source/WebKit/qt/ChangeLog | 20 ++++++++++++++++ Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp | 27 +++++++++------------- 2 files changed, 31 insertions(+), 16 deletions(-) (limited to 'Source/WebKit/qt') 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 + + [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 + + Reviewed by Simon Hausmann. + + * WidgetSupport/QStyleFacadeImp.cpp: + (WebKit::QStyleFacadeImp::paintScrollBar): + 2012-12-03 Jocelyn Turcotte 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 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) -- cgit v1.2.1