forked from amazingfate/loongoffice
Regression from c04169c586ef1d55b1d0ac469bb4fbd4f50bd08a (tdf#125415 vcl menu floating window: avoid flicker, 2019-05-21) the problem was that the clip region was set on the buffer, not on the render context. This means the original clip was used to determine what gets copied from the buffer to the screen, so the scroller arrows were not rendered. Change-Id: Id173e6333721891798da58baf2092f4cd21a62ba Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93642 Reviewed-by: Miklos Vajna <vmiklos@collabora.com> Tested-by: Jenkins
46 lines
1.5 KiB
C++
46 lines
1.5 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#include "bufferdevice.hxx"
|
|
|
|
namespace vcl
|
|
{
|
|
BufferDevice::BufferDevice(const VclPtr<vcl::Window>& pWindow, vcl::RenderContext& rRenderContext)
|
|
: m_pBuffer(VclPtr<VirtualDevice>::Create(rRenderContext))
|
|
, m_pWindow(pWindow)
|
|
, m_rRenderContext(rRenderContext)
|
|
{
|
|
m_pBuffer->SetOutputSizePixel(pWindow->GetOutputSizePixel(), false);
|
|
m_pBuffer->SetTextColor(rRenderContext.GetTextColor());
|
|
m_pBuffer->DrawOutDev(Point(0, 0), pWindow->GetOutputSizePixel(), Point(0, 0),
|
|
pWindow->GetOutputSizePixel(), rRenderContext);
|
|
m_pBuffer->EnableRTL(rRenderContext.IsRTLEnabled());
|
|
}
|
|
|
|
void BufferDevice::Dispose()
|
|
{
|
|
if (m_bDisposed)
|
|
{
|
|
return;
|
|
}
|
|
|
|
m_rRenderContext.DrawOutDev(Point(0, 0), m_pWindow->GetOutputSizePixel(), Point(0, 0),
|
|
m_pWindow->GetOutputSizePixel(), *m_pBuffer);
|
|
m_bDisposed = true;
|
|
}
|
|
|
|
BufferDevice::~BufferDevice() { Dispose(); }
|
|
|
|
vcl::RenderContext* BufferDevice::operator->() { return m_pBuffer.get(); }
|
|
|
|
vcl::RenderContext& BufferDevice::operator*() { return *m_pBuffer; }
|
|
}
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|