diff --git a/modules/juce_gui_basics/native/juce_Windowing_windows.cpp b/modules/juce_gui_basics/native/juce_Windowing_windows.cpp index fb8134f45a..366c2e77d6 100644 --- a/modules/juce_gui_basics/native/juce_Windowing_windows.cpp +++ b/modules/juce_gui_basics/native/juce_Windowing_windows.cpp @@ -2096,6 +2096,7 @@ public: } bool hasTitleBar() const { return (styleFlags & windowHasTitleBar) != 0; } + bool isSizing() const { return sizing; } private: HWND hwnd, parentToAddTo; @@ -5077,14 +5078,22 @@ public: updateRegion.findRECTAndValidate (peer.getHWND()); - for (const auto& rect : updateRegion.getRects()) - direct2DContext->addDeferredRepaint (D2DUtilities::toRectangle (rect)); + if (peer.isSizing()) + { + for (const auto& rect : updateRegion.getRects()) + deferredRepaints.add (D2DUtilities::toRectangle (rect)); + } + else + { + for (const auto& rect : updateRegion.getRects()) + direct2DContext->addDeferredRepaint (D2DUtilities::toRectangle (rect)); - #if JUCE_DIRECT2D_METRICS - lastPaintStartTicks = paintStartTicks; - #endif + #if JUCE_DIRECT2D_METRICS + lastPaintStartTicks = paintStartTicks; + #endif - handleDirect2DPaint(); + handleDirect2DPaint(); + } } void repaint (const Rectangle& area) override @@ -5101,10 +5110,20 @@ public: void onVBlank() override { - for (auto deferredRect : deferredRepaints) + if (peer.isSizing()) { - auto r = D2DUtilities::toRECT (deferredRect); - InvalidateRect (peer.getHWND(), &r, FALSE); + for (const auto& rect : deferredRepaints) + direct2DContext->addDeferredRepaint (rect); + + handleDirect2DPaint(); + } + else + { + for (auto deferredRect : deferredRepaints) + { + auto r = D2DUtilities::toRECT (deferredRect); + InvalidateRect (peer.getHWND(), &r, FALSE); + } } deferredRepaints.clear();