gs_focusedWindow = this;
- if ( IsShownOnScreen() )
+ if ( IsShownOnScreen() &&
+ (!oldFocusedWindow || oldFocusedWindow->GetTLW() != m_tlw) )
{
m_tlw->SetDfbFocus();
}
// FIXME_DFB: don't waste time rendering the area if it's fully covered
// by some children, go directly to rendering the children
+ // (unless some child has HasTransparentBackground()=true!)
// NB: unconditionally send wxEraseEvent, because our implementation of
// wxWindow::Refresh() ignores the eraseBack argument
for ( wxDfbOverlaysList::const_iterator i = m_overlays->begin();
i != m_overlays->end(); ++i )
{
- wxOverlayImpl *overlay = *i;
+ // FIXME: the cast is necessary for STL build where the iterator
+ // (incorrectly) returns void* and not wxOverlayImpl*
+ wxOverlayImpl *overlay = (wxOverlayImpl*) *i;
wxRect orectOrig(overlay->GetRect());
wxRect orect(orectOrig);