From a3622daa901777a33969d8bc04e2d62dee14d164 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 7 Aug 1998 15:09:04 +0000 Subject: [PATCH] (1) Denis Pershin's patch for wxGTK (memory leaks corrections) (2) DELETEP/DELETEA globally renamed to wxDELETE/wxDELETEA and now also NULL their argument git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/defs.h | 13 ++- include/wx/gdicmn.h | 11 ++ include/wx/generic/listctrl.h | 54 ++++----- include/wx/gtk/app.h | 39 +++---- include/wx/gtk/font.h | 4 +- include/wx/gtk/listbox.h | 1 + include/wx/gtk/settings.h | 3 + include/wx/gtk1/app.h | 39 +++---- include/wx/gtk1/font.h | 4 +- include/wx/gtk1/listbox.h | 1 + include/wx/gtk1/settings.h | 3 + include/wx/layout.h | 57 +++++----- include/wx/log.h | 17 ++- include/wx/msw/menu.h | 16 ++- include/wx/msw/notebook.h | 5 +- src/common/datstrm.cpp | 4 +- src/common/dynarray.cpp | 9 +- src/common/gdicmn.cpp | 127 ++++++++++++++------- src/common/intl.cpp | 10 +- src/common/layout.cpp | 29 ++--- src/common/log.cpp | 8 +- src/common/postscrp.cpp | 2 +- src/common/string.cpp | 9 +- src/gtk/app.cpp | 28 ++++- src/gtk/data.cpp | 103 +++++++++-------- src/gtk/filedlg.cpp | 82 +++++++------- src/gtk/font.cpp | 19 ++-- src/gtk/listbox.cpp | 3 +- src/gtk/mdi.cpp | 46 ++++---- src/gtk/radiobox.cpp | 8 ++ src/gtk/settings.cpp | 12 +- src/gtk/tbargtk.cpp | 62 +++++------ src/gtk/utilsres.cpp | 202 +++++++++++++++++----------------- src/gtk/window.cpp | 12 +- src/gtk1/app.cpp | 28 ++++- src/gtk1/data.cpp | 103 +++++++++-------- src/gtk1/filedlg.cpp | 82 +++++++------- src/gtk1/font.cpp | 19 ++-- src/gtk1/listbox.cpp | 3 +- src/gtk1/mdi.cpp | 46 ++++---- src/gtk1/radiobox.cpp | 8 ++ src/gtk1/settings.cpp | 12 +- src/gtk1/tbargtk.cpp | 62 +++++------ src/gtk1/utilsres.cpp | 202 +++++++++++++++++----------------- src/gtk1/window.cpp | 12 +- src/msw/frame.cpp | 1 - src/msw/window.cpp | 4 +- 47 files changed, 893 insertions(+), 731 deletions(-) diff --git a/include/wx/defs.h b/include/wx/defs.h index 1f0ba22911..f84200020c 100644 --- a/include/wx/defs.h +++ b/include/wx/defs.h @@ -210,10 +210,15 @@ enum ErrCode /** @name Very common macros */ // ---------------------------------------------------------------------------- //@{ -/// delete pointer if it is not NULL -#define DELETEP(p) if ( (p) != NULL ) delete (p) -/// delete array pointer if it is not NULL -#define DELETEA(p) if ( (p) != NULL ) delete [] (p) +/// delete pointer if it is not NULL and NULL it afterwards +// (checking that it's !NULL before passing it to delete is just a +// a question of style, because delete will do it itself anyhow, but it might +// be considered as an error by some overzealous debugging implementations of +// the library, so we do it ourselves) +#define wxDELETE(p) if ( (p) != NULL ) { delete (p); p = NULL; } + +// delete an array and NULL it (see comments above) +#define wxDELETEA(p) if ( (p) != NULL ) { delete [] (p); p = NULL; } /// size of statically declared array #define WXSIZEOF(array) (sizeof(array)/sizeof(array[0])) diff --git a/include/wx/gdicmn.h b/include/wx/gdicmn.h index f0b52eefde..9ce9b66abf 100644 --- a/include/wx/gdicmn.h +++ b/include/wx/gdicmn.h @@ -315,7 +315,9 @@ WXDLLEXPORT_DATA(extern wxCursor*) wxCROSS_CURSOR; WXDLLEXPORT_DATA(extern wxColourDatabase*) wxTheColourDatabase; extern void WXDLLEXPORT wxInitializeStockObjects(); +extern void WXDLLEXPORT wxInitializeStockLists(); extern void WXDLLEXPORT wxDeleteStockObjects(); +extern void WXDLLEXPORT wxDeleteStockLists(); extern bool WXDLLEXPORT wxColourDisplay(); @@ -345,5 +347,14 @@ extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor); wxIcon *icon = new wxICON(wxbuild); */ +class WXDLLEXPORT wxResourceCache: public wxList +{ + DECLARE_DYNAMIC_CLASS(wxResourceCache) + public: + wxResourceCache(); + wxResourceCache(const unsigned int the_key_type); + ~wxResourceCache(); +}; + #endif // __GDICMNH__ diff --git a/include/wx/generic/listctrl.h b/include/wx/generic/listctrl.h index e38c503ea8..02d797f8bb 100644 --- a/include/wx/generic/listctrl.h +++ b/include/wx/generic/listctrl.h @@ -69,7 +69,7 @@ typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); #define wxLC_NO_HEADER 0x0800 // not supported in wxGLC #define wxLC_NO_SORT_HEADER 0x1000 // not supported in wxGLC #define wxLC_SINGLE_SEL 0x2000 -#define wxLC_SORT_ASCENDING 0x4000 +#define wxLC_SORT_ASCENDING 0x4000 #define wxLC_SORT_DESCENDING 0x8000 // not supported in wxGLC #define wxLC_MASK_TYPE (wxLC_ICON | wxLC_SMALL_ICON | wxLC_LIST | wxLC_REPORT) @@ -95,7 +95,7 @@ typedef int (*wxListCtrlCompare)(long item1, long item2, long sortData); #define wxLIST_STATE_DONTCARE 0x0000 #define wxLIST_STATE_DROPHILITED 0x0001 // not supported in wxGLC #define wxLIST_STATE_FOCUSED 0x0002 -#define wxLIST_STATE_SELECTED 0x0004 +#define wxLIST_STATE_SELECTED 0x0004 #define wxLIST_STATE_CUT 0x0008 // not supported in wxGLC // Hit test flags, used in HitTest // wxGLC suppots 20 and 80 @@ -119,7 +119,7 @@ enum { wxLIST_NEXT_ALL, // Searches for subsequent item by index wxLIST_NEXT_BELOW, // Searches for an item below the specified item wxLIST_NEXT_LEFT, // Searches for an item to the left of the specified item - wxLIST_NEXT_RIGHT, // Searches for an item to the right of the specified item + wxLIST_NEXT_RIGHT // Searches for an item to the right of the specified item }; // Alignment flags for Arrange // always wxLIST_ALIGN_LEFT in wxGLC @@ -238,7 +238,7 @@ class wxListItemData : public wxObject int m_xpos,m_ypos; int m_width,m_height; wxColour *m_colour; - + public: wxListItemData(void); wxListItemData( const wxListItem &info ); @@ -278,7 +278,7 @@ class wxListHeaderData : public wxObject int m_width; int m_xpos,m_ypos; int m_height; - + public: wxListHeaderData(void); wxListHeaderData( const wxListItem &info ); @@ -361,14 +361,14 @@ class wxListHeaderWindow : public wxWindow public: wxListHeaderWindow( void ); - wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, + wxListHeaderWindow( wxWindow *win, wxWindowID id, wxListMainWindow *owner, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = "columntitles" ); void DoDrawRect( wxPaintDC *dc, int x, int y, int w, int h ); void OnPaint( wxPaintEvent &event ); void OnMouse( wxMouseEvent &event ); void OnSetFocus( wxFocusEvent &event ); - + DECLARE_EVENT_TABLE() }; @@ -380,7 +380,7 @@ class wxListRenameTimer: public wxTimer { private: wxListMainWindow *m_owner; - + public: wxListRenameTimer( wxListMainWindow *owner ); void Notify(); @@ -395,7 +395,7 @@ class wxListRenameTimer: public wxTimer class wxListTextCtrl: public wxTextCtrl { DECLARE_DYNAMIC_CLASS(wxListTextCtrl); - + private: bool *m_accept; wxString *m_res; @@ -403,10 +403,10 @@ class wxListTextCtrl: public wxTextCtrl public: wxListTextCtrl(void) : wxTextCtrl() {}; - wxListTextCtrl( wxWindow *parent, const char *value = "", + wxListTextCtrl( wxWindow *parent, const char *value = "", bool *accept, wxString *res, wxListMainWindow *owner, int x = -1, int y = -1, int w = -1, int h = -1, int style = 0, char *name = "rawtext" ) : - wxTextCtrl( parent, value, x, y, w, h, style, name ) + wxTextCtrl( parent, value, x, y, w, h, style, name ) { m_res = res; m_accept = accept; @@ -455,7 +455,7 @@ class wxListMainWindow: public wxScrolledWindow public: long m_mode; wxList m_lines; - wxList m_columns; + wxList m_columns; wxListLineData *m_current; int m_visibleLines; wxBrush *m_hilightBrush; @@ -478,8 +478,8 @@ class wxListMainWindow: public wxScrolledWindow int m_dragCount; public: - wxListMainWindow(void); - wxListMainWindow( wxWindow *parent, wxWindowID id, + wxListMainWindow(void); + wxListMainWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = "listctrl" ); ~wxListMainWindow(void); @@ -517,10 +517,10 @@ class wxListMainWindow: public wxScrolledWindow void GetColumn( int col, wxListItem &item ); int GetColumnWidth( int vol ); int GetColumnCount( void ); - int GetCountPerPage( void ); + int GetCountPerPage( void ); void SetItem( wxListItem &item ); void GetItem( wxListItem &item ); - void SetItemState( long item, long state, long stateMask ); + void SetItemState( long item, long state, long stateMask ); int GetItemState( long item, long stateMask ); int GetItemCount( void ); void GetItemRect( long index, wxRectangle &rect ); @@ -543,7 +543,7 @@ class wxListMainWindow: public wxScrolledWindow void InsertColumn( long col, wxListItem &item ); void SortItems( wxListCtrlCompare fn, long data ); virtual bool OnListNotify( wxListEvent &event ); - + DECLARE_EVENT_TABLE() }; @@ -554,15 +554,15 @@ class wxListMainWindow: public wxScrolledWindow class wxListCtrl: public wxControl { DECLARE_DYNAMIC_CLASS(wxListCtrl); - + public: - + wxListCtrl(void); - wxListCtrl( wxWindow *parent, wxWindowID id, + wxListCtrl( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = "listctrl" ); ~wxListCtrl(void); - bool Create( wxWindow *parent, wxWindowID id, + bool Create( wxWindow *parent, wxWindowID id, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = 0, const wxString &name = "listctrl" ); void OnSize( wxSizeEvent &event ); @@ -583,7 +583,7 @@ class wxListCtrl: public wxControl void SetItemText( long item, const wxString& str ); long GetItemData( long item ); bool SetItemData( long item, long data ); - bool GetItemRect( long item, wxRectangle& rect, int code = wxLIST_RECT_BOUNDS ); + bool GetItemRect( long item, wxRectangle& rect, int code = wxLIST_RECT_BOUNDS ); bool GetItemPosition( long item, wxPoint& pos ); bool SetItemPosition( long item, const wxPoint& pos ); // not supported in wxGLC int GetItemCount(void); @@ -624,18 +624,18 @@ class wxListCtrl: public wxControl { m_mainWin->SetDropTarget( dropTarget ); }; wxDropTarget *GetDropTarget() const { return m_mainWin->GetDropTarget(); }; - + void OnIdle( wxIdleEvent &event ); protected: - + // wxListTextCtrl m_textCtrl; - wxImageList *m_imageListNormal; - wxImageList *m_imageListSmall; + wxImageList *m_imageListNormal; + wxImageList *m_imageListSmall; wxImageList *m_imageListState; // what's that ? wxListHeaderWindow *m_headerWin; wxListMainWindow *m_mainWin; - + DECLARE_EVENT_TABLE() }; diff --git a/include/wx/gtk/app.h b/include/wx/gtk/app.h index ee9f9fd0ed..7b79768cbb 100644 --- a/include/wx/gtk/app.h +++ b/include/wx/gtk/app.h @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __GTKAPPH__ @@ -24,7 +24,6 @@ class wxApp; class wxLog; -class wxConfig; // it's not used #if !USE_WXCONFIG, but fwd decl doesn't harm //----------------------------------------------------------------------------- // global data @@ -55,18 +54,18 @@ class wxApp: public wxEvtHandler DECLARE_DYNAMIC_CLASS(wxApp) public: - + wxApp(void); ~wxApp(void); - + static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } static wxAppInitializerFunction GetInitializerFunction(void) { return m_appInitFn; } - + virtual bool OnInit(void); virtual bool OnInitGui(void); virtual int OnRun(void); virtual int OnExit(void); - + wxWindow *GetTopWindow(void); void SetTopWindow( wxWindow *win ); virtual int MainLoop(void); @@ -78,10 +77,10 @@ class wxApp: public wxEvtHandler inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } inline bool GetWantDebugOutput(void) { return m_wantDebugOutput; } - void OnIdle( wxIdleEvent &event ); + void OnIdle( wxIdleEvent &event ); bool SendIdleEvents(void); bool SendIdleEvents( wxWindow* win ); - + inline wxString GetAppName(void) const { if (m_appName != "") return m_appName; @@ -95,38 +94,32 @@ class wxApp: public wxEvtHandler inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } inline bool GetExitOnFrameDelete(void) const { return m_exitOnFrameDelete; } - - void SetPrintMode(int WXUNUSED(mode) ) {}; + + void SetPrintMode(int WXUNUSED(mode) ) {}; int GetPrintMode(void) const { return wxPRINT_POSTSCRIPT; }; - + // override this function to create default log target of arbitrary // user-defined classv (default implementation creates a wxLogGui object) virtual wxLog *CreateLogTarget(); - -#if USE_WXCONFIG - // override this function to create a global wxConfig object of different - // than default type (right now the default implementation returns NULL) - virtual wxConfig *CreateConfig() { return NULL; } -#endif - + // GTK implementation static void CommonInit(void); - static void CommonCleanUp(void); - + static void CommonCleanUp(void); + bool ProcessIdle(void); void DeletePendingObjects(void); - + bool m_initialized; bool m_exitOnFrameDelete; bool m_wantDebugOutput; wxWindow *m_topWindow; gint m_idleTag; - + int argc; char **argv; - + static wxAppInitializerFunction m_appInitFn; private: diff --git a/include/wx/gtk/font.h b/include/wx/gtk/font.h index 619813b17e..bb928ffa74 100644 --- a/include/wx/gtk/font.h +++ b/include/wx/gtk/font.h @@ -37,7 +37,7 @@ class wxFontNameDirectory; // global variables //----------------------------------------------------------------------------- -// extern wxFontNameDirectory wxTheFontNameDirectory; // defined below +//extern wxFontNameDirectory *wxTheFontNameDirectory; // defined below //----------------------------------------------------------------------------- // wxFont @@ -115,6 +115,6 @@ class wxFontNameDirectory: public wxObject int nextFontId; }; -extern wxFontNameDirectory wxTheFontNameDirectory; +extern wxFontNameDirectory *wxTheFontNameDirectory; #endif // __GTKFONTH__ diff --git a/include/wx/gtk/listbox.h b/include/wx/gtk/listbox.h index fa14d3d609..88dafbcc45 100644 --- a/include/wx/gtk/listbox.h +++ b/include/wx/gtk/listbox.h @@ -26,6 +26,7 @@ //----------------------------------------------------------------------------- class wxListBox; +class wxArrayInt; //----------------------------------------------------------------------------- // global data diff --git a/include/wx/gtk/settings.h b/include/wx/gtk/settings.h index 7b801bbb81..b446e86b1f 100644 --- a/include/wx/gtk/settings.h +++ b/include/wx/gtk/settings.h @@ -26,6 +26,9 @@ class WXDLLEXPORT wxSystemSettings: public wxObject public: inline wxSystemSettings(void) {} + inline static void Init() {} + static void Done(); + // Get a system colour static wxColour GetSystemColour(int index); diff --git a/include/wx/gtk1/app.h b/include/wx/gtk1/app.h index ee9f9fd0ed..7b79768cbb 100644 --- a/include/wx/gtk1/app.h +++ b/include/wx/gtk1/app.h @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef __GTKAPPH__ @@ -24,7 +24,6 @@ class wxApp; class wxLog; -class wxConfig; // it's not used #if !USE_WXCONFIG, but fwd decl doesn't harm //----------------------------------------------------------------------------- // global data @@ -55,18 +54,18 @@ class wxApp: public wxEvtHandler DECLARE_DYNAMIC_CLASS(wxApp) public: - + wxApp(void); ~wxApp(void); - + static void SetInitializerFunction(wxAppInitializerFunction fn) { m_appInitFn = fn; } static wxAppInitializerFunction GetInitializerFunction(void) { return m_appInitFn; } - + virtual bool OnInit(void); virtual bool OnInitGui(void); virtual int OnRun(void); virtual int OnExit(void); - + wxWindow *GetTopWindow(void); void SetTopWindow( wxWindow *win ); virtual int MainLoop(void); @@ -78,10 +77,10 @@ class wxApp: public wxEvtHandler inline void SetWantDebugOutput(bool flag) { m_wantDebugOutput = flag; } inline bool GetWantDebugOutput(void) { return m_wantDebugOutput; } - void OnIdle( wxIdleEvent &event ); + void OnIdle( wxIdleEvent &event ); bool SendIdleEvents(void); bool SendIdleEvents( wxWindow* win ); - + inline wxString GetAppName(void) const { if (m_appName != "") return m_appName; @@ -95,38 +94,32 @@ class wxApp: public wxEvtHandler inline void SetExitOnFrameDelete(bool flag) { m_exitOnFrameDelete = flag; } inline bool GetExitOnFrameDelete(void) const { return m_exitOnFrameDelete; } - - void SetPrintMode(int WXUNUSED(mode) ) {}; + + void SetPrintMode(int WXUNUSED(mode) ) {}; int GetPrintMode(void) const { return wxPRINT_POSTSCRIPT; }; - + // override this function to create default log target of arbitrary // user-defined classv (default implementation creates a wxLogGui object) virtual wxLog *CreateLogTarget(); - -#if USE_WXCONFIG - // override this function to create a global wxConfig object of different - // than default type (right now the default implementation returns NULL) - virtual wxConfig *CreateConfig() { return NULL; } -#endif - + // GTK implementation static void CommonInit(void); - static void CommonCleanUp(void); - + static void CommonCleanUp(void); + bool ProcessIdle(void); void DeletePendingObjects(void); - + bool m_initialized; bool m_exitOnFrameDelete; bool m_wantDebugOutput; wxWindow *m_topWindow; gint m_idleTag; - + int argc; char **argv; - + static wxAppInitializerFunction m_appInitFn; private: diff --git a/include/wx/gtk1/font.h b/include/wx/gtk1/font.h index 619813b17e..bb928ffa74 100644 --- a/include/wx/gtk1/font.h +++ b/include/wx/gtk1/font.h @@ -37,7 +37,7 @@ class wxFontNameDirectory; // global variables //----------------------------------------------------------------------------- -// extern wxFontNameDirectory wxTheFontNameDirectory; // defined below +//extern wxFontNameDirectory *wxTheFontNameDirectory; // defined below //----------------------------------------------------------------------------- // wxFont @@ -115,6 +115,6 @@ class wxFontNameDirectory: public wxObject int nextFontId; }; -extern wxFontNameDirectory wxTheFontNameDirectory; +extern wxFontNameDirectory *wxTheFontNameDirectory; #endif // __GTKFONTH__ diff --git a/include/wx/gtk1/listbox.h b/include/wx/gtk1/listbox.h index fa14d3d609..88dafbcc45 100644 --- a/include/wx/gtk1/listbox.h +++ b/include/wx/gtk1/listbox.h @@ -26,6 +26,7 @@ //----------------------------------------------------------------------------- class wxListBox; +class wxArrayInt; //----------------------------------------------------------------------------- // global data diff --git a/include/wx/gtk1/settings.h b/include/wx/gtk1/settings.h index 7b801bbb81..b446e86b1f 100644 --- a/include/wx/gtk1/settings.h +++ b/include/wx/gtk1/settings.h @@ -26,6 +26,9 @@ class WXDLLEXPORT wxSystemSettings: public wxObject public: inline wxSystemSettings(void) {} + inline static void Init() {} + static void Done(); + // Get a system colour static wxColour GetSystemColour(int index); diff --git a/include/wx/layout.h b/include/wx/layout.h index 13ae082ee2..2f525bb1f0 100644 --- a/include/wx/layout.h +++ b/include/wx/layout.h @@ -60,8 +60,8 @@ class WXDLLEXPORT wxIndividualLayoutConstraint: public wxObject bool done; public: - wxIndividualLayoutConstraint(void); - ~wxIndividualLayoutConstraint(void); + wxIndividualLayoutConstraint(); + ~wxIndividualLayoutConstraint(); void Set(wxRelationship rel, wxWindow *otherW, wxEdge otherE, int val = 0, int marg = wxLAYOUT_DEFAULT_MARGIN); @@ -89,28 +89,28 @@ class WXDLLEXPORT wxIndividualLayoutConstraint: public wxObject // // Dimension is unconstrained // - inline void Unconstrained(void) { relationship = wxUnconstrained; } + inline void Unconstrained() { relationship = wxUnconstrained; } // // Dimension is 'as is' (use current size settings) // - inline void AsIs(void) { relationship = wxAsIs; } + inline void AsIs() { relationship = wxAsIs; } // // Accessors // - inline wxWindow *GetOtherWindow(void) { return otherWin; } - inline wxEdge GetMyEdge(void) { return myEdge; } + inline wxWindow *GetOtherWindow() { return otherWin; } + inline wxEdge GetMyEdge() const { return myEdge; } inline void SetEdge(wxEdge which) { myEdge = which; } inline void SetValue(int v) { value = v; } - inline int GetMargin(void) { return margin; } + inline int GetMargin() { return margin; } inline void SetMargin(int m) { margin = m; } - inline int GetValue(void) { return value; } - inline int GetPercent(void) { return percent; } - inline int GetOtherEdge(void) { return otherEdge; } - inline bool GetDone(void) { return done; } + inline int GetValue() const { return value; } + inline int GetPercent() const { return percent; } + inline int GetOtherEdge() const { return otherEdge; } + inline bool GetDone() const { return done; } inline void SetDone(bool d) { done = d; } - inline wxRelationship GetRelationship(void) { return relationship; } + inline wxRelationship GetRelationship() { return relationship; } inline void SetRelationship(wxRelationship r) { relationship = r; } // Reset constraint if it mentions otherWin @@ -121,7 +121,7 @@ class WXDLLEXPORT wxIndividualLayoutConstraint: public wxObject // Get the value of this edge or dimension, or if this // is not determinable, -1. - int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other); + int GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) const; }; class WXDLLEXPORT wxLayoutConstraints: public wxObject @@ -141,10 +141,15 @@ class WXDLLEXPORT wxLayoutConstraints: public wxObject wxIndividualLayoutConstraint centreX; wxIndividualLayoutConstraint centreY; - wxLayoutConstraints(void); - ~wxLayoutConstraints(void); + wxLayoutConstraints(); + ~wxLayoutConstraints(); bool SatisfyConstraints(wxWindow *win, int *noChanges); + bool AreSatisfied() const + { + return left.GetDone() && top.GetDone() && right.GetDone() && + bottom.GetDone() && centreX.GetDone() && centreY.GetDone(); + } }; bool WXDLLEXPORT wxOldDoLayout(wxWindow *win); @@ -217,9 +222,9 @@ class WXDLLEXPORT wxSizer: public wxWindow int sizerX; int sizerY; public: - wxSizer(void); + wxSizer(); wxSizer(wxWindow *parent, wxSizerBehaviour behav = wxSizerNone); - ~wxSizer(void); + ~wxSizer(); bool Create(wxWindow *parent, wxSizerBehaviour behav = wxSizerNone); virtual void SetSize(int x, int y, int w, int h, int flags = wxSIZE_AUTO); @@ -236,14 +241,14 @@ class WXDLLEXPORT wxSizer: public wxWindow { Move(x, y); } virtual void SetBorder(int w, int h); - inline int GetBorderX(void) { return borderX ; } - inline int GetBorderY(void) { return borderY ; } + inline int GetBorderX() { return borderX ; } + inline int GetBorderY() { return borderY ; } virtual void AddSizerChild(wxWindow *child); virtual void RemoveSizerChild(wxWindow *child); inline virtual void SetBehaviour(wxSizerBehaviour b) { sizerBehaviour = b; } - inline virtual wxSizerBehaviour GetBehaviour(void) { return sizerBehaviour; } + inline virtual wxSizerBehaviour GetBehaviour() { return sizerBehaviour; } virtual bool LayoutPhase1(int *); virtual bool LayoutPhase2(int *); @@ -264,9 +269,9 @@ class WXDLLEXPORT wxRowColSizer: public wxSizer int ySpacing; public: // rowOrCol = TRUE to be laid out in rows, otherwise in columns. - wxRowColSizer(void); + wxRowColSizer(); wxRowColSizer(wxWindow *parent, bool rowOrCol = wxSIZER_ROWS, int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink); - ~wxRowColSizer(void); + ~wxRowColSizer(); bool Create(wxWindow *parent, bool rowOrCol = wxSIZER_ROWS, int rowsOrColSize = 20, wxSizerBehaviour = wxSizerShrink); void SetSize(int x, int y, int w, int h, int flags = wxSIZE_AUTO); @@ -274,9 +279,9 @@ class WXDLLEXPORT wxRowColSizer: public wxSizer void SetSize(int w, int h) { wxSizer::SetSize(w, h); } inline virtual void SetRowOrCol(bool rc) { rowOrCol = rc; } - inline virtual bool GetRowOrCol(void) { return rowOrCol; } + inline virtual bool GetRowOrCol() { return rowOrCol; } inline virtual void SetRowOrColSize(int n) { rowOrColSize = n; } - inline virtual int GetRowOrColSize(void) { return rowOrColSize; } + inline virtual int GetRowOrColSize() { return rowOrColSize; } inline virtual void SetSpacing(int x, int y) { xSpacing = x; ySpacing = y; } inline virtual void GetSpacing(int *x, int *y) { *x = xSpacing; *y = ySpacing; } @@ -291,10 +296,10 @@ class WXDLLEXPORT wxSpacingSizer: public wxSizer private: protected: public: - wxSpacingSizer(void); + wxSpacingSizer(); wxSpacingSizer(wxWindow *parent, wxRelationship rel, wxWindow *other, int spacing); wxSpacingSizer(wxWindow *parent); - ~wxSpacingSizer(void); + ~wxSpacingSizer(); bool Create(wxWindow *parent, wxRelationship rel, wxWindow *other, int sp); bool Create(wxWindow *parent); diff --git a/include/wx/log.h b/include/wx/log.h index 573d180eb3..c4550d25fd 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -203,7 +203,9 @@ class wxFrame; class WXDLLEXPORT wxLogWindow : public wxLog { public: - wxLogWindow(const char *szTitle, bool bShow = TRUE); + wxLogWindow(const char *szTitle, // the title of the frame + bool bShow = TRUE, // show window immediately? + bool bPassToOld = TRUE); // pass log messages to the old target? ~wxLogWindow(); // window operations @@ -213,15 +215,24 @@ public: wxFrame *GetFrame() const; // accessors + // the previous log target (may be NULL) wxLog *GetOldLog() const { return m_pOldLog; } + // are we passing the messages to the previous log target? + bool IsPassingMessages() const { return m_bPassMessages; } + + // we can pass the messages to the previous log target (we're in this mode by + // default: we collect all messages in the window, but also let the default + // processing take place) + void PassMessages(bool bDoPass) { m_bPassMessages = bDoPass; } protected: virtual void DoLog(wxLogLevel level, const char *szString); virtual void DoLogString(const char *szString); private: - wxLog *m_pOldLog; // previous log target - wxLogFrame *m_pLogFrame; // the log frame + bool m_bPassMessages; // pass messages to m_pOldLog? + wxLog *m_pOldLog; // previous log target + wxLogFrame *m_pLogFrame; // the log frame }; // ---------------------------------------------------------------------------- diff --git a/include/wx/msw/menu.h b/include/wx/msw/menu.h index d193d99048..f2ced3f6d4 100644 --- a/include/wx/msw/menu.h +++ b/include/wx/msw/menu.h @@ -6,7 +6,7 @@ // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifndef __MENUH__ @@ -60,7 +60,7 @@ public: inline bool IsEnabled(int id) const { return Enabled(id); }; void Check(int id, bool Flag); bool Checked(int id) const; - inline bool IsChecked(int id) const { return IsChecked(id); }; + inline bool IsChecked(int id) const { return Checked(id); }; // item properties // title @@ -84,7 +84,7 @@ public: virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; } inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler(void) { return m_eventHandler; } + inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } inline wxList& GetItems() const { return (wxList&) m_menuItems; } @@ -130,9 +130,10 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler { DECLARE_DYNAMIC_CLASS(wxMenuBar) - wxMenuBar(void); +public: + wxMenuBar(); wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); - ~wxMenuBar(void); + ~wxMenuBar(); void Append(wxMenu *menu, const wxString& title); // Must only be used AFTER menu has been attached to frame, @@ -161,8 +162,11 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler // menu too if itemMenu is non-NULL. wxMenuItem *FindItemForId(int itemId, wxMenu **menuForItem = NULL) const ; + int GetMenuCount() const { return m_menuCount; } + wxMenu *GetMenu(int n) const { return m_menus[n]; } + inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; } - inline wxEvtHandler *GetEventHandler(void) { return m_eventHandler; } + inline wxEvtHandler *GetEventHandler() { return m_eventHandler; } inline int GetMenuCount() const { return m_menuCount; } inline wxMenu* GetMenu(int i) const { return m_menus[i]; } diff --git a/include/wx/msw/notebook.h b/include/wx/msw/notebook.h index 21540dac79..9b0af68f26 100644 --- a/include/wx/msw/notebook.h +++ b/include/wx/msw/notebook.h @@ -5,7 +5,7 @@ // Modified by: Vadim Zeitlin for Windows version // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifndef _NOTEBOOK_H @@ -62,7 +62,7 @@ private: // @@@ this class should really derive from wxTabCtrl, but the interface is not // exactly the same, so I can't do it right now and instead we reimplement // part of wxTabCtrl here -class wxNotebook : public wxControl +class WXDLLEXPORT wxNotebook : public wxControl { public: // ctors @@ -156,6 +156,7 @@ public: void OnSetFocus(wxFocusEvent& event); void OnNavigationKey(wxNavigationKeyEvent& event); +>>>>>>> 1.5 // base class virtuals // ------------------- virtual void Command(wxCommandEvent& event); diff --git a/src/common/datstrm.cpp b/src/common/datstrm.cpp index 80dbb536fc..93850acd65 100644 --- a/src/common/datstrm.cpp +++ b/src/common/datstrm.cpp @@ -123,7 +123,7 @@ wxString wxDataInputStream::ReadString() wx_string = string; delete string; - return wx_string; + return wx_string; } wxDataOutputStream::wxDataOutputStream(wxOutputStream& s) @@ -187,7 +187,7 @@ void wxDataOutputStream::WriteDouble(double d) #if USE_APPLE_IEEE ConvertToIeeeExtended(d, (unsigned char *)buf); #else -# pragma warning "wxDataStream::WriteDouble() not using IeeeExtended - will not work!" +# pragma warning "wxDataStream::WriteDouble() not using IeeeExtended - will not work!" buf[0] = '\0'; #endif Write(buf, 10); diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp index 7ea0930aef..fbf3972fe3 100644 --- a/src/common/dynarray.cpp +++ b/src/common/dynarray.cpp @@ -72,7 +72,7 @@ wxBaseArray::wxBaseArray(const wxBaseArray& src) // assignment operator wxBaseArray& wxBaseArray::operator=(const wxBaseArray& src) { - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_uiSize = // not src.m_uiSize to save memory m_uiCount = src.m_uiCount; @@ -117,7 +117,7 @@ void wxBaseArray::Grow() // dtor wxBaseArray::~wxBaseArray() { - DELETEA(m_pItems); + wxDELETEA(m_pItems); } // clears the list @@ -126,8 +126,7 @@ void wxBaseArray::Clear() m_uiSize = m_uiCount = 0; - DELETEA(m_pItems); - m_pItems = NULL; + wxDELETEA(m_pItems); } // pre-allocates memory (frees the previous data!) @@ -137,7 +136,7 @@ void wxBaseArray::Alloc(uint uiSize) // only if old buffer was not big enough if ( uiSize > m_uiSize ) { - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = new long[uiSize]; m_uiSize = uiSize; } diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp index 913b36b7b9..639619c5a7 100644 --- a/src/common/gdicmn.cpp +++ b/src/common/gdicmn.cpp @@ -41,6 +41,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxFontList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxPenList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBrushList, wxList) IMPLEMENT_DYNAMIC_CLASS(wxBitmapList, wxList) +IMPLEMENT_DYNAMIC_CLASS(wxResourceCache, wxList) /* IMPLEMENT_DYNAMIC_CLASS(wxRect, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxPoint, wxObject) @@ -319,14 +320,15 @@ wxString wxColourDatabase::FindName (const wxColour& colour) const } -void -wxInitializeStockObjects () -{ +void wxInitializeStockLists () { wxTheBrushList = new wxBrushList; wxThePenList = new wxPenList; wxTheFontList = new wxFontList; wxTheBitmapList = new wxBitmapList; +} +void wxInitializeStockObjects () +{ #ifdef __WXMOTIF__ #endif #ifdef __X__ @@ -376,44 +378,52 @@ wxInitializeStockObjects () void wxDeleteStockObjects () { - DELETEP(wxNORMAL_FONT); - DELETEP(wxSMALL_FONT); - DELETEP(wxITALIC_FONT); - DELETEP(wxSWISS_FONT); - - DELETEP(wxRED_PEN); - DELETEP(wxCYAN_PEN); - DELETEP(wxGREEN_PEN); - DELETEP(wxBLACK_PEN); - DELETEP(wxWHITE_PEN); - DELETEP(wxTRANSPARENT_PEN); - DELETEP(wxBLACK_DASHED_PEN); - DELETEP(wxGREY_PEN); - DELETEP(wxMEDIUM_GREY_PEN); - DELETEP(wxLIGHT_GREY_PEN); - - DELETEP(wxBLUE_BRUSH); - DELETEP(wxGREEN_BRUSH); - DELETEP(wxWHITE_BRUSH); - DELETEP(wxBLACK_BRUSH); - DELETEP(wxTRANSPARENT_BRUSH); - DELETEP(wxCYAN_BRUSH); - DELETEP(wxRED_BRUSH); - DELETEP(wxGREY_BRUSH); - DELETEP(wxMEDIUM_GREY_BRUSH); - DELETEP(wxLIGHT_GREY_BRUSH); - - DELETEP(wxBLACK); - DELETEP(wxWHITE); - DELETEP(wxRED); - DELETEP(wxBLUE); - DELETEP(wxGREEN); - DELETEP(wxCYAN); - DELETEP(wxLIGHT_GREY); - - DELETEP(wxSTANDARD_CURSOR); - DELETEP(wxHOURGLASS_CURSOR); - DELETEP(wxCROSS_CURSOR); + + wxDELETE(wxNORMAL_FONT); + wxDELETE(wxSMALL_FONT); + wxDELETE(wxITALIC_FONT); + wxDELETE(wxSWISS_FONT); + + wxDELETE(wxRED_PEN); + wxDELETE(wxCYAN_PEN); + wxDELETE(wxGREEN_PEN); + wxDELETE(wxBLACK_PEN); + wxDELETE(wxWHITE_PEN); + wxDELETE(wxTRANSPARENT_PEN); + wxDELETE(wxBLACK_DASHED_PEN); + wxDELETE(wxGREY_PEN); + wxDELETE(wxMEDIUM_GREY_PEN); + wxDELETE(wxLIGHT_GREY_PEN); + + wxDELETE(wxBLUE_BRUSH); + wxDELETE(wxGREEN_BRUSH); + wxDELETE(wxWHITE_BRUSH); + wxDELETE(wxBLACK_BRUSH); + wxDELETE(wxTRANSPARENT_BRUSH); + wxDELETE(wxCYAN_BRUSH); + wxDELETE(wxRED_BRUSH); + wxDELETE(wxGREY_BRUSH); + wxDELETE(wxMEDIUM_GREY_BRUSH); + wxDELETE(wxLIGHT_GREY_BRUSH); + + wxDELETE(wxBLACK); + wxDELETE(wxWHITE); + wxDELETE(wxRED); + wxDELETE(wxBLUE); + wxDELETE(wxGREEN); + wxDELETE(wxCYAN); + wxDELETE(wxLIGHT_GREY); + + wxDELETE(wxSTANDARD_CURSOR); + wxDELETE(wxHOURGLASS_CURSOR); + wxDELETE(wxCROSS_CURSOR); +} + +void wxDeleteStockLists() { + wxDELETE(wxTheBrushList); + wxDELETE(wxThePenList); + wxDELETE(wxTheFontList); + wxDELETE(wxTheBitmapList); } wxBitmapList::wxBitmapList () @@ -611,3 +621,38 @@ wxSize wxGetDisplaySize() return wxSize(x, y); } +wxResourceCache::wxResourceCache () : wxList() { +} + +wxResourceCache::wxResourceCache (const unsigned int the_key_type) : wxList(the_key_type) { +} + +wxResourceCache::~wxResourceCache () { + wxNode *node = First (); + while (node) { + wxGDIObject *item = (wxGDIObject *)node->Data(); + if (item->IsKindOf(CLASSINFO(wxBrush))) { + wxBrush *brush = (wxBrush *)item; + delete brush; + } + + if (item->IsKindOf(CLASSINFO(wxFont))) { + wxFont *font = (wxFont *)item; + delete font; + } + + if (item->IsKindOf(CLASSINFO(wxBitmap))) { + wxBitmap *bitmap = (wxBitmap *)item; + delete bitmap; + } + + if (item->IsKindOf(CLASSINFO(wxColour))) { + wxColour *colour = (wxColour *)item; + delete colour; + } + + wxNode *next = node->Next (); + node = next; + } +} + diff --git a/src/common/intl.cpp b/src/common/intl.cpp index 6f70f2fa3b..a0df0794d6 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -193,8 +193,8 @@ wxMsgCatalog::wxMsgCatalog() wxMsgCatalog::~wxMsgCatalog() { - DELETEA(m_pData); - DELETEA(m_pszName); + wxDELETEA(m_pData); + wxDELETEA(m_pszName); } class NoTransErr @@ -268,8 +268,7 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName) // read the whole file in memory m_pData = new uint8[nSize]; if ( fileMsg.Read(m_pData, nSize) != nSize ) { - DELETEA(m_pData); - m_pData = NULL; + wxDELETEA(m_pData); return FALSE; } @@ -291,8 +290,7 @@ bool wxMsgCatalog::Load(const char *szDirPrefix, const char *szName) // it's either too short or has incorrect magic number wxLogWarning("'%s' is not a valid message catalog.", strFullName.c_str()); - DELETEA(m_pData); - m_pData = NULL; + wxDELETEA(m_pData); return FALSE; } diff --git a/src/common/layout.cpp b/src/common/layout.cpp index 23917159ad..3ac377c21b 100644 --- a/src/common/layout.cpp +++ b/src/common/layout.cpp @@ -88,13 +88,13 @@ int wxSizerMarginY(wxWindow *win) } -wxIndividualLayoutConstraint::wxIndividualLayoutConstraint(void) +wxIndividualLayoutConstraint::wxIndividualLayoutConstraint() { myEdge = wxTop; relationship = wxUnconstrained; margin = 0; value = 0; percent = 0; otherEdge = wxTop; done = FALSE; otherWin = NULL; } -wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint(void) +wxIndividualLayoutConstraint::~wxIndividualLayoutConstraint() { } @@ -722,7 +722,9 @@ bool wxIndividualLayoutConstraint::SatisfyConstraint(wxLayoutConstraints *constr // Get the value of this edge or dimension, or if this // is not determinable, -1. -int wxIndividualLayoutConstraint::GetEdge(wxEdge which, wxWindow *thisWin, wxWindow *other) +int wxIndividualLayoutConstraint::GetEdge(wxEdge which, + wxWindow *thisWin, + wxWindow *other) const { // If the edge or dimension belongs to the parent, then we // know the dimension is obtainable immediately. @@ -942,7 +944,7 @@ int wxIndividualLayoutConstraint::GetEdge(wxEdge which, wxWindow *thisWin, wxWin return -1; } -wxLayoutConstraints::wxLayoutConstraints(void) +wxLayoutConstraints::wxLayoutConstraints() { left.SetEdge(wxLeft); top.SetEdge(wxTop); @@ -954,7 +956,7 @@ wxLayoutConstraints::wxLayoutConstraints(void) height.SetEdge(wxHeight); } -wxLayoutConstraints::~wxLayoutConstraints(void) +wxLayoutConstraints::~wxLayoutConstraints() { } @@ -1004,8 +1006,7 @@ bool wxLayoutConstraints::SatisfyConstraints(wxWindow *win, int *nChanges) *nChanges = noChanges; - return (left.GetDone() && top.GetDone() && right.GetDone() && bottom.GetDone() && - centreX.GetDone() && centreY.GetDone()); + return AreSatisfied(); } /* @@ -1085,7 +1086,7 @@ bool wxOldDoLayout(wxWindow *win) if (constr) { int tempNoChanges = 0; - (void) constr->SatisfyConstraints(child, &tempNoChanges); + (void)constr->SatisfyConstraints(child, &tempNoChanges); noChanges += tempNoChanges; } node = node->Next(); @@ -1136,7 +1137,7 @@ bool wxOldDoLayout(wxWindow *win) return TRUE; } -wxSizer::wxSizer(void) +wxSizer::wxSizer() { sizerBehaviour = wxSizerNone; borderX = 2; @@ -1197,7 +1198,7 @@ bool wxSizer::Create(wxWindow *parent, wxSizerBehaviour behav) return TRUE; } -wxSizer::~wxSizer(void) +wxSizer::~wxSizer() { // Remove all children without deleting them, // or ~wxbWindow will delete proper windows _twice_ @@ -1488,7 +1489,7 @@ bool wxSizer::LayoutPhase2(int *noChanges) * wxRowColSizer */ -wxRowColSizer::wxRowColSizer(void) +wxRowColSizer::wxRowColSizer() { rowOrCol = TRUE; rowOrColSize = 20; @@ -1513,7 +1514,7 @@ bool wxRowColSizer::Create(wxWindow *parent, bool rc, int n, wxSizerBehaviour be return TRUE; } -wxRowColSizer::~wxRowColSizer(void) +wxRowColSizer::~wxRowColSizer() { } @@ -1677,7 +1678,7 @@ bool wxRowColSizer::LayoutPhase2(int *noChanges) * wxSpacingSizer */ -wxSpacingSizer::wxSpacingSizer(void) +wxSpacingSizer::wxSpacingSizer() { } @@ -1738,7 +1739,7 @@ bool wxSpacingSizer::Create(wxWindow *parent, wxRelationship rel, wxWindow *othe return TRUE; } -wxSpacingSizer::~wxSpacingSizer(void) +wxSpacingSizer::~wxSpacingSizer() { } diff --git a/src/common/log.cpp b/src/common/log.cpp index b3bc58fbdb..aba5c2c1f2 100644 --- a/src/common/log.cpp +++ b/src/common/log.cpp @@ -646,10 +646,12 @@ void wxLogFrame::OnClear(wxCommandEvent& WXUNUSED(event)) m_pTextCtrl->Clear(); } -wxLogWindow::wxLogWindow(const char *szTitle, bool bShow) +wxLogWindow::wxLogWindow(const char *szTitle, bool bShow, bool bDoPass) { - m_pOldLog = wxLog::GetActiveTarget(); + m_bPassMessages = bDoPass; + m_pLogFrame = new wxLogFrame(szTitle); + m_pOldLog = wxLog::SetActiveTarget(this); if ( bShow ) m_pLogFrame->Show(TRUE); @@ -668,7 +670,7 @@ wxFrame *wxLogWindow::GetFrame() const void wxLogWindow::DoLog(wxLogLevel level, const char *szString) { // first let the previous logger show it - if ( m_pOldLog != NULL ) { + if ( m_pOldLog != NULL && m_bPassMessages ) { // @@@ why can't we access protected wxLog method from here (we derive // from wxLog)? gcc gives "DoLog is protected in this context", what // does this mean? Anyhow, the cast is harmless and let's us do what diff --git a/src/common/postscrp.cpp b/src/common/postscrp.cpp index bee66a51cf..815a981711 100644 --- a/src/common/postscrp.cpp +++ b/src/common/postscrp.cpp @@ -1645,7 +1645,7 @@ void wxPostScriptDC::GetTextExtent (const wxString& string, long *x, long *y, // Julian - we'll need to do this a different way now we've removed the // font directory system. Must find Stefan's original code. - name = wxTheFontNameDirectory.GetAFMName(Family, Weight, Style); + name = wxTheFontNameDirectory->GetAFMName(Family, Weight, Style); if (!name) name = "unknown"; diff --git a/src/common/string.cpp b/src/common/string.cpp index 407d143e3c..ac64abaeb6 100644 --- a/src/common/string.cpp +++ b/src/common/string.cpp @@ -1133,7 +1133,7 @@ void wxArrayString::Grow() memcpy(pNew, m_pItems, m_nCount*sizeof(char *)); // delete old memory (but do not release the strings!) - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = pNew; } @@ -1163,8 +1163,7 @@ void wxArrayString::Clear() m_nSize = m_nCount = 0; - DELETEA(m_pItems); - m_pItems = NULL; + wxDELETEA(m_pItems); } // dtor @@ -1172,7 +1171,7 @@ wxArrayString::~wxArrayString() { Free(); - DELETEA(m_pItems); + wxDELETEA(m_pItems); } // pre-allocates memory (frees the previous data!) @@ -1183,7 +1182,7 @@ void wxArrayString::Alloc(size_t nSize) // only if old buffer was not big enough if ( nSize > m_nSize ) { Free(); - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = new char *[nSize]; m_nSize = nSize; } diff --git a/src/gtk/app.cpp b/src/gtk/app.cpp index 2317ad5320..74f5e13cee 100644 --- a/src/gtk/app.cpp +++ b/src/gtk/app.cpp @@ -19,6 +19,8 @@ #include "wx/intl.h" #include "wx/log.h" #include "wx/memory.h" +#include "wx/font.h" +#include "wx/settings.h" #include "unistd.h" @@ -34,6 +36,7 @@ wxApp *wxTheApp = NULL; wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; extern wxList wxPendingDelete; +extern wxResourceCache *wxTheResourceCache; //----------------------------------------------------------------------------- // local functions @@ -242,9 +245,16 @@ void wxApp::CommonInit(void) (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion); #endif */ + wxSystemSettings::Init(); + wxTheResourceCache = new wxResourceCache(wxKEY_STRING); + + wxTheFontNameDirectory = new wxFontNameDirectory; + wxTheFontNameDirectory->Initialize(); wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); wxTheColourDatabase->Initialize(); + + wxInitializeStockLists(); wxInitializeStockObjects(); // For PostScript printing @@ -261,14 +271,24 @@ void wxApp::CommonInit(void) g_globalCursor = new wxCursor; */ - wxInitializeStockObjects(); +// wxInitializeStockObjects(); }; void wxApp::CommonCleanUp(void) { + wxDELETE(wxTheColourDatabase); + wxDELETE(wxThePrintPaperDatabase); + wxDELETE(wxThePrintSetupData); + wxDELETE(wxTheFontNameDirectory); wxDeleteStockObjects(); wxFlushResources(); + + wxDELETE(wxTheResourceCache); + + wxDeleteStockLists(); + + wxSystemSettings::Done(); }; wxLog *wxApp::CreateLogTarget() @@ -311,8 +331,6 @@ int wxEntry( int argc, char *argv[] ) wxObject *test_app = app_ini(); wxTheApp = (wxApp*) test_app; - -// wxTheApp = (wxApp*)( app_ini() ); }; if (!wxTheApp) @@ -321,8 +339,6 @@ int wxEntry( int argc, char *argv[] ) return 0; }; -// printf( "Programmstart.\n" ); - wxTheApp->argc = argc; wxTheApp->argv = argv; @@ -359,6 +375,8 @@ int wxEntry( int argc, char *argv[] ) wxTheApp->OnExit(); wxApp::CommonCleanUp(); + + wxDELETE(wxTheApp); #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT // At this point we want to check if there are any memory diff --git a/src/gtk/data.cpp b/src/gtk/data.cpp index 42facd4ae8..826d9102c7 100644 --- a/src/gtk/data.cpp +++ b/src/gtk/data.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ #include #include -wxList wxResourceCache(wxKEY_STRING); +wxResourceCache *wxTheResourceCache = NULL; XrmDatabase wxResourceDatabase; // Useful buffer, initialized in wxCommonInit @@ -64,7 +64,7 @@ wxBitmapList *wxTheBitmapList = NULL; // X only font names -wxFontNameDirectory wxTheFontNameDirectory; +wxFontNameDirectory *wxTheFontNameDirectory; // Stock objects wxFont *wxNORMAL_FONT; @@ -398,7 +398,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar95, wxToolBarBase) 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() @@ -548,17 +548,16 @@ 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_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) + EVT_SIZE(wxFrame::OnSize) + EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) + EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) + EVT_IDLE(wxFrame::OnIdle) + EVT_CLOSE(wxFrame::OnCloseWindow) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxDialog, wxPanel) @@ -589,9 +588,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 wx_msw @@ -613,32 +612,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 wx_msw 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) @@ -650,28 +649,28 @@ END_EVENT_TABLE() #if !defined(wx_msw) || USE_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) @@ -683,25 +682,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 diff --git a/src/gtk/filedlg.cpp b/src/gtk/filedlg.cpp index b4d0ed1592..a555c487be 100644 --- a/src/gtk/filedlg.cpp +++ b/src/gtk/filedlg.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -48,12 +48,12 @@ void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxDialog) wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, - const wxString& wildCard, + const wxString& defaultDir, const wxString& defaultFileName, + const wxString& wildCard, long style, const wxPoint& pos ) { m_needParent = FALSE; - + PreCreation( parent, -1, pos, wxDefaultSize, style | wxDIALOG_MODAL, "filedialog" ); m_message = message; m_path = ""; @@ -62,7 +62,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_wildCard = wildCard; m_dialogStyle = style; m_filterIndex = 1; - + m_widget = gtk_file_selection_new( "File selection" ); int x = (gdk_screen_width () - 400) / 2; @@ -76,11 +76,11 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_path.Append(m_fileName); if(m_path.Length()>1) gtk_file_selection_set_filename(sel,m_path); - - gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", + + gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", + gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); }; @@ -95,48 +95,48 @@ int wxFileDialog::ShowModal(void) }; return ret; }; - + char *wxFileSelector(const char *title, const char *defaultDir, const char *defaultFileName, const char *defaultExtension, const char *filter, int flags, wxWindow *parent, int x, int y) { - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, - filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; + wxString filter2(""); + if ( defaultExtension && !filter ) + filter2 = wxString("*.") + wxString(defaultExtension) ; + else if ( filter ) + filter2 = filter; + + wxString defaultDirString; + if (defaultDir) + defaultDirString = defaultDir; + else + defaultDirString = ""; + + wxString defaultFilenameString; + if (defaultFileName) + defaultFilenameString = defaultFileName; + else + defaultFilenameString = ""; + + wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, + filter2, flags, wxPoint(x, y)); + + if ( fileDialog.ShowModal() == wxID_OK ) + { + strcpy(wxBuffer, (const char *)fileDialog.GetPath()); + return wxBuffer; + } + else + return NULL; }; -char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name, +char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent ) { char *ext = (char *)extension; - + char prompt[50]; wxString str = _("Load %s file"); sprintf(prompt, str, what); @@ -148,11 +148,11 @@ char* wxLoadFileSelector(const char *what, const char *extension, const char *de return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); }; -char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name, +char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent ) { char *ext = (char *)extension; - + char prompt[50]; wxString str = _("Save %s file"); sprintf(prompt, str, what); diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 1418bc0661..ad4f5e9654 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -31,7 +31,7 @@ static char *wx_font_weight [] = { "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT", }; -extern wxFontNameDirectory wxTheFontNameDirectory; +extern wxFontNameDirectory *wxTheFontNameDirectory; //----------------------------------------------------------------------------- // wxFont @@ -116,13 +116,13 @@ wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight, if ((M_FONTDATA->m_faceName = (Face) ? copystring(Face) : (char*)NULL) ) { - M_FONTDATA->m_fontId = wxTheFontNameDirectory.FindOrCreateFontId( Face, FontIdOrFamily ); - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( FontIdOrFamily ); + M_FONTDATA->m_fontId = wxTheFontNameDirectory->FindOrCreateFontId( Face, FontIdOrFamily ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( FontIdOrFamily ); } else { M_FONTDATA->m_fontId = FontIdOrFamily; - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( FontIdOrFamily ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( FontIdOrFamily ); }; M_FONTDATA->m_style = Style; M_FONTDATA->m_weight = Weight; @@ -137,9 +137,9 @@ wxFont::wxFont(int PointSize, const char *Face, int Family, int Style, { m_refData = new wxFontRefData(); - M_FONTDATA->m_fontId = wxTheFontNameDirectory.FindOrCreateFontId( Face, Family ); + M_FONTDATA->m_fontId = wxTheFontNameDirectory->FindOrCreateFontId( Face, Family ); M_FONTDATA->m_faceName = (Face) ? copystring(Face) : (char*)NULL; - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( M_FONTDATA->m_fontId ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( M_FONTDATA->m_fontId ); M_FONTDATA->m_style = Style; M_FONTDATA->m_weight = Weight; M_FONTDATA->m_pointSize = PointSize; @@ -193,13 +193,13 @@ int wxFont::GetPointSize(void) const wxString wxFont::GetFaceString(void) const { - wxString s = wxTheFontNameDirectory.GetFontName( M_FONTDATA->m_fontId ); + wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId ); return s; }; wxString wxFont::GetFaceName(void) const { - wxString s = wxTheFontNameDirectory.GetFontName( M_FONTDATA->m_fontId ); + wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId ); return s; }; @@ -288,7 +288,7 @@ static GdkFont *wxLoadQueryFont(int point_size, int fontid, int style, int weight, bool WXUNUSED(underlined)) { char buffer[512]; - char *name = wxTheFontNameDirectory.GetScreenName( fontid, weight, style ); + char *name = wxTheFontNameDirectory->GetScreenName( fontid, weight, style ); if (!name) name = "-*-*-*-*-*-*-*-%d-*-*-*-*-*-*"; @@ -698,7 +698,6 @@ wxFontNameDirectory::wxFontNameDirectory(void) { table = new wxHashTable(wxKEY_INTEGER, 20); nextFontId = -1; - Initialize(); } wxFontNameDirectory::~wxFontNameDirectory() diff --git a/src/gtk/listbox.cpp b/src/gtk/listbox.cpp index ba55ab7bd7..ade85f7369 100644 --- a/src/gtk/listbox.cpp +++ b/src/gtk/listbox.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -51,6 +51,7 @@ static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox } event.SetEventObject( listbox ); + listbox->GetEventHandler()->ProcessEvent( event ); if (event.m_commandString) delete[] event.m_commandString ; }; diff --git a/src/gtk/mdi.cpp b/src/gtk/mdi.cpp index 1d8c9ffb62..66a39023cd 100644 --- a/src/gtk/mdi.cpp +++ b/src/gtk/mdi.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -26,7 +26,7 @@ extern wxList wxPendingDelete; //----------------------------------------------------------------------------- static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ +{ if ((win->m_x == alloc->x) && (win->m_y == alloc->y) && (win->m_width == alloc->width) && @@ -34,7 +34,7 @@ static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* { return; }; - + win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); }; @@ -94,22 +94,22 @@ bool wxMDIParentFrame::Create( wxWindow *parent, long style, const wxString& name ) { wxFrame::Create( parent, id, title, pos, size, style, name ); - + OnCreateClient(); - + return TRUE; }; void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height ) { wxFrame::GtkOnSize( x, y, width, height ); - + if (m_mdiMenuBar) { int x = 0; int y = 0; GetClientSize( &x, &y ); - m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); + m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); } }; @@ -122,7 +122,7 @@ void wxMDIParentFrame::SetMDIMenuBar( wxMenuBar *menu_bar ) int x = 0; int y = 0; GetClientSize( &x, &y ); - m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); + m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); m_mdiMenuBar->Show( TRUE ); } }; @@ -243,11 +243,11 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) { m_menuBar = menu_bar; - + if (m_menuBar) { wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - + if (m_menuBar->m_parent != this) { wxNode *node = m_menuBar->m_menus.First(); @@ -257,7 +257,7 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) SetInvokingWindow( menu, this ); node = node->Next(); }; - + m_menuBar->m_parent = mdi_frame; } mdi_frame->SetMDIMenuBar( m_menuBar ); @@ -302,20 +302,20 @@ wxMDIClientWindow::~wxMDIClientWindow(void) bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) { m_needParent = TRUE; - + PreCreation( parent, -1, wxPoint(10,10), wxSize(100,100), style, "wxMDIClientWindow" ); m_widget = gtk_notebook_new(); - + gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", GTK_SIGNAL_FUNC(gtk_page_change_callback), (gpointer)this ); - + gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - + PostCreation(); - + Show( TRUE ); - + return TRUE; }; @@ -326,25 +326,25 @@ void wxMDIClientWindow::AddChild( wxWindow *child ) wxFAIL_MSG("wxNotebook::AddChild: Child has to be wxMDIChildFrame"); return; }; - + m_children.Append( child ); - + wxString s; wxMDIChildFrame* mdi_child = (wxMDIChildFrame*) child; s = mdi_child->m_title; if (s.IsNull()) s = "MDI child"; - + GtkWidget *label_widget; label_widget = gtk_label_new( s ); gtk_misc_set_alignment( GTK_MISC(label_widget), 0.0, 0.5 ); - + gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); gtk_notebook_append_page( GTK_NOTEBOOK(m_widget), child->m_widget, label_widget ); - + mdi_child->m_page = (GtkNotebookPage*) (g_list_last(GTK_NOTEBOOK(m_widget)->children)->data); - + gtk_notebook_set_page( GTK_NOTEBOOK(m_widget), m_children.Number()-1 ); gtk_page_change_callback( NULL, mdi_child->m_page, 0, this ); diff --git a/src/gtk/radiobox.cpp b/src/gtk/radiobox.cpp index 9ff546a945..64a3648402 100644 --- a/src/gtk/radiobox.cpp +++ b/src/gtk/radiobox.cpp @@ -205,31 +205,38 @@ wxString wxRadioBox::GetLabel(void) const void wxRadioBox::SetLabel( const wxString& WXUNUSED(label) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; void wxRadioBox::SetLabel( int WXUNUSED(item), const wxString& WXUNUSED(label) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; wxString wxRadioBox::GetLabel( int WXUNUSED(item) ) const { + wxFAIL_MSG("wxRadioBox::GetLabel not implemented."); return ""; }; void wxRadioBox::Enable( bool WXUNUSED(enable) ) { + wxFAIL_MSG("wxRadioBox::Enable not implemented."); }; void wxRadioBox::Enable( int WXUNUSED(item), bool WXUNUSED(enable) ) { + wxFAIL_MSG("wxRadioBox::Enable not implemented."); }; void wxRadioBox::Show( int WXUNUSED(item), bool WXUNUSED(show) ) { + wxFAIL_MSG("wxRadioBox::Show not implemented."); }; wxString wxRadioBox::GetStringSelection(void) const @@ -275,5 +282,6 @@ int wxRadioBox::GetNumberOfRowsOrCols(void) const void wxRadioBox::SetNumberOfRowsOrCols( int WXUNUSED(n) ) { + wxFAIL_MSG("wxRadioBox::SetNumberOfRowsOrCols not implemented."); }; diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index dfcf1d81db..aa24393c68 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -58,6 +58,16 @@ wxColour *g_systemBtnShadowColour = NULL; wxColour *g_systemBtnHighlightColour = NULL; wxColour *g_systemHighlightColour = NULL; +wxFont *g_systemFont = NULL; + +void wxSystemSettings::Done() { + wxDELETE(g_systemBtnFaceColour); + wxDELETE(g_systemBtnShadowColour); + wxDELETE(g_systemBtnHighlightColour); + wxDELETE(g_systemHighlightColour); + wxDELETE(g_systemFont); +} + wxColour wxSystemSettings::GetSystemColour( int index ) { switch (index) @@ -141,8 +151,6 @@ wxColour wxSystemSettings::GetSystemColour( int index ) return *wxWHITE; }; -wxFont *g_systemFont = NULL; - wxFont wxSystemSettings::GetSystemFont( int index ) { switch (index) diff --git a/src/gtk/tbargtk.cpp b/src/gtk/tbargtk.cpp index 12dd7b66a7..3892f89d73 100644 --- a/src/gtk/tbargtk.cpp +++ b/src/gtk/tbargtk.cpp @@ -4,9 +4,9 @@ // Author: Robert Roebling // Modified by: // Created: 01/02/97 -// RCS-ID: +// RCS-ID: // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -20,8 +20,8 @@ //----------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject) - -wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, + +wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, const wxBitmap& bitmap1, const wxBitmap& bitmap2, bool toggle, wxObject *clientData, const wxString& shortHelpString, const wxString& longHelpString ) @@ -40,7 +40,7 @@ wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, m_deleteSecondBitmap = FALSE; }; -wxToolBarTool::~wxToolBarTool(void) +wxToolBarTool::~wxToolBarTool() { }; @@ -51,9 +51,9 @@ wxToolBarTool::~wxToolBarTool(void) static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) { if (!tool->m_enabled) return; - + if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; - + tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); }; @@ -64,43 +64,43 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) BEGIN_EVENT_TABLE(wxToolBar, wxControl) END_EVENT_TABLE() -wxToolBar::wxToolBar(void) +wxToolBar::wxToolBar() { }; -wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, +wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) { Create( parent, id, pos, size, style, name ); }; -wxToolBar::~wxToolBar(void) +wxToolBar::~wxToolBar() { }; -bool wxToolBar::Create( wxWindow *parent, wxWindowID id, +bool wxToolBar::Create( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) { m_needParent = TRUE; - + PreCreation( parent, id, pos, size, style, name ); m_tools.DeleteContents( TRUE ); - + m_widget = gtk_handle_box_new(); - + m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS ) ); - + gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) ); - + gtk_widget_show( GTK_WIDGET(m_toolbar) ); - + PostCreation(); - + Show( TRUE ); - + return TRUE; }; @@ -134,32 +134,32 @@ void wxToolBar::OnMouseEnter( int toolIndex ) GetEventHandler()->ProcessEvent(event); }; -wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, +wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, bool toggle, float WXUNUSED(xPos), float WXUNUSED(yPos), wxObject *clientData, const wxString& helpString1, const wxString& helpString2 ) { if (!bitmap.Ok()) return NULL; - - wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, toggle, + + wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, toggle, clientData, helpString1, helpString2 ); - + GdkPixmap *pixmap = bitmap.GetPixmap(); - + GdkBitmap *mask = NULL; if (bitmap.GetMask()) mask = bitmap.GetMask()->GetBitmap(); - + GtkWidget *tool_pixmap = gtk_pixmap_new( pixmap, mask ); gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - + GtkToolbarChildType ctype = GTK_TOOLBAR_CHILD_BUTTON; if (toggle) ctype = GTK_TOOLBAR_CHILD_TOGGLEBUTTON; - - gtk_toolbar_append_element( m_toolbar, + + gtk_toolbar_append_element( m_toolbar, ctype, NULL, NULL, helpString1, "", tool_pixmap, (GtkSignalFunc)gtk_toolbar_callback, (gpointer)tool ); - - m_tools.Append( tool ); - + + m_tools.Append( tool ); + return tool; }; diff --git a/src/gtk/utilsres.cpp b/src/gtk/utilsres.cpp index 24e7904c26..db55e4f964 100644 --- a/src/gtk/utilsres.cpp +++ b/src/gtk/utilsres.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -31,6 +31,7 @@ #include #include +#include "wx/log.h" //----------------------------------------------------------------------------- // constants @@ -48,7 +49,7 @@ // glabal data (data.cpp) //----------------------------------------------------------------------------- -extern wxList wxResourceCache; +extern wxResourceCache *wxTheResourceCache; extern XrmDatabase wxResourceDatabase; //----------------------------------------------------------------------------- @@ -58,21 +59,21 @@ extern XrmDatabase wxResourceDatabase; static char *GetResourcePath(char *buf, char *name, bool create) { if (create && FileExists(name)) { - strcpy(buf, name); - return buf; // Exists so ... + strcpy(buf, name); + return buf; // Exists so ... } if (*name == '/') - strcpy(buf, name); + strcpy(buf, name); else { - // Put in standard place for resource files if not absolute - strcpy(buf, DEFAULT_XRESOURCE_DIR); - strcat(buf, "/"); - strcat(buf, FileNameFromPath(name)); + // Put in standard place for resource files if not absolute + strcpy(buf, DEFAULT_XRESOURCE_DIR); + strcat(buf, "/"); + strcat(buf, FileNameFromPath(name)); } if (create) { - // Touch the file to create it - FILE *fd = fopen(buf, "w"); - if (fd) fclose(fd); + // Touch the file to create it + FILE *fd = fopen(buf, "w"); + if (fd) fclose(fd); } return buf; } @@ -83,27 +84,27 @@ static char *GetResourcePath(char *buf, char *name, bool create) static char *GetIniFile(char *dest, const char *filename) { char *home = NULL; - if (filename && wxIsAbsolutePath(filename)) + if (filename && wxIsAbsolutePath(filename)) { strcpy(dest, filename); - } + } else { - if ((home = wxGetUserHome(wxString())) != NULL) + if ((home = wxGetUserHome(wxString())) != NULL) { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); - if (filename == NULL) - { - if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; - } - else - if (*filename != '.') strcat(dest, "."); - strcat(dest, filename); + strcpy(dest, home); + if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); + if (filename == NULL) + { + if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; + } + else + if (*filename != '.') strcat(dest, "."); + strcat(dest, filename); } - else + else { - dest[0] = '\0'; + dest[0] = '\0'; } } return dest; @@ -121,38 +122,38 @@ static void wxXMergeDatabases(void) (void)strcpy(name, "/usr/lib/X11/app-defaults/"); (void)strcat(name, classname ? classname : "wxWindows"); - // Get application defaults file, if any + // Get application defaults file, if any if ((applicationDB = XrmGetFileDatabase(name))) - (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); + (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); // Merge server defaults, created by xrdb, loaded as a property of the root // window when the server initializes and loaded into the display // structure on XOpenDisplay; // if not defined, use .Xdefaults if (XResourceManagerString(GDK_DISPLAY()) != NULL) { - serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); + serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); } else { - (void)GetIniFile(filename, NULL); - serverDB = XrmGetFileDatabase(filename); + (void)GetIniFile(filename, NULL); + serverDB = XrmGetFileDatabase(filename); } if (serverDB) - XrmMergeDatabases(serverDB, &wxResourceDatabase); + XrmMergeDatabases(serverDB, &wxResourceDatabase); // Open XENVIRONMENT file, or if not defined, the .Xdefaults, // and merge into existing database if ((environment = getenv("XENVIRONMENT")) == NULL) { - size_t len; - environment = GetIniFile(filename, NULL); - len = strlen(environment); + size_t len; + environment = GetIniFile(filename, NULL); + len = strlen(environment); #if !defined(SVR4) || defined(__sgi) - (void)gethostname(environment + len, 1024 - len); + (void)gethostname(environment + len, 1024 - len); #else - (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); + (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); #endif } if ((homeDB = XrmGetFileDatabase(environment))) - XrmMergeDatabases(homeDB, &wxResourceDatabase); + XrmMergeDatabases(homeDB, &wxResourceDatabase); } //----------------------------------------------------------------------------- @@ -163,31 +164,32 @@ void wxFlushResources(void) { char nameBuffer[512]; - wxNode *node = wxResourceCache.First(); + wxNode *node = wxTheResourceCache->First(); while (node) { - char *file = node->key.string; - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase)node->Data(); - XrmPutFileDatabase(database, nameBuffer); - XrmDestroyDatabase(database); - wxNode *next = node->Next(); - delete node; - node = next; + char *file = node->key.string; + // If file doesn't exist, create it first. + (void)GetResourcePath(nameBuffer, file, TRUE); + + XrmDatabase database = (XrmDatabase)node->Data(); + XrmPutFileDatabase(database, nameBuffer); + XrmDestroyDatabase(database); + wxNode *next = node->Next(); +// delete node; + node = next; } } void wxDeleteResources(const char *file) { + wxLogTrace(wxTraceResAlloc, "Delete: Number = %d", wxTheResourceCache->Number()); char buffer[500]; (void)GetIniFile(buffer, file); - wxNode *node = wxResourceCache.Find(buffer); + wxNode *node = wxTheResourceCache->Find(buffer); if (node) { - XrmDatabase database = (XrmDatabase)node->Data(); - XrmDestroyDatabase(database); - delete node; + XrmDatabase database = (XrmDatabase)node->Data(); + XrmDestroyDatabase(database); +// delete node; } } @@ -204,12 +206,13 @@ bool wxWriteResource(const wxString& section, const wxString& entry, const wxStr (void)GetIniFile(buffer, file); XrmDatabase database; - wxNode *node = wxResourceCache.Find(buffer); + wxNode *node = wxTheResourceCache->Find(buffer); if (node) - database = (XrmDatabase)node->Data(); + database = (XrmDatabase)node->Data(); else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); + database = XrmGetFileDatabase(buffer); + wxLogTrace(wxTraceResAlloc, "Write: Number = %d", wxTheResourceCache->Number()); + wxTheResourceCache->Append(buffer, (wxObject *)database); } char resName[300]; strcpy(resName, !section.IsNull() ? WXSTRINGCAST section : "wxWindows"); @@ -243,24 +246,25 @@ bool wxWriteResource(const wxString& section, const wxString& entry, int value, bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file ) { if (!wxResourceDatabase) - wxXMergeDatabases(); + wxXMergeDatabases(); XrmDatabase database; if (file) { - char buffer[500]; - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void)GetIniFile(buffer, file); - - wxNode *node = wxResourceCache.Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); - } + char buffer[500]; + // Is this right? Trying to get it to look in the user's + // home directory instead of current directory -- JACS + (void)GetIniFile(buffer, file); + + wxNode *node = wxTheResourceCache->Find(buffer); + if (node) + database = (XrmDatabase)node->Data(); + else { + database = XrmGetFileDatabase(buffer); + wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number()); + wxTheResourceCache->Append(buffer, (wxObject *)database); + } } else - database = wxResourceDatabase; + database = wxResourceDatabase; XrmValue xvalue; char *str_type[20]; @@ -272,15 +276,15 @@ bool wxGetResource(const wxString& section, const wxString& entry, char **value, bool success = XrmGetResource(database, buf, "*", str_type, &xvalue); // Try different combinations of upper/lower case, just in case... if (!success) { - buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); - success = XrmGetResource(database, buf, "*", str_type, &xvalue); + buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); + success = XrmGetResource(database, buf, "*", str_type, &xvalue); } if (success) { - if (*value) - delete[] *value; - *value = new char[xvalue.size + 1]; - strncpy(*value, xvalue.addr, (int)xvalue.size); - return TRUE; + if (*value) + delete[] *value; + *value = new char[xvalue.size + 1]; + strncpy(*value, xvalue.addr, (int)xvalue.size); + return TRUE; } return FALSE; }; @@ -290,11 +294,11 @@ bool wxGetResource(const wxString& section, const wxString& entry, float *value, char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - *value = (float)strtod(s, NULL); - delete[]s; - return TRUE; + *value = (float)strtod(s, NULL); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file ) @@ -302,11 +306,11 @@ bool wxGetResource(const wxString& section, const wxString& entry, long *value, char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - *value = strtol(s, NULL, 10); - delete[]s; - return TRUE; + *value = strtol(s, NULL, 10); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file ) @@ -314,19 +318,19 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int)strtol(s, NULL, 10); - delete[]s; - return TRUE; + // Handle True, False here + // True, Yes, Enables, Set or Activated + if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') + *value = TRUE; + // False, No, Disabled, Reset, Cleared, Deactivated + else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') + *value = FALSE; + // Handle as Integer + else + *value = (int)strtol(s, NULL, 10); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp index 8cb3065191..d65fec1d09 100644 --- a/src/gtk/window.cpp +++ b/src/gtk/window.cpp @@ -753,6 +753,7 @@ wxWindow::wxWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxString &name ) { + m_cursor = NULL; Create( parent, id, pos, size, style, name ); }; @@ -864,7 +865,7 @@ wxWindow::~wxWindow(void) if (m_widget) gtk_widget_destroy( m_widget ); -// delete m_cursor; + wxDELETE(m_cursor); DeleteRelatedConstraints(); if (m_constraints) @@ -918,7 +919,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id, m_windowValidator = NULL; m_windowId = id; m_sizeSet = FALSE; - m_cursor = new wxCursor( wxCURSOR_ARROW ); + if (m_cursor == NULL) + m_cursor = new wxCursor( wxCURSOR_ARROW ); m_font = *wxSWISS_FONT; m_backgroundColour = wxWHITE; m_foregroundColour = wxBLACK; @@ -1561,7 +1563,11 @@ wxWindowID wxWindow::GetId(void) void wxWindow::SetCursor( const wxCursor &cursor ) { - if (*m_cursor == cursor) return; + wxASSERT(m_cursor != NULL); + + if (m_cursor != NULL) + if (*m_cursor == cursor) + return; (*m_cursor) = cursor; if (m_widget->window) gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() ); diff --git a/src/gtk1/app.cpp b/src/gtk1/app.cpp index 2317ad5320..74f5e13cee 100644 --- a/src/gtk1/app.cpp +++ b/src/gtk1/app.cpp @@ -19,6 +19,8 @@ #include "wx/intl.h" #include "wx/log.h" #include "wx/memory.h" +#include "wx/font.h" +#include "wx/settings.h" #include "unistd.h" @@ -34,6 +36,7 @@ wxApp *wxTheApp = NULL; wxAppInitializerFunction wxApp::m_appInitFn = (wxAppInitializerFunction) NULL; extern wxList wxPendingDelete; +extern wxResourceCache *wxTheResourceCache; //----------------------------------------------------------------------------- // local functions @@ -242,9 +245,16 @@ void wxApp::CommonInit(void) (void) wxGetResource("wxWindows", "OsVersion", &wxOsVersion); #endif */ + wxSystemSettings::Init(); + wxTheResourceCache = new wxResourceCache(wxKEY_STRING); + + wxTheFontNameDirectory = new wxFontNameDirectory; + wxTheFontNameDirectory->Initialize(); wxTheColourDatabase = new wxColourDatabase(wxKEY_STRING); wxTheColourDatabase->Initialize(); + + wxInitializeStockLists(); wxInitializeStockObjects(); // For PostScript printing @@ -261,14 +271,24 @@ void wxApp::CommonInit(void) g_globalCursor = new wxCursor; */ - wxInitializeStockObjects(); +// wxInitializeStockObjects(); }; void wxApp::CommonCleanUp(void) { + wxDELETE(wxTheColourDatabase); + wxDELETE(wxThePrintPaperDatabase); + wxDELETE(wxThePrintSetupData); + wxDELETE(wxTheFontNameDirectory); wxDeleteStockObjects(); wxFlushResources(); + + wxDELETE(wxTheResourceCache); + + wxDeleteStockLists(); + + wxSystemSettings::Done(); }; wxLog *wxApp::CreateLogTarget() @@ -311,8 +331,6 @@ int wxEntry( int argc, char *argv[] ) wxObject *test_app = app_ini(); wxTheApp = (wxApp*) test_app; - -// wxTheApp = (wxApp*)( app_ini() ); }; if (!wxTheApp) @@ -321,8 +339,6 @@ int wxEntry( int argc, char *argv[] ) return 0; }; -// printf( "Programmstart.\n" ); - wxTheApp->argc = argc; wxTheApp->argv = argv; @@ -359,6 +375,8 @@ int wxEntry( int argc, char *argv[] ) wxTheApp->OnExit(); wxApp::CommonCleanUp(); + + wxDELETE(wxTheApp); #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT // At this point we want to check if there are any memory diff --git a/src/gtk1/data.cpp b/src/gtk1/data.cpp index 42facd4ae8..826d9102c7 100644 --- a/src/gtk1/data.cpp +++ b/src/gtk1/data.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ #include #include -wxList wxResourceCache(wxKEY_STRING); +wxResourceCache *wxTheResourceCache = NULL; XrmDatabase wxResourceDatabase; // Useful buffer, initialized in wxCommonInit @@ -64,7 +64,7 @@ wxBitmapList *wxTheBitmapList = NULL; // X only font names -wxFontNameDirectory wxTheFontNameDirectory; +wxFontNameDirectory *wxTheFontNameDirectory; // Stock objects wxFont *wxNORMAL_FONT; @@ -398,7 +398,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar95, wxToolBarBase) 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() @@ -548,17 +548,16 @@ 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_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) - EVT_IDLE(wxFrame::OnIdle) - EVT_CLOSE(wxFrame::OnCloseWindow) + EVT_SIZE(wxFrame::OnSize) + EVT_MENU_HIGHLIGHT_ALL(wxFrame::OnMenuHighlight) + EVT_SYS_COLOUR_CHANGED(wxFrame::OnSysColourChanged) + EVT_IDLE(wxFrame::OnIdle) + EVT_CLOSE(wxFrame::OnCloseWindow) END_EVENT_TABLE() BEGIN_EVENT_TABLE(wxDialog, wxPanel) @@ -589,9 +588,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 wx_msw @@ -613,32 +612,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 wx_msw 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) @@ -650,28 +649,28 @@ END_EVENT_TABLE() #if !defined(wx_msw) || USE_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) @@ -683,25 +682,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 diff --git a/src/gtk1/filedlg.cpp b/src/gtk1/filedlg.cpp index b4d0ed1592..a555c487be 100644 --- a/src/gtk1/filedlg.cpp +++ b/src/gtk1/filedlg.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -48,12 +48,12 @@ void gtk_filedialog_cancel_callback( GtkWidget *WXUNUSED(widget), gpointer data IMPLEMENT_DYNAMIC_CLASS(wxFileDialog,wxDialog) wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, - const wxString& defaultDir, const wxString& defaultFileName, - const wxString& wildCard, + const wxString& defaultDir, const wxString& defaultFileName, + const wxString& wildCard, long style, const wxPoint& pos ) { m_needParent = FALSE; - + PreCreation( parent, -1, pos, wxDefaultSize, style | wxDIALOG_MODAL, "filedialog" ); m_message = message; m_path = ""; @@ -62,7 +62,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_wildCard = wildCard; m_dialogStyle = style; m_filterIndex = 1; - + m_widget = gtk_file_selection_new( "File selection" ); int x = (gdk_screen_width () - 400) / 2; @@ -76,11 +76,11 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message, m_path.Append(m_fileName); if(m_path.Length()>1) gtk_file_selection_set_filename(sel,m_path); - - gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", + + gtk_signal_connect( GTK_OBJECT(sel->ok_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_ok_callback), (gpointer*)this ); - gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", + gtk_signal_connect( GTK_OBJECT(sel->cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_filedialog_cancel_callback), (gpointer*)this ); }; @@ -95,48 +95,48 @@ int wxFileDialog::ShowModal(void) }; return ret; }; - + char *wxFileSelector(const char *title, const char *defaultDir, const char *defaultFileName, const char *defaultExtension, const char *filter, int flags, wxWindow *parent, int x, int y) { - wxString filter2(""); - if ( defaultExtension && !filter ) - filter2 = wxString("*.") + wxString(defaultExtension) ; - else if ( filter ) - filter2 = filter; - - wxString defaultDirString; - if (defaultDir) - defaultDirString = defaultDir; - else - defaultDirString = ""; - - wxString defaultFilenameString; - if (defaultFileName) - defaultFilenameString = defaultFileName; - else - defaultFilenameString = ""; - - wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, - filter2, flags, wxPoint(x, y)); - - if ( fileDialog.ShowModal() == wxID_OK ) - { - strcpy(wxBuffer, (const char *)fileDialog.GetPath()); - return wxBuffer; - } - else - return NULL; + wxString filter2(""); + if ( defaultExtension && !filter ) + filter2 = wxString("*.") + wxString(defaultExtension) ; + else if ( filter ) + filter2 = filter; + + wxString defaultDirString; + if (defaultDir) + defaultDirString = defaultDir; + else + defaultDirString = ""; + + wxString defaultFilenameString; + if (defaultFileName) + defaultFilenameString = defaultFileName; + else + defaultFilenameString = ""; + + wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, + filter2, flags, wxPoint(x, y)); + + if ( fileDialog.ShowModal() == wxID_OK ) + { + strcpy(wxBuffer, (const char *)fileDialog.GetPath()); + return wxBuffer; + } + else + return NULL; }; -char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name, +char* wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent ) { char *ext = (char *)extension; - + char prompt[50]; wxString str = _("Load %s file"); sprintf(prompt, str, what); @@ -148,11 +148,11 @@ char* wxLoadFileSelector(const char *what, const char *extension, const char *de return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent); }; -char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name, +char* wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent ) { char *ext = (char *)extension; - + char prompt[50]; wxString str = _("Save %s file"); sprintf(prompt, str, what); diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index 1418bc0661..ad4f5e9654 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -31,7 +31,7 @@ static char *wx_font_weight [] = { "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT", }; -extern wxFontNameDirectory wxTheFontNameDirectory; +extern wxFontNameDirectory *wxTheFontNameDirectory; //----------------------------------------------------------------------------- // wxFont @@ -116,13 +116,13 @@ wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight, if ((M_FONTDATA->m_faceName = (Face) ? copystring(Face) : (char*)NULL) ) { - M_FONTDATA->m_fontId = wxTheFontNameDirectory.FindOrCreateFontId( Face, FontIdOrFamily ); - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( FontIdOrFamily ); + M_FONTDATA->m_fontId = wxTheFontNameDirectory->FindOrCreateFontId( Face, FontIdOrFamily ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( FontIdOrFamily ); } else { M_FONTDATA->m_fontId = FontIdOrFamily; - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( FontIdOrFamily ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( FontIdOrFamily ); }; M_FONTDATA->m_style = Style; M_FONTDATA->m_weight = Weight; @@ -137,9 +137,9 @@ wxFont::wxFont(int PointSize, const char *Face, int Family, int Style, { m_refData = new wxFontRefData(); - M_FONTDATA->m_fontId = wxTheFontNameDirectory.FindOrCreateFontId( Face, Family ); + M_FONTDATA->m_fontId = wxTheFontNameDirectory->FindOrCreateFontId( Face, Family ); M_FONTDATA->m_faceName = (Face) ? copystring(Face) : (char*)NULL; - M_FONTDATA->m_family = wxTheFontNameDirectory.GetFamily( M_FONTDATA->m_fontId ); + M_FONTDATA->m_family = wxTheFontNameDirectory->GetFamily( M_FONTDATA->m_fontId ); M_FONTDATA->m_style = Style; M_FONTDATA->m_weight = Weight; M_FONTDATA->m_pointSize = PointSize; @@ -193,13 +193,13 @@ int wxFont::GetPointSize(void) const wxString wxFont::GetFaceString(void) const { - wxString s = wxTheFontNameDirectory.GetFontName( M_FONTDATA->m_fontId ); + wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId ); return s; }; wxString wxFont::GetFaceName(void) const { - wxString s = wxTheFontNameDirectory.GetFontName( M_FONTDATA->m_fontId ); + wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId ); return s; }; @@ -288,7 +288,7 @@ static GdkFont *wxLoadQueryFont(int point_size, int fontid, int style, int weight, bool WXUNUSED(underlined)) { char buffer[512]; - char *name = wxTheFontNameDirectory.GetScreenName( fontid, weight, style ); + char *name = wxTheFontNameDirectory->GetScreenName( fontid, weight, style ); if (!name) name = "-*-*-*-*-*-*-*-%d-*-*-*-*-*-*"; @@ -698,7 +698,6 @@ wxFontNameDirectory::wxFontNameDirectory(void) { table = new wxHashTable(wxKEY_INTEGER, 20); nextFontId = -1; - Initialize(); } wxFontNameDirectory::~wxFontNameDirectory() diff --git a/src/gtk1/listbox.cpp b/src/gtk1/listbox.cpp index ba55ab7bd7..ade85f7369 100644 --- a/src/gtk1/listbox.cpp +++ b/src/gtk1/listbox.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -51,6 +51,7 @@ static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox } event.SetEventObject( listbox ); + listbox->GetEventHandler()->ProcessEvent( event ); if (event.m_commandString) delete[] event.m_commandString ; }; diff --git a/src/gtk1/mdi.cpp b/src/gtk1/mdi.cpp index 1d8c9ffb62..66a39023cd 100644 --- a/src/gtk1/mdi.cpp +++ b/src/gtk1/mdi.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -26,7 +26,7 @@ extern wxList wxPendingDelete; //----------------------------------------------------------------------------- static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* alloc, wxWindow *win ) -{ +{ if ((win->m_x == alloc->x) && (win->m_y == alloc->y) && (win->m_width == alloc->width) && @@ -34,7 +34,7 @@ static void gtk_page_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation* { return; }; - + win->SetSize( alloc->x, alloc->y, alloc->width, alloc->height ); }; @@ -94,22 +94,22 @@ bool wxMDIParentFrame::Create( wxWindow *parent, long style, const wxString& name ) { wxFrame::Create( parent, id, title, pos, size, style, name ); - + OnCreateClient(); - + return TRUE; }; void wxMDIParentFrame::GtkOnSize( int x, int y, int width, int height ) { wxFrame::GtkOnSize( x, y, width, height ); - + if (m_mdiMenuBar) { int x = 0; int y = 0; GetClientSize( &x, &y ); - m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); + m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); } }; @@ -122,7 +122,7 @@ void wxMDIParentFrame::SetMDIMenuBar( wxMenuBar *menu_bar ) int x = 0; int y = 0; GetClientSize( &x, &y ); - m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); + m_mdiMenuBar->SetSize( 1, 1, x-2, 26 ); m_mdiMenuBar->Show( TRUE ); } }; @@ -243,11 +243,11 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win ) void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) { m_menuBar = menu_bar; - + if (m_menuBar) { wxMDIParentFrame *mdi_frame = (wxMDIParentFrame*)m_parent->m_parent; - + if (m_menuBar->m_parent != this) { wxNode *node = m_menuBar->m_menus.First(); @@ -257,7 +257,7 @@ void wxMDIChildFrame::SetMenuBar( wxMenuBar *menu_bar ) SetInvokingWindow( menu, this ); node = node->Next(); }; - + m_menuBar->m_parent = mdi_frame; } mdi_frame->SetMDIMenuBar( m_menuBar ); @@ -302,20 +302,20 @@ wxMDIClientWindow::~wxMDIClientWindow(void) bool wxMDIClientWindow::CreateClient( wxMDIParentFrame *parent, long style ) { m_needParent = TRUE; - + PreCreation( parent, -1, wxPoint(10,10), wxSize(100,100), style, "wxMDIClientWindow" ); m_widget = gtk_notebook_new(); - + gtk_signal_connect( GTK_OBJECT(m_widget), "switch_page", GTK_SIGNAL_FUNC(gtk_page_change_callback), (gpointer)this ); - + gtk_notebook_set_scrollable( GTK_NOTEBOOK(m_widget), 1 ); - + PostCreation(); - + Show( TRUE ); - + return TRUE; }; @@ -326,25 +326,25 @@ void wxMDIClientWindow::AddChild( wxWindow *child ) wxFAIL_MSG("wxNotebook::AddChild: Child has to be wxMDIChildFrame"); return; }; - + m_children.Append( child ); - + wxString s; wxMDIChildFrame* mdi_child = (wxMDIChildFrame*) child; s = mdi_child->m_title; if (s.IsNull()) s = "MDI child"; - + GtkWidget *label_widget; label_widget = gtk_label_new( s ); gtk_misc_set_alignment( GTK_MISC(label_widget), 0.0, 0.5 ); - + gtk_signal_connect( GTK_OBJECT(child->m_widget), "size_allocate", GTK_SIGNAL_FUNC(gtk_page_size_callback), (gpointer)child ); gtk_notebook_append_page( GTK_NOTEBOOK(m_widget), child->m_widget, label_widget ); - + mdi_child->m_page = (GtkNotebookPage*) (g_list_last(GTK_NOTEBOOK(m_widget)->children)->data); - + gtk_notebook_set_page( GTK_NOTEBOOK(m_widget), m_children.Number()-1 ); gtk_page_change_callback( NULL, mdi_child->m_page, 0, this ); diff --git a/src/gtk1/radiobox.cpp b/src/gtk1/radiobox.cpp index 9ff546a945..64a3648402 100644 --- a/src/gtk1/radiobox.cpp +++ b/src/gtk1/radiobox.cpp @@ -205,31 +205,38 @@ wxString wxRadioBox::GetLabel(void) const void wxRadioBox::SetLabel( const wxString& WXUNUSED(label) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; void wxRadioBox::SetLabel( int WXUNUSED(item), const wxString& WXUNUSED(label) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; void wxRadioBox::SetLabel( int WXUNUSED(item), wxBitmap *WXUNUSED(bitmap) ) { + wxFAIL_MSG("wxRadioBox::SetLabel not implemented."); }; wxString wxRadioBox::GetLabel( int WXUNUSED(item) ) const { + wxFAIL_MSG("wxRadioBox::GetLabel not implemented."); return ""; }; void wxRadioBox::Enable( bool WXUNUSED(enable) ) { + wxFAIL_MSG("wxRadioBox::Enable not implemented."); }; void wxRadioBox::Enable( int WXUNUSED(item), bool WXUNUSED(enable) ) { + wxFAIL_MSG("wxRadioBox::Enable not implemented."); }; void wxRadioBox::Show( int WXUNUSED(item), bool WXUNUSED(show) ) { + wxFAIL_MSG("wxRadioBox::Show not implemented."); }; wxString wxRadioBox::GetStringSelection(void) const @@ -275,5 +282,6 @@ int wxRadioBox::GetNumberOfRowsOrCols(void) const void wxRadioBox::SetNumberOfRowsOrCols( int WXUNUSED(n) ) { + wxFAIL_MSG("wxRadioBox::SetNumberOfRowsOrCols not implemented."); }; diff --git a/src/gtk1/settings.cpp b/src/gtk1/settings.cpp index dfcf1d81db..aa24393c68 100644 --- a/src/gtk1/settings.cpp +++ b/src/gtk1/settings.cpp @@ -58,6 +58,16 @@ wxColour *g_systemBtnShadowColour = NULL; wxColour *g_systemBtnHighlightColour = NULL; wxColour *g_systemHighlightColour = NULL; +wxFont *g_systemFont = NULL; + +void wxSystemSettings::Done() { + wxDELETE(g_systemBtnFaceColour); + wxDELETE(g_systemBtnShadowColour); + wxDELETE(g_systemBtnHighlightColour); + wxDELETE(g_systemHighlightColour); + wxDELETE(g_systemFont); +} + wxColour wxSystemSettings::GetSystemColour( int index ) { switch (index) @@ -141,8 +151,6 @@ wxColour wxSystemSettings::GetSystemColour( int index ) return *wxWHITE; }; -wxFont *g_systemFont = NULL; - wxFont wxSystemSettings::GetSystemFont( int index ) { switch (index) diff --git a/src/gtk1/tbargtk.cpp b/src/gtk1/tbargtk.cpp index 12dd7b66a7..3892f89d73 100644 --- a/src/gtk1/tbargtk.cpp +++ b/src/gtk1/tbargtk.cpp @@ -4,9 +4,9 @@ // Author: Robert Roebling // Modified by: // Created: 01/02/97 -// RCS-ID: +// RCS-ID: // Copyright: (c) Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -20,8 +20,8 @@ //----------------------------------------------------------------------------- IMPLEMENT_DYNAMIC_CLASS(wxToolBarTool,wxObject) - -wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, + +wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, const wxBitmap& bitmap1, const wxBitmap& bitmap2, bool toggle, wxObject *clientData, const wxString& shortHelpString, const wxString& longHelpString ) @@ -40,7 +40,7 @@ wxToolBarTool::wxToolBarTool( wxToolBar *owner, int theIndex, m_deleteSecondBitmap = FALSE; }; -wxToolBarTool::~wxToolBarTool(void) +wxToolBarTool::~wxToolBarTool() { }; @@ -51,9 +51,9 @@ wxToolBarTool::~wxToolBarTool(void) static void gtk_toolbar_callback( GtkWidget *WXUNUSED(widget), wxToolBarTool *tool ) { if (!tool->m_enabled) return; - + if (tool->m_isToggle) tool->m_toggleState = !tool->m_toggleState; - + tool->m_owner->OnLeftClick( tool->m_index, tool->m_toggleState ); }; @@ -64,43 +64,43 @@ IMPLEMENT_DYNAMIC_CLASS(wxToolBar,wxControl) BEGIN_EVENT_TABLE(wxToolBar, wxControl) END_EVENT_TABLE() -wxToolBar::wxToolBar(void) +wxToolBar::wxToolBar() { }; -wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, +wxToolBar::wxToolBar( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) { Create( parent, id, pos, size, style, name ); }; -wxToolBar::~wxToolBar(void) +wxToolBar::~wxToolBar() { }; -bool wxToolBar::Create( wxWindow *parent, wxWindowID id, +bool wxToolBar::Create( wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name ) { m_needParent = TRUE; - + PreCreation( parent, id, pos, size, style, name ); m_tools.DeleteContents( TRUE ); - + m_widget = gtk_handle_box_new(); - + m_toolbar = GTK_TOOLBAR( gtk_toolbar_new( GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS ) ); - + gtk_container_add( GTK_CONTAINER(m_widget), GTK_WIDGET(m_toolbar) ); - + gtk_widget_show( GTK_WIDGET(m_toolbar) ); - + PostCreation(); - + Show( TRUE ); - + return TRUE; }; @@ -134,32 +134,32 @@ void wxToolBar::OnMouseEnter( int toolIndex ) GetEventHandler()->ProcessEvent(event); }; -wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, +wxToolBarTool *wxToolBar::AddTool( int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap, bool toggle, float WXUNUSED(xPos), float WXUNUSED(yPos), wxObject *clientData, const wxString& helpString1, const wxString& helpString2 ) { if (!bitmap.Ok()) return NULL; - - wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, toggle, + + wxToolBarTool *tool = new wxToolBarTool( this, toolIndex, bitmap, pushedBitmap, toggle, clientData, helpString1, helpString2 ); - + GdkPixmap *pixmap = bitmap.GetPixmap(); - + GdkBitmap *mask = NULL; if (bitmap.GetMask()) mask = bitmap.GetMask()->GetBitmap(); - + GtkWidget *tool_pixmap = gtk_pixmap_new( pixmap, mask ); gtk_misc_set_alignment( GTK_MISC(tool_pixmap), 0.5, 0.5 ); - + GtkToolbarChildType ctype = GTK_TOOLBAR_CHILD_BUTTON; if (toggle) ctype = GTK_TOOLBAR_CHILD_TOGGLEBUTTON; - - gtk_toolbar_append_element( m_toolbar, + + gtk_toolbar_append_element( m_toolbar, ctype, NULL, NULL, helpString1, "", tool_pixmap, (GtkSignalFunc)gtk_toolbar_callback, (gpointer)tool ); - - m_tools.Append( tool ); - + + m_tools.Append( tool ); + return tool; }; diff --git a/src/gtk1/utilsres.cpp b/src/gtk1/utilsres.cpp index 24e7904c26..db55e4f964 100644 --- a/src/gtk1/utilsres.cpp +++ b/src/gtk1/utilsres.cpp @@ -5,7 +5,7 @@ // Created: 01/02/97 // Id: // Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -31,6 +31,7 @@ #include #include +#include "wx/log.h" //----------------------------------------------------------------------------- // constants @@ -48,7 +49,7 @@ // glabal data (data.cpp) //----------------------------------------------------------------------------- -extern wxList wxResourceCache; +extern wxResourceCache *wxTheResourceCache; extern XrmDatabase wxResourceDatabase; //----------------------------------------------------------------------------- @@ -58,21 +59,21 @@ extern XrmDatabase wxResourceDatabase; static char *GetResourcePath(char *buf, char *name, bool create) { if (create && FileExists(name)) { - strcpy(buf, name); - return buf; // Exists so ... + strcpy(buf, name); + return buf; // Exists so ... } if (*name == '/') - strcpy(buf, name); + strcpy(buf, name); else { - // Put in standard place for resource files if not absolute - strcpy(buf, DEFAULT_XRESOURCE_DIR); - strcat(buf, "/"); - strcat(buf, FileNameFromPath(name)); + // Put in standard place for resource files if not absolute + strcpy(buf, DEFAULT_XRESOURCE_DIR); + strcat(buf, "/"); + strcat(buf, FileNameFromPath(name)); } if (create) { - // Touch the file to create it - FILE *fd = fopen(buf, "w"); - if (fd) fclose(fd); + // Touch the file to create it + FILE *fd = fopen(buf, "w"); + if (fd) fclose(fd); } return buf; } @@ -83,27 +84,27 @@ static char *GetResourcePath(char *buf, char *name, bool create) static char *GetIniFile(char *dest, const char *filename) { char *home = NULL; - if (filename && wxIsAbsolutePath(filename)) + if (filename && wxIsAbsolutePath(filename)) { strcpy(dest, filename); - } + } else { - if ((home = wxGetUserHome(wxString())) != NULL) + if ((home = wxGetUserHome(wxString())) != NULL) { - strcpy(dest, home); - if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); - if (filename == NULL) - { - if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; - } - else - if (*filename != '.') strcat(dest, "."); - strcat(dest, filename); + strcpy(dest, home); + if (dest[strlen(dest) - 1] != '/') strcat(dest, "/"); + if (filename == NULL) + { + if ((filename = getenv("XENVIRONMENT")) == NULL) filename = ".Xdefaults"; + } + else + if (*filename != '.') strcat(dest, "."); + strcat(dest, filename); } - else + else { - dest[0] = '\0'; + dest[0] = '\0'; } } return dest; @@ -121,38 +122,38 @@ static void wxXMergeDatabases(void) (void)strcpy(name, "/usr/lib/X11/app-defaults/"); (void)strcat(name, classname ? classname : "wxWindows"); - // Get application defaults file, if any + // Get application defaults file, if any if ((applicationDB = XrmGetFileDatabase(name))) - (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); + (void)XrmMergeDatabases(applicationDB, &wxResourceDatabase); // Merge server defaults, created by xrdb, loaded as a property of the root // window when the server initializes and loaded into the display // structure on XOpenDisplay; // if not defined, use .Xdefaults if (XResourceManagerString(GDK_DISPLAY()) != NULL) { - serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); + serverDB = XrmGetStringDatabase(XResourceManagerString(GDK_DISPLAY())); } else { - (void)GetIniFile(filename, NULL); - serverDB = XrmGetFileDatabase(filename); + (void)GetIniFile(filename, NULL); + serverDB = XrmGetFileDatabase(filename); } if (serverDB) - XrmMergeDatabases(serverDB, &wxResourceDatabase); + XrmMergeDatabases(serverDB, &wxResourceDatabase); // Open XENVIRONMENT file, or if not defined, the .Xdefaults, // and merge into existing database if ((environment = getenv("XENVIRONMENT")) == NULL) { - size_t len; - environment = GetIniFile(filename, NULL); - len = strlen(environment); + size_t len; + environment = GetIniFile(filename, NULL); + len = strlen(environment); #if !defined(SVR4) || defined(__sgi) - (void)gethostname(environment + len, 1024 - len); + (void)gethostname(environment + len, 1024 - len); #else - (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); + (void)sysinfo(SI_HOSTNAME, environment + len, 1024 - len); #endif } if ((homeDB = XrmGetFileDatabase(environment))) - XrmMergeDatabases(homeDB, &wxResourceDatabase); + XrmMergeDatabases(homeDB, &wxResourceDatabase); } //----------------------------------------------------------------------------- @@ -163,31 +164,32 @@ void wxFlushResources(void) { char nameBuffer[512]; - wxNode *node = wxResourceCache.First(); + wxNode *node = wxTheResourceCache->First(); while (node) { - char *file = node->key.string; - // If file doesn't exist, create it first. - (void)GetResourcePath(nameBuffer, file, TRUE); - - XrmDatabase database = (XrmDatabase)node->Data(); - XrmPutFileDatabase(database, nameBuffer); - XrmDestroyDatabase(database); - wxNode *next = node->Next(); - delete node; - node = next; + char *file = node->key.string; + // If file doesn't exist, create it first. + (void)GetResourcePath(nameBuffer, file, TRUE); + + XrmDatabase database = (XrmDatabase)node->Data(); + XrmPutFileDatabase(database, nameBuffer); + XrmDestroyDatabase(database); + wxNode *next = node->Next(); +// delete node; + node = next; } } void wxDeleteResources(const char *file) { + wxLogTrace(wxTraceResAlloc, "Delete: Number = %d", wxTheResourceCache->Number()); char buffer[500]; (void)GetIniFile(buffer, file); - wxNode *node = wxResourceCache.Find(buffer); + wxNode *node = wxTheResourceCache->Find(buffer); if (node) { - XrmDatabase database = (XrmDatabase)node->Data(); - XrmDestroyDatabase(database); - delete node; + XrmDatabase database = (XrmDatabase)node->Data(); + XrmDestroyDatabase(database); +// delete node; } } @@ -204,12 +206,13 @@ bool wxWriteResource(const wxString& section, const wxString& entry, const wxStr (void)GetIniFile(buffer, file); XrmDatabase database; - wxNode *node = wxResourceCache.Find(buffer); + wxNode *node = wxTheResourceCache->Find(buffer); if (node) - database = (XrmDatabase)node->Data(); + database = (XrmDatabase)node->Data(); else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); + database = XrmGetFileDatabase(buffer); + wxLogTrace(wxTraceResAlloc, "Write: Number = %d", wxTheResourceCache->Number()); + wxTheResourceCache->Append(buffer, (wxObject *)database); } char resName[300]; strcpy(resName, !section.IsNull() ? WXSTRINGCAST section : "wxWindows"); @@ -243,24 +246,25 @@ bool wxWriteResource(const wxString& section, const wxString& entry, int value, bool wxGetResource(const wxString& section, const wxString& entry, char **value, const wxString& file ) { if (!wxResourceDatabase) - wxXMergeDatabases(); + wxXMergeDatabases(); XrmDatabase database; if (file) { - char buffer[500]; - // Is this right? Trying to get it to look in the user's - // home directory instead of current directory -- JACS - (void)GetIniFile(buffer, file); - - wxNode *node = wxResourceCache.Find(buffer); - if (node) - database = (XrmDatabase)node->Data(); - else { - database = XrmGetFileDatabase(buffer); - wxResourceCache.Append(buffer, (wxObject *)database); - } + char buffer[500]; + // Is this right? Trying to get it to look in the user's + // home directory instead of current directory -- JACS + (void)GetIniFile(buffer, file); + + wxNode *node = wxTheResourceCache->Find(buffer); + if (node) + database = (XrmDatabase)node->Data(); + else { + database = XrmGetFileDatabase(buffer); + wxLogTrace(wxTraceResAlloc, "Get: Number = %d", wxTheResourceCache->Number()); + wxTheResourceCache->Append(buffer, (wxObject *)database); + } } else - database = wxResourceDatabase; + database = wxResourceDatabase; XrmValue xvalue; char *str_type[20]; @@ -272,15 +276,15 @@ bool wxGetResource(const wxString& section, const wxString& entry, char **value, bool success = XrmGetResource(database, buf, "*", str_type, &xvalue); // Try different combinations of upper/lower case, just in case... if (!success) { - buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); - success = XrmGetResource(database, buf, "*", str_type, &xvalue); + buf[0] = (isupper(buf[0]) ? tolower(buf[0]) : toupper(buf[0])); + success = XrmGetResource(database, buf, "*", str_type, &xvalue); } if (success) { - if (*value) - delete[] *value; - *value = new char[xvalue.size + 1]; - strncpy(*value, xvalue.addr, (int)xvalue.size); - return TRUE; + if (*value) + delete[] *value; + *value = new char[xvalue.size + 1]; + strncpy(*value, xvalue.addr, (int)xvalue.size); + return TRUE; } return FALSE; }; @@ -290,11 +294,11 @@ bool wxGetResource(const wxString& section, const wxString& entry, float *value, char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - *value = (float)strtod(s, NULL); - delete[]s; - return TRUE; + *value = (float)strtod(s, NULL); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; bool wxGetResource(const wxString& section, const wxString& entry, long *value, const wxString& file ) @@ -302,11 +306,11 @@ bool wxGetResource(const wxString& section, const wxString& entry, long *value, char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - *value = strtol(s, NULL, 10); - delete[]s; - return TRUE; + *value = strtol(s, NULL, 10); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; bool wxGetResource(const wxString& section, const wxString& entry, int *value, const wxString& file ) @@ -314,19 +318,19 @@ bool wxGetResource(const wxString& section, const wxString& entry, int *value, c char *s = NULL; bool succ = wxGetResource(section, entry, &s, file); if (succ) { - // Handle True, False here - // True, Yes, Enables, Set or Activated - if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') - *value = TRUE; - // False, No, Disabled, Reset, Cleared, Deactivated - else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') - *value = FALSE; - // Handle as Integer - else - *value = (int)strtol(s, NULL, 10); - delete[]s; - return TRUE; + // Handle True, False here + // True, Yes, Enables, Set or Activated + if (*s == 'T' || *s == 'Y' || *s == 'E' || *s == 'S' || *s == 'A') + *value = TRUE; + // False, No, Disabled, Reset, Cleared, Deactivated + else if (*s == 'F' || *s == 'N' || *s == 'D' || *s == 'R' || *s == 'C') + *value = FALSE; + // Handle as Integer + else + *value = (int)strtol(s, NULL, 10); + delete[]s; + return TRUE; } else - return FALSE; + return FALSE; }; diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp index 8cb3065191..d65fec1d09 100644 --- a/src/gtk1/window.cpp +++ b/src/gtk1/window.cpp @@ -753,6 +753,7 @@ wxWindow::wxWindow( wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style, const wxString &name ) { + m_cursor = NULL; Create( parent, id, pos, size, style, name ); }; @@ -864,7 +865,7 @@ wxWindow::~wxWindow(void) if (m_widget) gtk_widget_destroy( m_widget ); -// delete m_cursor; + wxDELETE(m_cursor); DeleteRelatedConstraints(); if (m_constraints) @@ -918,7 +919,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id, m_windowValidator = NULL; m_windowId = id; m_sizeSet = FALSE; - m_cursor = new wxCursor( wxCURSOR_ARROW ); + if (m_cursor == NULL) + m_cursor = new wxCursor( wxCURSOR_ARROW ); m_font = *wxSWISS_FONT; m_backgroundColour = wxWHITE; m_foregroundColour = wxBLACK; @@ -1561,7 +1563,11 @@ wxWindowID wxWindow::GetId(void) void wxWindow::SetCursor( const wxCursor &cursor ) { - if (*m_cursor == cursor) return; + wxASSERT(m_cursor != NULL); + + if (m_cursor != NULL) + if (*m_cursor == cursor) + return; (*m_cursor) = cursor; if (m_widget->window) gdk_window_set_cursor( m_widget->window, m_cursor->GetCursor() ); diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 75f2e5d0af..71309be724 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -1011,4 +1011,3 @@ void wxFrame::PositionToolBar(void) } } } - diff --git a/src/msw/window.cpp b/src/msw/window.cpp index d8207f2e18..efa74903a3 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -4600,3 +4600,5 @@ const char *wxGetMessageName(int message) } } #endif //WXDEBUG + +#include "../common/wincmn.cpp" -- 2.45.2