Don't allow DestroyClippingRegion() to remove paint update area clipping with GTK3

See #18560
This commit is contained in:
Paul Cornett
2019-10-31 23:30:18 -07:00
parent e376e74210
commit 4697ce23d9
3 changed files with 19 additions and 0 deletions

View File

@@ -337,6 +337,7 @@ wxClientDCImpl::wxClientDCImpl(wxClientDC* owner, wxWindow* window)
wxPaintDCImpl::wxPaintDCImpl(wxPaintDC* owner, wxWindow* window)
: wxGTKCairoDCImpl(owner, window)
, m_clip(window->m_nativeUpdateRegion)
{
cairo_t* cr = window->GTKPaintContext();
wxCHECK_RET(cr, "using wxPaintDC without being in a native paint event");
@@ -345,6 +346,18 @@ wxPaintDCImpl::wxPaintDCImpl(wxPaintDC* owner, wxWindow* window)
gc->EnableOffset(m_contentScaleFactor <= 1);
SetGraphicsContext(gc);
}
void wxPaintDCImpl::DestroyClippingRegion()
{
BaseType::DestroyClippingRegion();
// re-establish clip for paint update area
int x, y, w, h;
m_clip.GetBox(x, y, w, h);
cairo_t* cr = static_cast<cairo_t*>(GetCairoContext());
cairo_rectangle(cr, x, y, w, h);
cairo_clip(cr);
}
//-----------------------------------------------------------------------------
wxScreenDCImpl::wxScreenDCImpl(wxScreenDC* owner)