From 7f455eed3f38153db169697ca08250a396e3207c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Trond=20Kjern=C3=A5sen?= Date: Wed, 2 Sep 2009 12:06:03 +0200 Subject: Fixed a system clip issue in the GL 2 engine. QGraphicsView can set the system clip in order to handle clipping of QGraphicsView children, and we have to take that into account in the GL 2 engine, as we did in the GL 1 engine. Reviewed-by: Samuel --- src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp index 7271740..ad22366 100644 --- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp +++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp @@ -1662,10 +1662,16 @@ void QGL2PaintEngineExPrivate::systemStateChanged() { Q_Q(QGL2PaintEngineEx); - if (q->paintDevice()->devType() == QInternal::Widget) + if (systemClip.isEmpty()) { use_system_clip = false; - else - use_system_clip = !systemClip.isEmpty(); + } else { + if (q->paintDevice()->devType() == QInternal::Widget && currentClipWidget) { + QWidgetPrivate *widgetPrivate = qt_widget_private(currentClipWidget->window()); + use_system_clip = widgetPrivate->extra && widgetPrivate->extra->inRenderWithPainter; + } else { + use_system_clip = true; + } + } glDisable(GL_DEPTH_TEST); q->state()->depthTestEnabled = false; -- cgit v0.12