GetEnabled() == false)
flags |= wxCONTROL_DISABLED;
- // check boxes we draw must always have the same, standard size (if it's
- // bigger than the cell size the checkbox will be truncated because the
- // caller had set the clipping rectangle to prevent us from drawing outside
- // the cell)
- cell.SetSize(GetSize());
+ // Ensure that the check boxes always have at least the minimal required
+ // size, otherwise DrawCheckBox() doesn't really work well. If this size is
+ // greater than the cell size, the checkbox will be truncated but this is a
+ // lesser evil.
+ wxSize size = cell.GetSize();
+ size.IncTo(GetSize());
+ cell.SetSize(size);
wxRendererNative::Get().DrawCheckBox(
GetOwner()->GetOwner(),
// If this was the last child to be removed, it's possible the parent
// node became a leaf. Let's ask the model about it.
if ( parentNode->GetChildNodes().empty() )
- parentNode->SetHasChildren(GetModel()->IsContainer(parent));
+ {
+ bool isContainer = GetModel()->IsContainer(parent);
+ parentNode->SetHasChildren(isContainer);
+ if ( isContainer )
+ {
+ // If it's still a container, make sure we show "+" icon for it
+ // and not "-" one as there is nothing to collapse any more.
+ if ( parentNode->IsOpen() )
+ parentNode->ToggleOpen();
+ }
+ }
// Update selection by removing 'item' and its entire children tree from the selection.
if ( !m_selection.empty() )