wxShowEffect effect,
unsigned timeout)
{
+ if ( effect == wxSHOW_EFFECT_NONE )
+ return Show(show);
+
if ( !wxWindowBase::Show(show) )
return false;
// trace all messages: useful for the debugging but noticeably slows down
// the code so don't do it by default
#if wxDEBUG_LEVEL >= 2
- wxLogTrace(wxTraceMessages,
+ wxLogTrace("winmsg",
wxT("Processing %s(hWnd=%p, wParam=%08lx, lParam=%08lx)"),
wxGetMessageName(message), hWnd, (long)wParam, lParam);
#endif // wxDEBUG_LEVEL >= 2
// now alter the client size making room for drawing a
// themed border
RECT *rect;
+ NCCALCSIZE_PARAMS *csparam = NULL;
if ( wParam )
{
- NCCALCSIZE_PARAMS *csparam = (NCCALCSIZE_PARAMS *)lParam;
+ csparam = (NCCALCSIZE_PARAMS *)lParam;
rect = &csparam->rgrc[0];
}
else
&rcClient) == S_OK )
{
InflateRect(&rcClient, -1, -1);
- *rect = rcClient;
- rc.result = WVR_REDRAW;
+ if (wParam)
+ csparam->rgrc[0] = rcClient;
+ else
+ *((RECT*)lParam) = rcClient;
+
+ // WVR_REDRAW triggers a bug whereby child windows are moved up and left,
+ // so don't use.
+ // rc.result = WVR_REDRAW;
}
}
}
if ( !processed )
{
#if wxDEBUG_LEVEL >= 2
- wxLogTrace(wxTraceMessages, wxT("Forwarding %s to DefWindowProc."),
+ wxLogTrace("winmsg", wxT("Forwarding %s to DefWindowProc."),
wxGetMessageName(message));
#endif // wxDEBUG_LEVEL >= 2
rc.result = MSWDefWindowProc(message, wParam, lParam);
bool wxWindowMSW::HandleEraseBkgnd(WXHDC hdc)
{
- // standard non top level controls (i.e. except the dialogs) always erase
- // their background themselves in HandleCtlColor() or have some control-
- // specific ways to set the colours (common controls)
- if ( IsOfStandardClass() && !IsTopLevel() )
- return false;
-
switch ( GetBackgroundStyle() )
{
case wxBG_STYLE_ERASE:
+ case wxBG_STYLE_COLOUR:
// we need to generate an erase background event
{
wxDCTemp dc(hdc, GetClientSize());
if ( rc )
{
- // background erase by the user-defined handler
+ // background erased by the user-defined handler
return true;
}
}
break;
case wxBG_STYLE_PAINT:
+ case wxBG_STYLE_TRANSPARENT:
// no need to do anything here at all, background will be entirely
// redrawn in WM_PAINT handler
break;