From 76e2a0f42efc11d08b289f862a6f3e3202e391dd Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 4 Sep 2018 18:10:05 +0100 Subject: [PATCH] On macOS, force a repaint of CustomPaintWidget upon UpdateRequest * For some reason the actual paint event never makes it through after converting to metal-compatible widgets, but painting in response to UpdateRequest (which should become a paint really) works about as well. --- qrenderdoc/Widgets/CustomPaintWidget.cpp | 9 +++++++++ qrenderdoc/Widgets/CustomPaintWidget.h | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/qrenderdoc/Widgets/CustomPaintWidget.cpp b/qrenderdoc/Widgets/CustomPaintWidget.cpp index e543bba9e..8a98935dd 100644 --- a/qrenderdoc/Widgets/CustomPaintWidget.cpp +++ b/qrenderdoc/Widgets/CustomPaintWidget.cpp @@ -115,3 +115,12 @@ void CustomPaintWidget::paintEvent(QPaintEvent *e) } } } + +#if defined(RENDERDOC_PLATFORM_APPLE) +bool CustomPaintWidget::event(QEvent *e) +{ + if(m_Ctx && e->type() == QEvent::UpdateRequest) + paintEvent(NULL); + return QWidget::event(e); +} +#endif \ No newline at end of file diff --git a/qrenderdoc/Widgets/CustomPaintWidget.h b/qrenderdoc/Widgets/CustomPaintWidget.h index 9bfcda35b..618e064ce 100644 --- a/qrenderdoc/Widgets/CustomPaintWidget.h +++ b/qrenderdoc/Widgets/CustomPaintWidget.h @@ -72,6 +72,10 @@ private: public slots: protected: +#if defined(RENDERDOC_PLATFORM_APPLE) + bool event(QEvent *event) override; +#endif + void paintEvent(QPaintEvent *e) override; QPaintEngine *paintEngine() const override { return m_Ctx ? NULL : QWidget::paintEngine(); } ICaptureContext *m_Ctx;