summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/WebKit/qt/ChangeLog20
-rw-r--r--Source/WebKit/qt/WidgetSupport/QStyleFacadeImp.cpp27
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)