// static data
// ----------------------------------------------------------------------------
+#if defined(__WXPM__)
+int wxWindowBase::ms_lastControlId = 2000;
+#else
int wxWindowBase::ms_lastControlId = -200;
+#endif
IMPLEMENT_ABSTRACT_CLASS(wxWindowBase, wxEvtHandler)
void wxWindowBase::PushEventHandler(wxEvtHandler *handler)
{
- handler->SetNextHandler(GetEventHandler());
+ wxEvtHandler *handlerOld = GetEventHandler();
+
+ handler->SetNextHandler(handlerOld);
+
+ if ( handlerOld )
+ GetEventHandler()->SetPreviousHandler(handler);
+
SetEventHandler(handler);
}
{
wxEvtHandler *handlerB = handlerA->GetNextHandler();
handlerA->SetNextHandler((wxEvtHandler *)NULL);
+
+ if ( handlerB )
+ handlerB->SetPreviousHandler((wxEvtHandler *)NULL);
SetEventHandler(handlerB);
+
if ( deleteHandler )
{
delete handlerA;
SetEventHandler(handlerNext);
}
+ if ( handlerNext )
+ {
+ handlerNext->SetPreviousHandler ( handlerPrev );
+ }
handler->SetNextHandler(NULL);
return TRUE;
if ( winOld )
{
((wxWindowBase*) winOld)->DoReleaseMouse();
-
+
// save it on stack
wxWindowNext *item = new wxWindowNext;
item->win = winOld;
if ( ms_winCaptureNext )
{
((wxWindowBase*)ms_winCaptureNext->win)->DoCaptureMouse();
-
+
wxWindowNext *item = ms_winCaptureNext;
ms_winCaptureNext = item->next;
delete item;