m_childrenDisabled = NULL;
m_frozenness = 0;
- // wxWnd
- m_hMenu = 0;
-
m_hWnd = 0;
m_xThumbSize = 0;
// wxTopLevelWindow) should remove WS_CHILD in their MSWGetStyle()
WXDWORD style = WS_CHILD;
- if ( flags & wxCLIP_CHILDREN )
- style |= WS_CLIPCHILDREN;
+ // using this flag results in very significant reduction in flicker,
+ // especially with controls inside the static boxes (as the interior of the
+ // box is not redrawn twice)
+ style |= WS_CLIPCHILDREN;
+
+ // it doesn't seem useful to use WS_CLIPSIBLINGS here as we officially
+ // don't support overlapping windows and it only makes sense for them and,
+ // presumably, gives the system some extra work (to manage more clipping
+ // regions), so avoid it alltogether
- if ( flags & wxCLIP_SIBLINGS )
- style |= WS_CLIPSIBLINGS;
if ( flags & wxVSCROLL )
style |= WS_VSCROLL;
// changed by the time the OnInternalIdle function is called, so 'state'
// may be meaningless.
int state = 0;
- if ( wxIsShiftDown() )
+ if ( wxIsShiftDown() )
state |= MK_SHIFT;
if ( wxIsCtrlDown() )
state |= MK_CONTROL;
- if ( GetKeyState( VK_LBUTTON ) )
+
+ // Only the high-order bit should be tested
+ if ( GetKeyState( VK_LBUTTON ) & (1<<15) )
state |= MK_LBUTTON;
- if ( GetKeyState( VK_MBUTTON ) )
+ if ( GetKeyState( VK_MBUTTON ) & (1<<15) )
state |= MK_MBUTTON;
- if ( GetKeyState( VK_RBUTTON ) )
+ if ( GetKeyState( VK_RBUTTON ) & (1<<15) )
state |= MK_RBUTTON;
POINT pt;
width = 0;
if (height < 0)
height = 0;
- if ( !::MoveWindow(GetHwnd(), x, y, width, height, IsShown() /*Repaint?*/) )
+
+ if ( !::MoveWindow(GetHwnd(), x, y, width, height, TRUE) )
{
wxLogLastError(wxT("MoveWindow"));
}
(void)HandleDestroy();
break;
+ case WM_SIZE:
+ processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam);
+ break;
+
case WM_MOVE:
processed = HandleMove(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
break;
#if !defined(__WXWINCE__)
+ // TODO: move those in WM_WINDOWPOSCHANGING case above
case WM_MOVING:
{
LPRECT pRect = (LPRECT)lParam;
}
}
break;
-#endif
-
- case WM_SIZE:
- processed = HandleSize(LOWORD(lParam), HIWORD(lParam), wParam);
- break;
-#if !defined(__WXWINCE__)
case WM_SIZING:
{
LPRECT pRect = (LPRECT)lParam;
}
}
break;
-#endif
+#endif // !__WXWINCE__
#if !defined(__WXMICROWIN__) && !defined(__WXWINCE__)
case WM_ACTIVATEAPP:
wxColour wxWindowMSW::MSWGetBgColourForChild(wxWindow * WXUNUSED(child))
{
- return m_hasBgCol ? GetBackgroundColour() : wxNullColour;
+ return m_inheritBgCol ? GetBackgroundColour() : wxNullColour;
}
WXHBRUSH wxWindowMSW::MSWGetBgBrushForSelf(wxWindow *parent, WXHDC hDC)
{
- return parent->MSWGetBgBrushForChild(hDC, this);
+ return parent->MSWGetBgBrushForChild(hDC, (wxWindow *)this);
}
-WXHBRUSH wxWindow::MSWGetBgBrush(WXHDC hDC)
+WXHBRUSH wxWindowMSW::MSWGetBgBrush(WXHDC hDC)
{
- for ( wxWindow *win = this; win; win = win->GetParent() )
+ for ( wxWindow *win = (wxWindow *)this; win; win = win->GetParent() )
{
- // background is not inherited beyond the containing TLW
- if ( win->IsTopLevel() )
- break;
-
WXHBRUSH hBrush = MSWGetBgBrushForSelf(win, hDC);
if ( hBrush )
return hBrush;
+
+ // background is not inherited beyond the windows which have their own
+ // fixed background such as top level windows and notebooks
+ if ( win->ProvidesBackground() )
+ break;
}
return 0;
bool bVirtual;
//High order with GetAsyncKeyState only available on WIN32
-#ifdef __WIN32__
+#ifdef __WIN32__
//If the requested key is a LED key, return
//true if the led is pressed
if (key == WXK_NUMLOCK ||
key == WXK_SCROLL)
{
#endif
- //low order bit means LED is highlighted,
+ //low order bit means LED is highlighted,
//high order means key is down
//Here, for compat with other ports we want both
return GetKeyState( wxCharCodeWXToMSW(key, &bVirtual) ) != 0;
-#ifdef __WIN32__
+#ifdef __WIN32__
}
else
{