#ifndef WX_PRECOMP
#include "wx/window.h"
+ #include "wx/nonownedwnd.h"
#endif
#include "wx/dfb/private.h"
// coordinates; this will remove parts of 'r' that are outside of the
// parent's area:
wxRect rp(GetUncoveredWindowArea(parent));
+
+ // normal windows cannot extend out of its parent's client area:
+ if ( !win->CanBeOutsideClientArea() )
+ rp.Intersect(parent->GetClientRect());
+
rp.Offset(-win->GetPosition());
rp.Offset(-parent->GetClientAreaOrigin());
r.Intersect(rp);
wxLogTrace(TRACE_PAINT, _T("%p ('%s'): creating dummy DC surface"),
win, win->GetName().c_str());
wxSize size(rect ? rect->GetSize() : win->GetSize());
+
+ // we can't create a surface of 0 size but the size of the window may be 0,
+ // so ensure that we have at least a single pixel to draw on
+ size.IncTo(wxSize(1, 1));
+
return win->GetDfbSurface()->CreateCompatible
(
size,