#if wxUSE_THREADS
/* To put pending event handlers */
-extern wxList wxPendingEvents;
-extern wxCriticalSection wxPendingEventsLocker;
+extern wxList *wxPendingEvents;
+extern wxCriticalSection *wxPendingEventsLocker;
#endif
/*
m_isCommandEvent = FALSE;
}
+wxObject *wxEvent::Clone() const
+{
+ wxEvent *event = (wxEvent *)wxObject::Clone();
+
+ event->m_eventType = m_eventType;
+ event->m_eventObject = m_eventObject;
+ event->m_eventHandle = m_eventHandle;
+ event->m_timeStamp = m_timeStamp;
+ event->m_id = m_id;
+ event->m_skipped = m_skipped;
+ event->m_callbackUserData = m_callbackUserData;
+ event->m_isCommandEvent = m_isCommandEvent;
+
+ return event;
+}
+
/*
* Command events
*
m_extraLong = 0;
m_commandInt = 0;
m_id = theId;
- m_commandString = (char *) NULL;
+ m_commandString = (wxChar *) NULL;
m_isCommandEvent = TRUE;
}
case 3:
return RightDClick();
default:
- wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonDClick");
+ wxFAIL_MSG(_T("invalid parameter in wxMouseEvent::ButtonDClick"));
}
return FALSE;
case 3:
return RightDown();
default:
- wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonDown");
+ wxFAIL_MSG(_T("invalid parameter in wxMouseEvent::ButtonDown"));
}
return FALSE;
case 3:
return RightUp();
default:
- wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonUp");
+ wxFAIL_MSG(_T("invalid parameter in wxMouseEvent::ButtonUp"));
}
return FALSE;
case 3:
return (RightDown() || RightUp() || RightDClick());
default:
- wxFAIL_MSG("invalid parameter in wxMouseEvent::Button");
+ wxFAIL_MSG(_T("invalid parameter in wxMouseEvent::Button"));
}
return FALSE;
case 3:
return RightIsDown();
default:
- wxFAIL_MSG("invalid parameter in wxMouseEvent::ButtonIsDown");
+ wxFAIL_MSG(_T("invalid parameter in wxMouseEvent::ButtonIsDown"));
}
return FALSE;
delete m_dynamicEvents;
};
+#if wxUSE_THREADS
if (m_pendingEvents)
delete m_pendingEvents;
-#if wxUSE_THREADS
delete m_eventsLocker;
#endif
}
if (m_pendingEvents == NULL)
m_pendingEvents = new wxList();
- event_main = (wxEvent *)event.GetClassInfo()->CreateObject();
- *event_main = event;
+ event_main = (wxEvent *)event.Clone();
m_pendingEvents->Append(event_main);
- wxPendingEventsLocker.Enter();
- wxPendingEvents.Append(this);
- wxPendingEventsLocker.Leave();
+ wxPendingEventsLocker->Enter();
+ wxPendingEvents->Append(this);
+ wxPendingEventsLocker->Leave();
return TRUE;
}
bool wxEvtHandler::SearchDynamicEventTable( wxEvent& event )
{
wxCHECK_MSG( m_dynamicEvents, FALSE,
- "caller should check that we have dynamic events" );
+ _T("caller should check that we have dynamic events") );
int commandId = event.GetId();
}
#endif // WXWIN_COMPATIBILITY
+// Find a window with the focus, that is also a descendant of the given window.
+// This is used to determine the window to initially send commands to.
+wxWindow* wxFindFocusDescendant(wxWindow* ancestor)
+{
+ // Process events starting with the window with the focus, if any.
+ wxWindow* focusWin = wxWindow::FindFocus();
+ wxWindow* win = focusWin;
+
+ // Check if this is a descendant of this frame.
+ // If not, win will be set to NULL.
+ while (win)
+ {
+ if (win == ancestor)
+ break;
+ else
+ win = win->GetParent();
+ }
+ if (win == (wxWindow*) NULL)
+ focusWin = (wxWindow*) NULL;
+
+ return focusWin;
+}
+