summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2017-04-19 13:45:18 +0200
committerAlexandru Croitor <alexandru.croitor@qt.io>2017-04-21 11:10:09 +0000
commitd08524fbfbb78eca09bbab58d5a9840387d2d0e7 (patch)
treec725315a27f2f77967f5f24eb9b507f3f1c06f9f
parentf162e81aef78e3f339cf95d12ebc15de0c41fc27 (diff)
Disable setting background color in QInputMethodEvent
IME managers may set background and foreground color of the composition string. Since there is no Chromium API for setting the foreground color, changing the background color to black may produce "black-on-black" text. Chromium locks the background color to transparent thus we do the same in this fix. Task-number: QTBUG-58362 Task-number: QTBUG-60031 Change-Id: I939c8aaaa847de191890d6924ba3c7652465f8a0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
-rw-r--r--src/core/render_widget_host_view_qt.cpp6
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp6
2 files changed, 7 insertions, 5 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp
index 96cddfb4b..332be89f8 100644
--- a/src/core/render_widget_host_view_qt.cpp
+++ b/src/core/render_widget_host_view_qt.cpp
@@ -1149,11 +1149,7 @@ void RenderWidgetHostViewQt::handleInputMethodEvent(QInputMethodEvent *ev)
if (format.underlineStyle() != QTextCharFormat::NoUnderline)
underlineColor = format.underlineColor();
- QColor backgroundColor(0, 0, 0, 0);
- if (format.background().style() != Qt::NoBrush)
- backgroundColor = format.background().color();
-
- underlines.push_back(blink::WebCompositionUnderline(start, end, toSk(underlineColor), /*thick*/ false, toSk(backgroundColor)));
+ underlines.push_back(blink::WebCompositionUnderline(start, end, toSk(underlineColor), /*thick*/ false, SK_ColorTRANSPARENT));
break;
}
case QInputMethodEvent::Cursor:
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 75795c170..78190622c 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -1012,8 +1012,14 @@ void tst_QWebEngineView::inputMethodsTextFormat()
QTextCharFormat format;
format.setUnderlineStyle(static_cast<QTextCharFormat::UnderlineStyle>(underlineStyle));
format.setUnderlineColor(underlineColor);
+
+ // Setting background color is disabled for Qt WebEngine because some IME manager
+ // sets background color to black and there is no API for setting the foreground color.
+ // This may result black text on black background. However, we still test it to ensure
+ // changing background color doesn't cause any crash.
if (backgroundColor.isValid())
format.setBackground(QBrush(backgroundColor));
+
attrs.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, start, length, format));
QInputMethodEvent im(string, attrs);