diff options
Diffstat (limited to 'vcl/source/app/salvtables.cxx')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index e9e675e1645b..c1ac2432ff7c 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1188,7 +1188,7 @@ void DoRecursivePaint(vcl::Window* pWindow, const Point& rPos, OutputDevice& rOu bool bRVisible = pImpl->mbReallyVisible; pImpl->mbReallyVisible = pWindow->IsVisible(); - pWindow->Paint(*xOutput, tools::Rectangle(Point(), aSize)); + pWindow->Paint(*xOutput, tools::Rectangle(Point(), pWindow->PixelToLogic(aSize))); pImpl->mbReallyVisible = bRVisible; @@ -1201,19 +1201,22 @@ void DoRecursivePaint(vcl::Window* pWindow, const Point& rPos, OutputDevice& rOu { if (!pChild->IsVisible()) continue; - DoRecursivePaint(pChild, rPos + pChild->GetPosPixel(), rOutput); + DoRecursivePaint(pChild, rPos + rOutput.PixelToLogic(pChild->GetPosPixel()), rOutput); } } } -void SalInstanceWidget::draw(OutputDevice& rOutput, const tools::Rectangle& rRect) +void SalInstanceWidget::draw(OutputDevice& rOutput, const Point& rPos, const Size& rSizePixel) { Size aOrigSize(m_xWidget->GetSizePixel()); + bool bChangeSize = aOrigSize != rSizePixel; + if (bChangeSize) + m_xWidget->SetSizePixel(rSizePixel); - m_xWidget->SetSizePixel(rRect.GetSize()); - DoRecursivePaint(m_xWidget, rRect.TopLeft(), rOutput); + DoRecursivePaint(m_xWidget, rPos, rOutput); - m_xWidget->SetSizePixel(aOrigSize); + if (bChangeSize) + m_xWidget->SetSizePixel(aOrigSize); } namespace |