summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2017-02-24 00:48:33 +0100
committerMarc Mutz <marc.mutz@kdab.com>2017-02-24 08:03:12 +0000
commit46d4dc8afb4c38165b3b050e44170d9f3b03a0f5 (patch)
treefddf1b8e229b10e6939163bee25c4b38bf1bfa7f /src/widgets
parent1d0ee8954825a38b789351558a04cbde04fa0490 (diff)
QStyleSheetStyle: optimize away triple key lookup
Instead of contains()/value()/remove(), all of which perform a new lookup, and a new application of qHash(), get an iterator using find(), deref it, then pass it to erase(). Also add some optimistic std::move(). Change-Id: I27a623dcd974de9c67d11d030e9b98d7598efc93 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index 9be19b2679..65894a6dde 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -2607,9 +2607,10 @@ void QStyleSheetStyle::unsetPalette(QWidget *w)
const bool useStyleSheetPropagationInWidgetStyles =
QCoreApplication::testAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles);
- if (styleSheetCaches->customPaletteWidgets.contains(w)) {
- QPair<QPalette, uint> p = styleSheetCaches->customPaletteWidgets.value(w);
- styleSheetCaches->customPaletteWidgets.remove(w);
+ const auto it = styleSheetCaches->customPaletteWidgets.find(w);
+ if (it != styleSheetCaches->customPaletteWidgets.end()) {
+ QPair<QPalette, uint> p = std::move(*it);
+ styleSheetCaches->customPaletteWidgets.erase(it);
QPalette original = p.first;
@@ -2649,9 +2650,10 @@ void QStyleSheetStyle::unsetPalette(QWidget *w)
void QStyleSheetStyle::unsetStyleSheetFont(QWidget *w) const
{
- if (styleSheetCaches->customFontWidgets.contains(w)) {
- QPair<QFont, uint> f = styleSheetCaches->customFontWidgets.value(w);
- styleSheetCaches->customFontWidgets.remove(w);
+ const auto it = styleSheetCaches->customFontWidgets.find(w);
+ if (it != styleSheetCaches->customFontWidgets.end()) {
+ QPair<QFont, uint> f = std::move(*it);
+ styleSheetCaches->customFontWidgets.erase(it);
QFont original = f.first;
original.resolve(original.resolve() & f.second);