Fix higlighting properties in wxPropertyGrid without focus
When wxPropertyGrid lost the focus all selected properties (not only the first one) should be redrawn to present their non-focused state. Closes #19094.
This commit is contained in:
@@ -2129,8 +2129,6 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc,
|
|||||||
wxBrush capbgbrush(m_colCapBack,wxBRUSHSTYLE_SOLID);
|
wxBrush capbgbrush(m_colCapBack,wxBRUSHSTYLE_SOLID);
|
||||||
wxPen linepen(m_colLine,1,wxPENSTYLE_SOLID);
|
wxPen linepen(m_colLine,1,wxPENSTYLE_SOLID);
|
||||||
|
|
||||||
wxColour selBackCol = isPgEnabled ? m_colSelBack : m_colMargin;
|
|
||||||
|
|
||||||
// pen that has same colour as text
|
// pen that has same colour as text
|
||||||
wxPen outlinepen(m_colPropFore,1,wxPENSTYLE_SOLID);
|
wxPen outlinepen(m_colPropFore,1,wxPENSTYLE_SOLID);
|
||||||
|
|
||||||
@@ -2294,20 +2292,20 @@ int wxPropertyGrid::DoDrawItems( wxDC& dc,
|
|||||||
renderFlags |= wxPGCellRenderer::DontUseCellFgCol |
|
renderFlags |= wxPGCellRenderer::DontUseCellFgCol |
|
||||||
wxPGCellRenderer::DontUseCellBgCol;
|
wxPGCellRenderer::DontUseCellBgCol;
|
||||||
|
|
||||||
if ( reallyFocused && p == firstSelected )
|
if ( reallyFocused )
|
||||||
{
|
{
|
||||||
rowFgCol = m_colSelFore;
|
rowFgCol = (p == firstSelected) ? m_colSelFore : m_colPropFore;
|
||||||
rowBgCol = selBackCol;
|
rowBgCol = m_colSelBack;
|
||||||
}
|
}
|
||||||
else if ( isPgEnabled )
|
else if ( isPgEnabled )
|
||||||
{
|
{
|
||||||
rowFgCol = m_colPropFore;
|
rowFgCol = m_colPropFore;
|
||||||
rowBgCol = p == firstSelected ? m_colMargin : selBackCol;
|
rowBgCol = m_colMargin;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rowFgCol = m_colDisPropFore;
|
rowFgCol = m_colDisPropFore;
|
||||||
rowBgCol = selBackCol;
|
rowBgCol = m_colMargin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6040,9 +6038,14 @@ void wxPropertyGrid::HandleFocusChange( wxWindow* newFocused )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Redraw selected
|
// Redraw selected
|
||||||
wxPGProperty* selected = GetSelection();
|
if ( m_iFlags & wxPG_FL_INITIALIZED )
|
||||||
if ( selected && (m_iFlags & wxPG_FL_INITIALIZED) )
|
{
|
||||||
DrawItem( selected );
|
const wxArrayPGProperty& sel = GetSelectedProperties();
|
||||||
|
for ( size_t i = 0; i < sel.size(); i++ )
|
||||||
|
{
|
||||||
|
DrawItem(sel[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user