event.SetString(value);
event.SetEventObject(this);
- return ProcessCommand(event);
+ ProcessCommand(event);
}
break;
}
- // I don't think the following should be true. The return value is
- // whether the event has been handled, not the status of the handling.
- // So, we only return false if the switch fell through. This will
- // resolve the same event being sent multiple times by MS Windows.
- // mea 05-22-01
-
// there is no return value for the CBN_ notifications, so always return
// FALSE from here to pass the message to DefWindowProc()
return FALSE;
HANDLE hThread = m_internal->GetHandle();
- // Check if thread is really still running. There is a
- // race condition in WinThreadStart between the time the
- // m_internal->m_state is set to STATE_EXITED and the win32
- // thread actually exits. It can be flagged as STATE_EXITED
- // and then we don't wait for it to exit. This will cause
- // GetExitCodeThread to return STILL_ACTIVE.
- if ( !isRunning )
- {
- if ( !IsRunning() )
- {
- if ( ::GetExitCodeThread(hThread, (LPDWORD)&rc) )
- {
- if ((DWORD)rc == STILL_ACTIVE)
- isRunning = TRUE;
- }
- }
- else
- {
- isRunning = TRUE;
- }
- }
-
- // does it still run?
- if ( isRunning )
+ // does is still run?
+ if ( isRunning || IsRunning() )
{
if ( IsMain() )
{
break;
case WAIT_OBJECT_0 + 1:
+ // new message arrived, process it
+ if ( !wxTheApp->DoMessage() )
{
- MSG peekMsg;
- // Check if a new message has really arrived.
- // MsgWaitForMultipleObjects can indicate that a message
- // is ready for processing, but this message may be sucked
- // up by GetMessage and then GetMessage will hang and not
- // allow us to process the actual thread exit event.
- if (::PeekMessage(&peekMsg, (HWND) NULL, 0, 0, PM_NOREMOVE))
- {
- // new message arrived, process it
- if ( !wxTheApp->DoMessage() )
- {
- // WM_QUIT received: kill the thread
- Kill();
-
- return wxTHREAD_KILLED;
- }
- }
+ // WM_QUIT received: kill the thread
+ Kill();
+
+ return wxTHREAD_KILLED;
}
break;
// something like this where the derived class can do such things
// itself instead of wxToolTip "knowing" about them all
wxComboBox *combo = wxDynamicCast(control, wxComboBox);
- if ( combo && !(combo->GetWindowStyle() & wxCB_READONLY))
+ if ( combo )
{
- WXHWND hwndComboEdit = combo->GetEditHWND();
+ WXHWND hwndComboEdit = combo->GetWindowStyle() & wxCB_READONLY
+ ? combo->GetHWND()
+ : combo->GetEditHWND();
if ( hwndComboEdit )
{
Add(hwndComboEdit);