// headers
// ----------------------------------------------------------------------------
+#ifdef __GNUG__
+ #pragma implementation "windowbase.h"
+#endif
+
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
// static data
// ----------------------------------------------------------------------------
-int wxWindowBase::ms_lastControlId = 0;
+int wxWindowBase::ms_lastControlId = -200;
IMPLEMENT_ABSTRACT_CLASS(wxWindowBase, wxEvtHandler)
void wxWindowBase::InitBase()
{
// no window yet, no parent nor children
- m_widget = (WXWidget)0;
m_parent = (wxWindow *)NULL;
m_windowId = -1;
m_children.DeleteContents( FALSE ); // don't auto delete node data
// common part of window creation process
bool wxWindowBase::CreateBase(wxWindowBase *parent,
wxWindowID id,
- const wxPoint& pos,
- const wxSize& size,
+ const wxPoint& WXUNUSED(pos),
+ const wxSize& WXUNUSED(size),
long style,
const wxString& name)
{
// we weren't a dialog class
wxTopLevelWindows.DeleteObject(this);
- DestroyChildren();
+ wxASSERT_MSG( GetChildren().GetCount() == 0, _T("children not destroyed") );
if ( m_windowValidator )
delete m_windowValidator;
bool wxWindowBase::DestroyChildren()
{
wxWindowList::Node *node;
- for ( node = m_children.GetFirst(); node; node = node->GetNext() )
+ for ( ;; )
{
+ // we iterate until the list becomes empty
+ node = GetChildren().GetFirst();
+ if ( !node )
+ break;
+
wxWindow *child = node->GetData();
- if ( child )
- {
- delete child;
- delete node;
- }
+
+ wxASSERT_MSG( child, _T("children list contains empty nodes") );
+
+ delete child;
+
+ wxASSERT_MSG( !GetChildren().Find(child),
+ _T("child didn't remove itself using RemoveChild()") );
}
return TRUE;
while ( node )
{
wxWindow *win = node->GetData();
+ if ( win->IsKindOf(CLASSINFO(wxFrame)) ||
+ win->IsKindOf(CLASSINFO(wxDialog)) )
+ {
+ // dialogs and frames line in different top level windows - don't
+ // deal with them here
+ continue;
+ }
+
int wx, wy, ww, wh;
win->GetPosition(&wx, &wy);
win->GetSize(&ww, &wh);
// dialog oriented functions
// ----------------------------------------------------------------------------
-void wxWindowBase::MakeModal(bool modal)
+void wxWindowBase::MakeModal(bool WXUNUSED(modal))
{
- wxFAIL_MSG("TODO");
+ wxFAIL_MSG(_T("TODO"));
}
bool wxWindowBase::Validate()
if ( event.GetSetChecked() )
((wxCheckBox *)this)->SetValue(event.GetChecked());
}
- // TODO No radio buttons in wxGTK yet
-#ifndef __WXGTK__
else if ( IsKindOf(CLASSINFO(wxRadioButton)) )
{
if ( event.GetSetChecked() )
((wxRadioButton *) this)->SetValue(event.GetChecked());
}
-#endif // !wxGTK
}
}
}