#endif
}
+bool wxWindowBase::IsBeingDeleted() const
+{
+ return m_isBeingDeleted ||
+ (!IsTopLevel() && m_parent && m_parent->IsBeingDeleted());
+}
+
void wxWindowBase::SendDestroyEvent()
{
wxWindowDestroyEvent event;
// helper of GetWindowBorderSize(): as many ports don't implement support for
// wxSYS_BORDER/EDGE_X/Y metrics in their wxSystemSettings, use hard coded
// fallbacks in this case
-static int wxGetMetricOrDefault(wxSystemMetric what)
+static int wxGetMetricOrDefault(wxSystemMetric what, const wxWindowBase* win)
{
- int rc = wxSystemSettings::GetMetric(what);
+ int rc = wxSystemSettings::GetMetric(
+ what, static_cast<wxWindow*>(const_cast<wxWindowBase*>(win)));
if ( rc == -1 )
{
switch ( what )
case wxBORDER_SIMPLE:
case wxBORDER_STATIC:
- size.x = wxGetMetricOrDefault(wxSYS_BORDER_X);
- size.y = wxGetMetricOrDefault(wxSYS_BORDER_Y);
+ size.x = wxGetMetricOrDefault(wxSYS_BORDER_X, this);
+ size.y = wxGetMetricOrDefault(wxSYS_BORDER_Y, this);
break;
case wxBORDER_SUNKEN:
case wxBORDER_RAISED:
- size.x = wxMax(wxGetMetricOrDefault(wxSYS_EDGE_X),
- wxGetMetricOrDefault(wxSYS_BORDER_X));
- size.y = wxMax(wxGetMetricOrDefault(wxSYS_EDGE_Y),
- wxGetMetricOrDefault(wxSYS_BORDER_Y));
+ size.x = wxMax(wxGetMetricOrDefault(wxSYS_EDGE_X, this),
+ wxGetMetricOrDefault(wxSYS_BORDER_X, this));
+ size.y = wxMax(wxGetMetricOrDefault(wxSYS_EDGE_Y, this),
+ wxGetMetricOrDefault(wxSYS_BORDER_Y, this));
break;
case wxBORDER_DOUBLE:
- size.x = wxGetMetricOrDefault(wxSYS_EDGE_X) +
- wxGetMetricOrDefault(wxSYS_BORDER_X);
- size.y = wxGetMetricOrDefault(wxSYS_EDGE_Y) +
- wxGetMetricOrDefault(wxSYS_BORDER_Y);
+ size.x = wxGetMetricOrDefault(wxSYS_EDGE_X, this) +
+ wxGetMetricOrDefault(wxSYS_BORDER_X, this);
+ size.y = wxGetMetricOrDefault(wxSYS_EDGE_Y, this) +
+ wxGetMetricOrDefault(wxSYS_BORDER_Y, this);
break;
default:
void wxWindowBase::CaptureMouse()
{
- wxLogTrace(_T("mousecapture"), _T("CaptureMouse(%p)"), wx_static_cast(void*, this));
+ wxLogTrace(_T("mousecapture"), _T("CaptureMouse(%p)"), static_cast<void*>(this));
wxASSERT_MSG( !ms_winCaptureChanging, _T("recursive CaptureMouse call?") );
void wxWindowBase::ReleaseMouse()
{
- wxLogTrace(_T("mousecapture"), _T("ReleaseMouse(%p)"), wx_static_cast(void*, this));
+ wxLogTrace(_T("mousecapture"), _T("ReleaseMouse(%p)"), static_cast<void*>(this));
wxASSERT_MSG( !ms_winCaptureChanging, _T("recursive ReleaseMouse call?") );
- wxASSERT_MSG( GetCapture() == this, wxT("attempt to release mouse, but this window hasn't captured it") );
+ wxASSERT_MSG( GetCapture() == this,
+ "attempt to release mouse, but this window hasn't captured it" );
+ wxASSERT_MSG( ms_winCaptureCurrent == this,
+ "attempt to release mouse, but this window hasn't captured it" );
ms_winCaptureChanging = true;
wxLogTrace(_T("mousecapture"),
(const wxChar *) _T("After ReleaseMouse() mouse is captured by %p"),
- wx_static_cast(void*, GetCapture()));
+ static_cast<void*>(GetCapture()));
}
static void DoNotifyWindowAboutCaptureLost(wxWindow *win)
// is receiving the event
if ( event.GetEventObject() == this )
{
- wxValidator *validator = GetValidator();
- if ( validator && validator->ProcessEvent(event) )
+ wxValidator * const validator = GetValidator();
+ if ( validator && validator->ProcessEventHere(event) )
{
return true;
}