summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2019-08-22 17:11:56 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2019-08-25 23:14:17 +0200
commitca3b48539d4f5d61818cea84c8aa513d3956b9f2 (patch)
tree9e55c97ad3ccdbad6ab8011cc72ae4ee946acc56 /src/widgets/kernel
parent655e8b6eab04f6db70ebaf2005ef297ea80784de (diff)
widgets: Share more code in appendDirtyOnScreenWidget
Change-Id: I0ed936c7d8b004d498a8956b1ba246ade41ce43d Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
Diffstat (limited to 'src/widgets/kernel')
-rw-r--r--src/widgets/kernel/qwidgetrepaintmanager.cpp27
-rw-r--r--src/widgets/kernel/qwidgetrepaintmanager_p.h2
2 files changed, 12 insertions, 17 deletions
diff --git a/src/widgets/kernel/qwidgetrepaintmanager.cpp b/src/widgets/kernel/qwidgetrepaintmanager.cpp
index c4e557fb2f..7445255ad4 100644
--- a/src/widgets/kernel/qwidgetrepaintmanager.cpp
+++ b/src/widgets/kernel/qwidgetrepaintmanager.cpp
@@ -922,9 +922,6 @@ void QWidgetRepaintManager::paintAndFlush()
if (hasPlatformWindow(w) || (npw && npw != tlw)) {
if (!hasPlatformWindow(w))
w = npw;
- QWidgetPrivate *wPrivate = w->d_func();
- if (!wPrivate->needsFlush)
- wPrivate->needsFlush = new QRegion;
appendDirtyOnScreenWidget(w);
}
}
@@ -1039,29 +1036,27 @@ void QWidgetRepaintManager::markDirtyOnScreen(const QRegion &region, QWidget *wi
return;
}
- // Alien widgets with native parent != tlw.
- QWidgetPrivate *nativeParentPrivate = nativeParent->d_func();
- if (!nativeParentPrivate->needsFlush)
- nativeParentPrivate->needsFlush = new QRegion;
+ // Alien widgets with native parent != tlw
const QPoint nativeParentOffset = widget->mapTo(nativeParent, QPoint());
- *nativeParentPrivate->needsFlush += region.translated(nativeParentOffset);
- appendDirtyOnScreenWidget(nativeParent);
+ appendDirtyOnScreenWidget(nativeParent, region.translated(nativeParentOffset));
return;
}
- // Native child widgets.
- QWidgetPrivate *widgetPrivate = widget->d_func();
- if (!widgetPrivate->needsFlush)
- widgetPrivate->needsFlush = new QRegion;
- *widgetPrivate->needsFlush += region;
- appendDirtyOnScreenWidget(widget);
+ // Native child widgets
+ appendDirtyOnScreenWidget(widget, region);
}
-void QWidgetRepaintManager::appendDirtyOnScreenWidget(QWidget *widget)
+void QWidgetRepaintManager::appendDirtyOnScreenWidget(QWidget *widget, const QRegion &region)
{
if (!widget)
return;
+ auto *widgetPrivate = qt_widget_private(widget);
+ if (!widgetPrivate->needsFlush)
+ widgetPrivate->needsFlush = new QRegion;
+
+ *widgetPrivate->needsFlush += region;
+
if (!dirtyOnScreenWidgets.contains(widget))
dirtyOnScreenWidgets.append(widget);
}
diff --git a/src/widgets/kernel/qwidgetrepaintmanager_p.h b/src/widgets/kernel/qwidgetrepaintmanager_p.h
index 470d63f99e..7d58adec99 100644
--- a/src/widgets/kernel/qwidgetrepaintmanager_p.h
+++ b/src/widgets/kernel/qwidgetrepaintmanager_p.h
@@ -113,7 +113,7 @@ private:
bool syncAllowed();
void paintAndFlush();
- void appendDirtyOnScreenWidget(QWidget *widget);
+ void appendDirtyOnScreenWidget(QWidget *widget, const QRegion &region = QRegion());
void flush(QWidget *widget = nullptr);
void flush(QWidget *widget, const QRegion &region, QPlatformTextureList *widgetTextures);