Create generic wxCaret backing bitmap with correct scale

Fixes degraded appearance of scaled window contents under caret
This commit is contained in:
Paul Cornett
2022-03-30 09:04:19 -07:00
parent e8872b335c
commit 228bbbf93a

View File

@@ -99,8 +99,6 @@ void wxCaret::InitGeneric()
m_blinkedOut = true; m_blinkedOut = true;
m_xOld = m_xOld =
m_yOld = -1; m_yOld = -1;
if (!m_overlay.IsNative() && m_width && m_height)
m_bmpUnderCaret.Create(m_width, m_height);
} }
wxCaret::~wxCaret() wxCaret::~wxCaret()
@@ -176,8 +174,6 @@ void wxCaret::DoSize()
{ {
// Change bitmap size // Change bitmap size
m_bmpUnderCaret.UnRef(); m_bmpUnderCaret.UnRef();
if (m_width && m_height)
m_bmpUnderCaret.Create(m_width, m_height);
} }
if (countVisible > 0) if (countVisible > 0)
@@ -254,6 +250,8 @@ void wxCaret::Refresh()
{ {
if ( m_xOld == -1 && m_yOld == -1 ) if ( m_xOld == -1 && m_yOld == -1 )
{ {
if (!m_bmpUnderCaret.IsOk())
m_bmpUnderCaret.Create(m_width, m_height, dcWin);
wxMemoryDC dcMem(m_bmpUnderCaret); wxMemoryDC dcMem(m_bmpUnderCaret);
// save the part we're going to overdraw // save the part we're going to overdraw
dcMem.Blit(0, 0, m_width, m_height, dcMem.Blit(0, 0, m_width, m_height,