diff --git a/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp b/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp index 1a65de43cd..905e137840 100644 --- a/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp +++ b/modules/juce_gui_extra/native/juce_win32_HWNDComponent.cpp @@ -46,16 +46,20 @@ public: DestroyWindow (hwnd); } - void componentMovedOrResized (bool, bool) override + void componentMovedOrResized (bool wasMoved, bool wasResized) override { if (auto* peer = owner.getTopLevelComponent()->getPeer()) { - auto area = (peer->getAreaCoveredBy (owner).toFloat() * peer->getPlatformScaleFactor()).toNearestInt(); + auto area = (peer->getAreaCoveredBy (owner).toFloat() * peer->getPlatformScaleFactor()).getSmallestIntegerContainer(); setThreadDPIAwarenessForWindow (hwnd); - SetWindowPos (hwnd, nullptr, area.getX(), area.getY(), area.getWidth(), area.getHeight(), - SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOOWNERZORDER); + UINT flagsToSend = SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOOWNERZORDER; + + if (! wasMoved) flagsToSend |= SWP_NOMOVE; + if (! wasResized) flagsToSend |= SWP_NOSIZE; + + SetWindowPos (hwnd, nullptr, area.getX(), area.getY(), area.getWidth(), area.getHeight(), flagsToSend); } }