m_oldWndProc = 0;
m_useCtl3D = FALSE;
m_mouseInWindow = FALSE;
+ m_lastKeydownProcessed = FALSE;
// wxWnd
m_hMenu = 0;
if ( flags & wxCLIP_SIBLINGS )
style |= WS_CLIPSIBLINGS;
- if ( (flags & wxBORDER_MASK) != wxBORDER_NONE )
+ wxBorder border = (wxBorder)(flags & wxBORDER_MASK);
+ if ( border != wxBORDER_NONE && border != wxBORDER_DEFAULT )
style |= WS_BORDER;
// now deal with ext style if the caller wants it
case wxBORDER_NONE:
case wxBORDER_SIMPLE:
+ case wxBORDER_DEFAULT:
break;
case wxBORDER_STATIC:
*exstyle |= WS_EX_WINDOWEDGE;
break;
- case wxBORDER_DEFAULT:
case wxBORDER_SUNKEN:
*exstyle |= WS_EX_CLIENTEDGE;
break;
// Check if we need to send a LEAVE event
if ( m_mouseInWindow )
{
- if ( !IsMouseInWindow() && !HasCapture())
+ // note that we should generate the leave event whether the window has
+ // or doesn't have mouse capture
+ if ( !IsMouseInWindow() )
{
// Generate a LEAVE event
m_mouseInWindow = FALSE;
break;
}
- if ( i == 3 )
- {
- // how did it happen? maybe OnSize() handler does something really
- // strange in this class?
- wxFAIL_MSG( _T("logic error in DoSetClientSize") );
-
- break;
- }
-
int widthClient = width,
heightClient = height;
case WM_SYSKEYDOWN:
case WM_KEYDOWN:
+ m_lastKeydownProcessed = FALSE;
// If this has been processed by an event handler,
// return 0 now (we've handled it).
if ( HandleKeyDown((WORD) wParam, lParam) )
{
processed = TRUE;
-
+ m_lastKeydownProcessed = TRUE;
break;
}
if ( wParam == VK_SHIFT || wParam == VK_CONTROL )
{
processed = TRUE;
-
break;
}
}
break;
#endif // __WIN32__
-
- // unfortunately this doesn't really work as then window which
- // doesn't accept focus doesn't get any mouse events neither which
- // means it can't get any input at all
-#if 0 //def __WXUNIVERSAL__
- case WM_NCHITTEST:
- // we shouldn't allow the windows which don't want to get focus to
- // get it
- if ( !AcceptsFocus() )
- {
- rc.result = HTTRANSPARENT;
- processed = TRUE;
- }
- break;
-#endif // __WXUNIVERSAL__
}
if ( !processed )
// WM_KEYDOWN one
bool wxWindowMSW::HandleChar(WXWPARAM wParam, WXLPARAM lParam, bool isASCII)
{
+ if (m_lastKeydownProcessed) {
+ // The key was handled in the EVT_KEY_DOWN. Handling a key in an
+ // EVT_KEY_DOWN handler is meant, by design, to prevent EVT_CHARs
+ // from happening, so just bail out at this point.
+ m_lastKeydownProcessed = FALSE;
+ return TRUE;
+ }
+
bool ctrlDown = FALSE;
int id;
{
POINT pt;
GetCursorPos( & pt );
+
return wxPoint(pt.x, pt.y);
}