// static data
// ----------------------------------------------------------------------------
+#if defined(__WXPM__)
+int wxWindowBase::ms_lastControlId = 2000;
+#else
int wxWindowBase::ms_lastControlId = -200;
+#endif
IMPLEMENT_ABSTRACT_CLASS(wxWindowBase, wxEvtHandler)
}
}
+ // there is no wxTopLevelWindow under wxMotif yet
+#ifndef __WXMOTIF__
+ // we shouldn't center the dialog on the iconized window: under
+ // Windows, for example, this places it completely off the screen
+ if ( parent )
+ {
+ wxTopLevelWindow *winTop = wxDynamicCast(parent, wxTopLevelWindow);
+ if ( winTop && winTop->IsIconized() )
+ {
+ parent = NULL;
+ }
+ }
+#endif // __WXMOTIF__
+
// did we find the parent?
if ( !parent )
{
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;
void wxWindowBase::CaptureMouse()
{
- wxLogTrace(_T("mousecapture"), _T("CaptureMouse(0x%08x)"), this);
+ wxLogTrace(_T("mousecapture"), _T("CaptureMouse(%p)"), this);
wxWindow *winOld = GetCapture();
if ( winOld )
{
((wxWindowBase*) winOld)->DoReleaseMouse();
-
+
// save it on stack
wxWindowNext *item = new wxWindowNext;
item->win = winOld;
void wxWindowBase::ReleaseMouse()
{
- wxLogTrace(_T("mousecapture"), _T("ReleaseMouse(0x%08x)"), this);
+ wxLogTrace(_T("mousecapture"), _T("ReleaseMouse(%p)"), this);
- wxASSERT_MSG( GetCapture() == this, wxT("attempt to release mouse, but this window hasn't captured it") )
+ wxASSERT_MSG( GetCapture() == this, wxT("attempt to release mouse, but this window hasn't captured it") );
DoReleaseMouse();
if ( ms_winCaptureNext )
{
((wxWindowBase*)ms_winCaptureNext->win)->DoCaptureMouse();
-
+
wxWindowNext *item = ms_winCaptureNext;
ms_winCaptureNext = item->next;
delete item;
//else: stack is empty, no previous capture
wxLogTrace(_T("mousecapture"),
- _T("After ReleaseMouse() mouse is captured by 0x%08x"),
+ _T("After ReleaseMouse() mouse is captured by %p"),
GetCapture());
}
return win;
}
+// vi:sts=4:sw=4:et