From e146b8c8bf449e2264ac3edc6a0228585c619dd1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Tue, 30 Mar 1999 09:43:29 +0000 Subject: [PATCH] wxTopLevelWindows is now a wxWindowList, better compatibility with the old wxList in list.h git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@2005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/gtk/window.h | 2 +- include/wx/gtk1/window.h | 2 +- include/wx/list.h | 41 +++++++------- include/wx/motif/window.h | 2 +- include/wx/msw/window.h | 2 +- src/common/list.cpp | 8 ++- src/common/utilscmn.cpp | 113 +++++++++++++++++++++----------------- src/gtk/app.cpp | 25 +++++---- src/gtk/data.cpp | 10 ++-- src/gtk/dialog.cpp | 8 +-- src/gtk/frame.cpp | 1 - src/gtk/window.cpp | 1 - src/gtk1/app.cpp | 25 +++++---- src/gtk1/data.cpp | 10 ++-- src/gtk1/dialog.cpp | 8 +-- src/gtk1/frame.cpp | 1 - src/gtk1/window.cpp | 1 - src/motif/app.cpp | 18 +++--- src/motif/data.cpp | 4 +- src/motif/utils.cpp | 3 +- src/msw/app.cpp | 12 ++-- src/msw/data.cpp | 96 ++++++++++++++++---------------- 22 files changed, 207 insertions(+), 186 deletions(-) diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h index b969665920..e63d825e61 100644 --- a/include/wx/gtk/window.h +++ b/include/wx/gtk/window.h @@ -30,7 +30,7 @@ //----------------------------------------------------------------------------- extern const char *wxFrameNameStr; -extern wxList wxTopLevelWindows; +extern wxWindowList wxTopLevelWindows; //----------------------------------------------------------------------------- // global function diff --git a/include/wx/gtk1/window.h b/include/wx/gtk1/window.h index b969665920..e63d825e61 100644 --- a/include/wx/gtk1/window.h +++ b/include/wx/gtk1/window.h @@ -30,7 +30,7 @@ //----------------------------------------------------------------------------- extern const char *wxFrameNameStr; -extern wxList wxTopLevelWindows; +extern wxWindowList wxTopLevelWindows; //----------------------------------------------------------------------------- // global function diff --git a/include/wx/list.h b/include/wx/list.h index b578982866..8bd77c2d2f 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -6,7 +6,7 @@ // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// /* @@ -197,17 +197,17 @@ public: size_t GetCount() const { return m_count; } // operations - + // delete all nodes void Clear(); - + // instruct it to destroy user data when deleting nodes void DeleteContents(bool destroy) { m_destroy = destroy; } // query if to delete bool GetDeleteContents() const { return m_destroy; } - + // get the keytype wxKeyType GetKeyType() const { return m_keyType; } @@ -216,6 +216,13 @@ public: void SetKeyType(wxKeyType keyType) { wxASSERT( m_count==0 ); m_keyType = keyType; } +#ifdef wxLIST_COMPATIBILITY + int Number() const { return GetCount(); } + wxNode *First() const { return (wxNode *)GetFirst(); } + wxNode *Last() const { return (wxNode *)GetLast(); } + wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } +#endif // wxLIST_COMPATIBILITY + protected: // all methods here are "overloaded" in derived classes to provide compile @@ -294,7 +301,7 @@ protected: void *FirstThat(wxListIterateFunction func); void ForEach(wxListIterateFunction func); void *LastThat(wxListIterateFunction func); - + private: // helpers // common part of all ctors @@ -343,7 +350,7 @@ private: nodetype *previous = (nodetype *)NULL, \ nodetype *next = (nodetype *)NULL, \ T *data = (T *)NULL, \ - const wxListKey& key = wxDefaultListKey) \ + const wxListKey& key = wxDefaultListKey) \ : wxNodeBase(list, previous, next, data, key) { } \ \ nodetype *GetNext() const \ @@ -359,7 +366,7 @@ private: virtual void DeleteData(); \ }; \ \ - class WXDLLEXPORT name : public wxListBase \ + class WXDLLEXPORT name : public wxListBase \ { \ public: \ typedef nodetype Node; \ @@ -417,7 +424,7 @@ private: protected: \ wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next, \ void *data, \ - const wxListKey& key = wxDefaultListKey) \ + const wxListKey& key = wxDefaultListKey) \ { \ return new nodetype(this, \ (nodetype *)prev, (nodetype *)next, \ @@ -433,11 +440,17 @@ private: // #include #define WX_DEFINE_LIST(name) "don't forget to include listimpl.cpp!" - // ============================================================================= // now we can define classes 100% compatible with the old ones // ============================================================================= +// ---------------------------------------------------------------------------- +// commonly used string classes +// ---------------------------------------------------------------------------- + +class wxWindow; +WX_DECLARE_LIST(wxWindow, wxWindowList); + #ifdef wxLIST_COMPATIBILITY // ----------------------------------------------------------------------------- @@ -454,10 +467,6 @@ public: // compatibility methods void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); } - int Number() const { return GetCount(); } - wxNode *First() const { return (wxNode *)GetFirst(); } - wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } wxNode *Member(wxObject *object) const { return (wxNode *)Find(object); } }; @@ -494,12 +503,6 @@ public: // alphabetic sort void Sort(); - // compatibility methods - int Number() const { return GetCount(); } - wxNode *First() const { return (wxNode *)GetFirst(); } - wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t index) const { return (wxNode *)Item(index); } - private: void DoCopy(const wxStringList&); // common part of copy ctor and operator= }; diff --git a/include/wx/motif/window.h b/include/wx/motif/window.h index c5bc74b719..b906891594 100644 --- a/include/wx/motif/window.h +++ b/include/wx/motif/window.h @@ -757,7 +757,7 @@ inline int wxWindow::GetReturnCode() { return m_returnCode; } // Get the active window. wxWindow* WXDLLEXPORT wxGetActiveWindow(); -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; +WXDLLEXPORT_DATA(extern wxWindowList) wxTopLevelWindows; // A little class to switch off size optimization while an instance of the object // exists diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index 9f69b205f0..f34772a067 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -874,7 +874,7 @@ inline bool wxWindow::IsBeingDeleted() { return m_isBeingDeleted; } // Window specific (so far) WXDLLEXPORT wxWindow* wxGetActiveWindow(); -WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows; +WXDLLEXPORT_DATA(extern wxWindowList) wxTopLevelWindows; WXDLLEXPORT int wxCharCodeMSWToWX(int keySym); WXDLLEXPORT int wxCharCodeWXToMSW(int id, bool *IsVirtual); diff --git a/src/common/list.cpp b/src/common/list.cpp index 85448991d2..8bc94a8c64 100644 --- a/src/common/list.cpp +++ b/src/common/list.cpp @@ -37,6 +37,13 @@ #include "wx/utils.h" // for copystring() (beurk...) #endif +// ----------------------------------------------------------------------------- +// implementation of standard lists +// ----------------------------------------------------------------------------- + +#include "wx/listimpl.cpp" +WX_DEFINE_LIST(wxWindowList); + // ============================================================================= // implementation // ============================================================================= @@ -634,4 +641,3 @@ void wxStringList::Sort() delete [] array; } - diff --git a/src/common/utilscmn.cpp b/src/common/utilscmn.cpp index 3520a5f0f5..52b8878187 100644 --- a/src/common/utilscmn.cpp +++ b/src/common/utilscmn.cpp @@ -73,6 +73,13 @@ extern char *wxBuffer; +// ---------------------------------------------------------------------------- +// private functions +// ---------------------------------------------------------------------------- + +static wxWindow *wxFindWindowByLabel1(const wxString& title, wxWindow * parent); +static wxWindow *wxFindWindowByName1 (const wxString& title, wxWindow * parent); + #ifdef __WXMAC__ int strcasecmp(const char *str_1, const char *str_2) { @@ -418,53 +425,54 @@ wxString wxStripMenuCodes(const wxString& str) * */ -static wxWindow *wxFindWindowByLabel1 (const wxString& title, wxWindow * parent); - wxWindow * wxFindWindowByLabel (const wxString& title, wxWindow * parent) { - if (parent) + if (parent) { - return wxFindWindowByLabel1 (title, parent); + return wxFindWindowByLabel1(title, parent); } - else + else { - for (wxNode * node = wxTopLevelWindows.First (); node; node = node->Next ()) + for ( wxWindowList::Node * node = wxTopLevelWindows.GetFirst(); + node; + node = node->GetNext() ) { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByLabel1 (title, win); - if (retwin) - return retwin; + wxWindow *win = node->GetData(); + wxWindow *retwin = wxFindWindowByLabel1 (title, win); + if (retwin) + return retwin; } // for() } - return (wxWindow *) NULL; + return (wxWindow *) NULL; } // Recursive static wxWindow * wxFindWindowByLabel1 (const wxString& title, wxWindow * parent) { - if (parent) + if (parent) { - if (parent->GetLabel() == title) - return parent; + if (parent->GetLabel() == title) + return parent; } - if (parent) + if (parent) { - for (wxNode * node = parent->GetChildren().First (); node; node = node->Next ()) + for ( wxNode * node = parent->GetChildren().GetFirst(); + node; + node = node->GetNext() ) { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByLabel1 (title, win); - if (retwin) - return retwin; - } // for() + wxWindow *win = (wxWindow *)node->GetData(); + wxWindow *retwin = wxFindWindowByLabel1 (title, win); + if (retwin) + return retwin; + } } - return (wxWindow *) NULL; // Not found - + return (wxWindow *) NULL; // Not found } /* @@ -473,28 +481,29 @@ wxFindWindowByLabel1 (const wxString& title, wxWindow * parent) * */ -static wxWindow *wxFindWindowByName1 (const wxString& title, wxWindow * parent); - wxWindow * wxFindWindowByName (const wxString& title, wxWindow * parent) { - if (parent) + if (parent) { - return wxFindWindowByName1 (title, parent); + return wxFindWindowByName1 (title, parent); } - else + else { - for (wxNode * node = wxTopLevelWindows.First (); node; node = node->Next ()) + for ( wxWindowList::Node * node = wxTopLevelWindows.GetFirst(); + node; + node = node->GetNext() ) { - wxWindow *win = (wxWindow *) node->Data (); - wxWindow *retwin = wxFindWindowByName1 (title, win); - if (retwin) - return retwin; - } // for() + wxWindow *win = node->GetData(); + wxWindow *retwin = wxFindWindowByName1 (title, win); + if (retwin) + return retwin; + } } - // Failed? Try by label instead. - return wxFindWindowByLabel(title, parent); + + // Failed? Try by label instead. + return wxFindWindowByLabel(title, parent); } // Recursive @@ -730,21 +739,23 @@ whereami(name) // Yield to other apps/messages and disable user input bool wxSafeYield(wxWindow *win) { - wxNode *node; - for ( node = wxTopLevelWindows.GetFirst(); - node; - node = node->GetNext() ) - ((wxWindow*)node->GetData())->Enable(FALSE); - - // always enable ourselves - if(win) win->Enable(true); - bool rc = wxYield(); - - for ( node = wxTopLevelWindows.GetFirst(); - node; - node = node->GetNext() ) - ((wxWindow*)node->GetData())->Enable(TRUE); - return rc; + wxWindowList::Node *node; + for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) + { + node->GetData()->Enable(FALSE); + } + + // always enable ourselves + if ( win ) + win->Enable(TRUE); + bool rc = wxYield(); + + for ( node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) + { + node->GetData()->Enable(TRUE); + } + + return rc; } /* diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 93459c373d..81123a87ca 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -140,11 +140,11 @@ bool wxYield() // it's necessary to call ProcessIdle() to update the frames sizes which // might have been changed (it also will update other things set from // OnUpdateUI() which is a nice (and desired) side effect) - for ( wxNode *node = wxTopLevelWindows.GetFirst(); + for ( wxWindowList::Node *node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) { - wxWindow *win = ((wxWindow*)node->GetData()); + wxWindow *win = node->GetData(); win->OnInternalIdle(); } @@ -312,14 +312,15 @@ bool wxApp::SendIdleEvents() { bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); + wxWindowList::Node* node = wxTopLevelWindows.GetFirst(); while (node) { - wxWindow* win = (wxWindow*) node->Data(); + wxWindow* win = node->GetData(); if (SendIdleEvents(win)) needMore = TRUE; - node = node->Next(); + node = node->GetNext(); } + return needMore; } @@ -385,7 +386,7 @@ void wxApp::ProcessPendingEvents() wxEvtHandler *handler = (wxEvtHandler *)node->Data(); handler->ProcessPendingEvents(); - + delete node; node = wxPendingEvents.First(); @@ -411,10 +412,12 @@ void wxApp::DeletePendingObjects() wxWindow *wxApp::GetTopWindow() { - if (m_topWindow) return m_topWindow; - wxNode *node = wxTopLevelWindows.First(); - if (!node) return (wxWindow *) NULL; - return (wxWindow*)node->Data(); + if (m_topWindow) + return m_topWindow; + else if (wxTopLevelWindows.GetCount() > 0) + return wxTopLevelWindows.GetFirst()->GetData(); + else + return NULL; } void wxApp::SetTopWindow( wxWindow *win ) @@ -565,7 +568,7 @@ int wxEntry( int argc, char *argv[] ) if (!wxTheApp->OnInit()) return 0; - wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); + wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0; int retValue = 0; diff --git a/src/gtk/data.cpp b/src/gtk/data.cpp index f8c868a247..57e16d0916 100644 --- a/src/gtk/data.cpp +++ b/src/gtk/data.cpp @@ -33,7 +33,7 @@ XrmDatabase wxResourceDatabase; char *wxBuffer = (char *) NULL; /* Windows List */ -wxList wxTopLevelWindows; +wxWindowList wxTopLevelWindows; /* List of windows pending deletion */ wxList wxPendingDelete; @@ -75,7 +75,7 @@ wxPenList *wxThePenList = (wxPenList *) NULL; wxFontList *wxTheFontList = (wxFontList *) NULL; wxColourDatabase *wxTheColourDatabase = (wxColourDatabase *) NULL; wxBitmapList *wxTheBitmapList = (wxBitmapList *) NULL; - + /* X only font names */ /* wxFontNameDirectory *wxTheFontNameDirectory; @@ -111,7 +111,7 @@ wxBrush *wxLIGHT_GREY_BRUSH; wxColour *wxBLACK; wxColour *wxWHITE; -wxColour *wxGREY; +wxColour *wxGREY; wxColour *wxRED; wxColour *wxBLUE; wxColour *wxGREEN; @@ -125,13 +125,13 @@ wxCursor *wxCROSS_CURSOR = (wxCursor *) NULL; /* 'Null' objects */ wxAcceleratorTable wxNullAcceleratorTable; wxBitmap wxNullBitmap; -wxIcon wxNullIcon; +wxIcon wxNullIcon; wxCursor wxNullCursor; wxPen wxNullPen; wxBrush wxNullBrush; wxFont wxNullFont; wxColour wxNullColour; -wxPalette wxNullPalette; +wxPalette wxNullPalette; /* Default window names */ const char *wxButtonNameStr = "button"; diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index a2c3a2bf3e..822015862d 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -142,7 +142,7 @@ bool wxDialog::Create( wxWindow *parent, if (m_parent) m_parent->AddChild( this ); PostCreation(); - + gtk_widget_realize( m_widget ); gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", @@ -337,7 +337,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_x != old_x) || (m_y != old_y)) { /* m_sizeSet = FALSE; */ - gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_uposition( m_widget, m_x, m_y ); } } @@ -413,7 +413,7 @@ bool wxDialog::Show( bool show ) } wxWindow::Show( show ); - + if (show) InitDialog(); return TRUE; @@ -442,7 +442,7 @@ int wxDialog::ShowModal() wxFAIL_MSG( "wxDialog:ShowModal called twice" ); return GetReturnCode(); } - + Show( TRUE ); m_modalShowing = TRUE; diff --git a/src/gtk/frame.cpp b/src/gtk/frame.cpp index edd72807fe..b8198a3288 100644 --- a/src/gtk/frame.cpp +++ b/src/gtk/frame.cpp @@ -36,7 +36,6 @@ const int wxSTATUS_HEIGHT = 25; // data //----------------------------------------------------------------------------- -extern wxList wxTopLevelWindows; extern wxList wxPendingDelete; //----------------------------------------------------------------------------- diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 26dabd6d51..6a50e9e1fe 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -171,7 +171,6 @@ void debug_focus_in( GtkWidget* widget, const char* name, const char *window ) //----------------------------------------------------------------------------- extern wxList wxPendingDelete; -extern wxList wxTopLevelWindows; extern bool g_blockEventsOnDrag; extern bool g_blockEventsOnScroll; static bool g_capturing = FALSE; diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 93459c373d..81123a87ca 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -140,11 +140,11 @@ bool wxYield() // it's necessary to call ProcessIdle() to update the frames sizes which // might have been changed (it also will update other things set from // OnUpdateUI() which is a nice (and desired) side effect) - for ( wxNode *node = wxTopLevelWindows.GetFirst(); + for ( wxWindowList::Node *node = wxTopLevelWindows.GetFirst(); node; node = node->GetNext() ) { - wxWindow *win = ((wxWindow*)node->GetData()); + wxWindow *win = node->GetData(); win->OnInternalIdle(); } @@ -312,14 +312,15 @@ bool wxApp::SendIdleEvents() { bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); + wxWindowList::Node* node = wxTopLevelWindows.GetFirst(); while (node) { - wxWindow* win = (wxWindow*) node->Data(); + wxWindow* win = node->GetData(); if (SendIdleEvents(win)) needMore = TRUE; - node = node->Next(); + node = node->GetNext(); } + return needMore; } @@ -385,7 +386,7 @@ void wxApp::ProcessPendingEvents() wxEvtHandler *handler = (wxEvtHandler *)node->Data(); handler->ProcessPendingEvents(); - + delete node; node = wxPendingEvents.First(); @@ -411,10 +412,12 @@ void wxApp::DeletePendingObjects() wxWindow *wxApp::GetTopWindow() { - if (m_topWindow) return m_topWindow; - wxNode *node = wxTopLevelWindows.First(); - if (!node) return (wxWindow *) NULL; - return (wxWindow*)node->Data(); + if (m_topWindow) + return m_topWindow; + else if (wxTopLevelWindows.GetCount() > 0) + return wxTopLevelWindows.GetFirst()->GetData(); + else + return NULL; } void wxApp::SetTopWindow( wxWindow *win ) @@ -565,7 +568,7 @@ int wxEntry( int argc, char *argv[] ) if (!wxTheApp->OnInit()) return 0; - wxTheApp->m_initialized = (wxTopLevelWindows.Number() > 0); + wxTheApp->m_initialized = wxTopLevelWindows.GetCount() != 0; int retValue = 0; diff --git a/src/gtk1/data.cpp b/src/gtk1/data.cpp index f8c868a247..57e16d0916 100644 --- a/src/gtk1/data.cpp +++ b/src/gtk1/data.cpp @@ -33,7 +33,7 @@ XrmDatabase wxResourceDatabase; char *wxBuffer = (char *) NULL; /* Windows List */ -wxList wxTopLevelWindows; +wxWindowList wxTopLevelWindows; /* List of windows pending deletion */ wxList wxPendingDelete; @@ -75,7 +75,7 @@ wxPenList *wxThePenList = (wxPenList *) NULL; wxFontList *wxTheFontList = (wxFontList *) NULL; wxColourDatabase *wxTheColourDatabase = (wxColourDatabase *) NULL; wxBitmapList *wxTheBitmapList = (wxBitmapList *) NULL; - + /* X only font names */ /* wxFontNameDirectory *wxTheFontNameDirectory; @@ -111,7 +111,7 @@ wxBrush *wxLIGHT_GREY_BRUSH; wxColour *wxBLACK; wxColour *wxWHITE; -wxColour *wxGREY; +wxColour *wxGREY; wxColour *wxRED; wxColour *wxBLUE; wxColour *wxGREEN; @@ -125,13 +125,13 @@ wxCursor *wxCROSS_CURSOR = (wxCursor *) NULL; /* 'Null' objects */ wxAcceleratorTable wxNullAcceleratorTable; wxBitmap wxNullBitmap; -wxIcon wxNullIcon; +wxIcon wxNullIcon; wxCursor wxNullCursor; wxPen wxNullPen; wxBrush wxNullBrush; wxFont wxNullFont; wxColour wxNullColour; -wxPalette wxNullPalette; +wxPalette wxNullPalette; /* Default window names */ const char *wxButtonNameStr = "button"; diff --git a/src/gtk1/dialog.cpp b/src/gtk1/dialog.cpp index a2c3a2bf3e..822015862d 100644 --- a/src/gtk1/dialog.cpp +++ b/src/gtk1/dialog.cpp @@ -142,7 +142,7 @@ bool wxDialog::Create( wxWindow *parent, if (m_parent) m_parent->AddChild( this ); PostCreation(); - + gtk_widget_realize( m_widget ); gtk_signal_connect( GTK_OBJECT(m_widget), "size_allocate", @@ -337,7 +337,7 @@ void wxDialog::DoSetSize( int x, int y, int width, int height, int sizeFlags ) if ((m_x != old_x) || (m_y != old_y)) { /* m_sizeSet = FALSE; */ - gtk_widget_set_uposition( m_widget, m_x, m_y ); + gtk_widget_set_uposition( m_widget, m_x, m_y ); } } @@ -413,7 +413,7 @@ bool wxDialog::Show( bool show ) } wxWindow::Show( show ); - + if (show) InitDialog(); return TRUE; @@ -442,7 +442,7 @@ int wxDialog::ShowModal() wxFAIL_MSG( "wxDialog:ShowModal called twice" ); return GetReturnCode(); } - + Show( TRUE ); m_modalShowing = TRUE; diff --git a/src/gtk1/frame.cpp b/src/gtk1/frame.cpp index edd72807fe..b8198a3288 100644 --- a/src/gtk1/frame.cpp +++ b/src/gtk1/frame.cpp @@ -36,7 +36,6 @@ const int wxSTATUS_HEIGHT = 25; // data //----------------------------------------------------------------------------- -extern wxList wxTopLevelWindows; extern wxList wxPendingDelete; //----------------------------------------------------------------------------- diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 26dabd6d51..6a50e9e1fe 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -171,7 +171,6 @@ void debug_focus_in( GtkWidget* widget, const char* name, const char *window ) //----------------------------------------------------------------------------- extern wxList wxPendingDelete; -extern wxList wxTopLevelWindows; extern bool g_blockEventsOnDrag; extern bool g_blockEventsOnScroll; static bool g_capturing = FALSE; diff --git a/src/motif/app.cpp b/src/motif/app.cpp index 65859d3f7b..48519f37d2 100644 --- a/src/motif/app.cpp +++ b/src/motif/app.cpp @@ -211,9 +211,8 @@ int wxEntry( int argc, char *argv[] ) // GUI-specific initialization, such as creating an app context. wxTheApp->OnInitGui(); - // Here frames insert themselves automatically - // into wxTopLevelWindows by getting created - // in OnInit(). + // Here frames insert themselves automatically into wxTopLevelWindows by + // getting created in OnInit(). int retValue = 0; if (wxTheApp->OnInit()) @@ -438,15 +437,16 @@ void wxApp::OnIdle(wxIdleEvent& event) bool wxApp::SendIdleEvents() { bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); + + wxWindowList::Node* node = wxTopLevelWindows.GetFirst(); while (node) { - wxWindow* win = (wxWindow*) node->Data(); + wxWindow* win = node->GetData(); if (SendIdleEvents(win)) needMore = TRUE; - - node = node->Next(); + node = node->GetNext(); } + return needMore; } @@ -519,8 +519,8 @@ wxWindow* wxApp::GetTopWindow() const { if (m_topWindow) return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); + else if (wxTopLevelWindows.GetCount() > 0) + return wxTopLevelWindows.GetFirst()->GetData(); else return NULL; } diff --git a/src/motif/data.cpp b/src/motif/data.cpp index 4767438a1c..f37d94fd39 100644 --- a/src/motif/data.cpp +++ b/src/motif/data.cpp @@ -6,7 +6,7 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -22,7 +22,7 @@ char *wxBuffer = NULL; // Windows List -wxList wxTopLevelWindows; +wxWindowList wxTopLevelWindows; // List of windows pending deletion wxList wxPendingDelete; diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index 287774c77b..b2a48459f0 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -22,6 +22,7 @@ #include "wx/app.h" #include "wx/msgdlg.h" #include "wx/cursor.h" +#include "wx/window.h" // for wxTopLevelWindows #include #include @@ -60,8 +61,6 @@ static char *GetIniFile (char *dest, const char *filename); -extern wxList wxTopLevelWindows; - // ============================================================================ // implementation // ============================================================================ diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 82851e6f13..91433c5051 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -1016,14 +1016,14 @@ void wxApp::OnIdle(wxIdleEvent& event) bool wxApp::SendIdleEvents() { bool needMore = FALSE; - wxNode* node = wxTopLevelWindows.First(); + + wxWindowList::Node* node = wxTopLevelWindows.First(); while (node) { - wxWindow* win = (wxWindow*) node->Data(); + wxWindow* win = node->GetData(); if (SendIdleEvents(win)) needMore = TRUE; - - node = node->Next(); + node = node->GetNext(); } return needMore; @@ -1097,8 +1097,8 @@ wxWindow* wxApp::GetTopWindow() const { if (m_topWindow) return m_topWindow; - else if (wxTopLevelWindows.Number() > 0) - return (wxWindow*) wxTopLevelWindows.First()->Data(); + else if (wxTopLevelWindows.GetCount() > 0) + return wxTopLevelWindows.GetFirst()->GetData(); else return NULL; } diff --git a/src/msw/data.cpp b/src/msw/data.cpp index 439c73cd49..e8302954e7 100644 --- a/src/msw/data.cpp +++ b/src/msw/data.cpp @@ -6,7 +6,7 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -32,7 +32,7 @@ char *wxBuffer = NULL; // Windows List -wxList wxTopLevelWindows; +wxWindowList wxTopLevelWindows; // List of windows pending deletion wxList WXDLLEXPORT wxPendingDelete; @@ -469,7 +469,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxTCPConnection, wxConnectionBase) IMPLEMENT_DYNAMIC_CLASS(wxStatusBar, wxWindow) BEGIN_EVENT_TABLE(wxStatusBar, wxWindow) - EVT_PAINT(wxStatusBar::OnPaint) + EVT_PAINT(wxStatusBar::OnPaint) EVT_SYS_COLOUR_CHANGED(wxStatusBar::OnSysColourChanged) END_EVENT_TABLE() @@ -625,14 +625,14 @@ IMPLEMENT_DYNAMIC_CLASS(wxGenericGrid, wxPanel) const wxEventTable *wxEvtHandler::GetEventTable() const { return &wxEvtHandler::sm_eventTable; } const wxEventTable wxEvtHandler::sm_eventTable = - { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; + { NULL, &wxEvtHandler::sm_eventTableEntries[0] }; const wxEventTableEntry wxEvtHandler::sm_eventTableEntries[] = { { 0, 0, 0, NULL } }; BEGIN_EVENT_TABLE(wxFrame, wxWindow) - EVT_ACTIVATE(wxFrame::OnActivate) - EVT_SIZE(wxFrame::OnSize) - EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) + EVT_ACTIVATE(wxFrame::OnActivate) + EVT_SIZE(wxFrame::OnSize) + EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) EVT_IDLE(wxFrame::OnIdle) EVT_CLOSE(wxFrame::OnCloseWindow) @@ -667,9 +667,9 @@ BEGIN_EVENT_TABLE(wxPanel, wxWindow) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxTextCtrl, wxControl) - EVT_CHAR(wxTextCtrl::OnChar) - EVT_DROP_FILES(wxTextCtrl::OnDropFiles) - EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) + EVT_CHAR(wxTextCtrl::OnChar) + EVT_DROP_FILES(wxTextCtrl::OnDropFiles) + EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground) END_EVENT_TABLE() #ifdef __WXMSW__ @@ -691,32 +691,32 @@ BEGIN_EVENT_TABLE(wxToolBarBase, wxControl) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxToolBarSimple, wxToolBarBase) - EVT_SIZE(wxToolBarSimple::OnSize) - EVT_PAINT(wxToolBarSimple::OnPaint) - EVT_KILL_FOCUS(wxToolBarSimple::OnKillFocus) - EVT_MOUSE_EVENTS(wxToolBarSimple::OnMouseEvent) + EVT_SIZE(wxToolBarSimple::OnSize) + EVT_PAINT(wxToolBarSimple::OnPaint) + EVT_KILL_FOCUS(wxToolBarSimple::OnKillFocus) + EVT_MOUSE_EVENTS(wxToolBarSimple::OnMouseEvent) END_EVENT_TABLE() #ifdef __WXMSW__ BEGIN_EVENT_TABLE(wxToolBarMSW, wxToolBarBase) - EVT_SIZE(wxToolBarMSW::OnSize) - EVT_PAINT(wxToolBarMSW::OnPaint) - EVT_MOUSE_EVENTS(wxToolBarMSW::OnMouseEvent) + EVT_SIZE(wxToolBarMSW::OnSize) + EVT_PAINT(wxToolBarMSW::OnPaint) + EVT_MOUSE_EVENTS(wxToolBarMSW::OnMouseEvent) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxToolBar95, wxToolBarBase) - EVT_SIZE(wxToolBar95::OnSize) - EVT_PAINT(wxToolBar95::OnPaint) - EVT_KILL_FOCUS(wxToolBar95::OnKillFocus) - EVT_MOUSE_EVENTS(wxToolBar95::OnMouseEvent) + EVT_SIZE(wxToolBar95::OnSize) + EVT_PAINT(wxToolBar95::OnPaint) + EVT_KILL_FOCUS(wxToolBar95::OnKillFocus) + EVT_MOUSE_EVENTS(wxToolBar95::OnMouseEvent) EVT_SYS_COLOUR_CHANGED(wxToolBar95::OnSysColourChanged) END_EVENT_TABLE() #endif BEGIN_EVENT_TABLE(wxGenericGrid, wxPanel) - EVT_SIZE(wxGenericGrid::OnSize) - EVT_PAINT(wxGenericGrid::OnPaint) - EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent) + EVT_SIZE(wxGenericGrid::OnSize) + EVT_PAINT(wxGenericGrid::OnPaint) + EVT_MOUSE_EVENTS(wxGenericGrid::OnMouseEvent) EVT_TEXT(wxGRID_TEXT_CTRL, wxGenericGrid::OnText) EVT_COMMAND_SCROLL(wxGRID_HSCROLL, wxGenericGrid::OnGridScroll) EVT_COMMAND_SCROLL(wxGRID_VSCROLL, wxGenericGrid::OnGridScroll) @@ -728,28 +728,28 @@ END_EVENT_TABLE() #if !defined(__WXMSW__) || wxUSE_GENERIC_DIALOGS_IN_MSW BEGIN_EVENT_TABLE(wxGenericMessageDialog, wxDialog) - EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes) - EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo) - EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel) + EVT_BUTTON(wxID_YES, wxGenericMessageDialog::OnYes) + EVT_BUTTON(wxID_NO, wxGenericMessageDialog::OnNo) + EVT_BUTTON(wxID_CANCEL, wxGenericMessageDialog::OnCancel) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxGenericColourDialog, wxDialog) - EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) - EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) - EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) - EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) - EVT_PAINT(wxGenericColourDialog::OnPaint) - EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) + EVT_BUTTON(wxID_ADD_CUSTOM, wxGenericColourDialog::OnAddCustom) + EVT_SLIDER(wxID_RED_SLIDER, wxGenericColourDialog::OnRedSlider) + EVT_SLIDER(wxID_GREEN_SLIDER, wxGenericColourDialog::OnGreenSlider) + EVT_SLIDER(wxID_BLUE_SLIDER, wxGenericColourDialog::OnBlueSlider) + EVT_PAINT(wxGenericColourDialog::OnPaint) + EVT_MOUSE_EVENTS(wxGenericColourDialog::OnMouseEvent) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog) - EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont) - EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) - EVT_PAINT(wxGenericFontDialog::OnPaint) + EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont) + EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont) + EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont) + EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont) + EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont) + EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) + EVT_PAINT(wxGenericFontDialog::OnPaint) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxGenericPrintDialog, wxDialog) @@ -761,25 +761,25 @@ END_EVENT_TABLE() #endif BEGIN_EVENT_TABLE(wxTextEntryDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK) + EVT_BUTTON(wxID_OK, wxTextEntryDialog::OnOK) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxSingleChoiceDialog, wxDialog) - EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK) + EVT_BUTTON(wxID_OK, wxSingleChoiceDialog::OnOK) END_EVENT_TABLE() #include "wx/prntbase.h" BEGIN_EVENT_TABLE(wxPrintAbortDialog, wxDialog) - EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel) + EVT_BUTTON(wxID_CANCEL, wxPrintAbortDialog::OnCancel) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxPreviewControlBar, wxWindow) - EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnClose) - EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) - EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) - EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) - EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) + EVT_BUTTON(wxID_PREVIEW_CLOSE, wxPreviewControlBar::OnClose) + EVT_BUTTON(wxID_PREVIEW_PRINT, wxPreviewControlBar::OnPrint) + EVT_BUTTON(wxID_PREVIEW_PREVIOUS, wxPreviewControlBar::OnPrevious) + EVT_BUTTON(wxID_PREVIEW_NEXT, wxPreviewControlBar::OnNext) + EVT_CHOICE(wxID_PREVIEW_ZOOM, wxPreviewControlBar::OnZoom) END_EVENT_TABLE() #endif -- 2.45.2