]> git.saurik.com Git - wxWidgets.git/commitdiff
Applied some of patch [ 688466 ] MSVC7 build & bug fixes
authorJulian Smart <julian@anthemion.co.uk>
Wed, 2 Apr 2003 11:10:37 +0000 (11:10 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Wed, 2 Apr 2003 11:10:37 +0000 (11:10 +0000)
by Darren Whobrey

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

18 files changed:
contrib/include/wx/fl/dyntbar.h
contrib/src/fl/barhintspl.cpp
contrib/src/fl/dyntbar.cpp
docs/changes.txt
include/wx/defs.h
include/wx/filesys.h
include/wx/hashmap.h
include/wx/notebook.h
include/wx/string.h
include/wx/wx.h
src/common/event.cpp
src/common/filefn.cpp
src/common/string.cpp
src/generic/dirctrlg.cpp
src/generic/dirdlgg.cpp
src/generic/filedlgg.cpp
src/msw/app.cpp
utils/emulator/src/emulator.cpp

index 25a1593ca683ee18006a2417556add849227ffcc..3e38cb439a3aaa1df0d68f08004d3eb27efb077c 100644 (file)
@@ -199,7 +199,7 @@ public:
 
         // Enables or disables the given tool.
 
-    virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
+    virtual void EnableTool(int toolIndex, bool enable = TRUE);
 
         // Responds to size events, calling Layout.
 
index 241a98dea44dfc4e2dffc15ae8d57ab4bd76421f..d6cd83ac77756bb32bffa6d199b66ffd959b0371 100644 (file)
@@ -512,6 +512,9 @@ void cbBarHintsPlugin::OnLeftUp( cbLeftUpEvent&   event )
                 if ( i == 0 )
                 {
                     mpLayout->SetBarState( mpClickedBar, wxCBAR_HIDDEN, TRUE );
+                    // Notify bar child window of close event:
+                    if(mpClickedBar->mpBarWnd!=NULL)
+                        mpClickedBar->mpBarWnd->Close();
                 }
                 else
                 {
index fe526de12e05b3031c079d76f110769e97e3e935..4d66fcdda00f89407e62bee2c331c9e5d8af066d 100644 (file)
@@ -492,7 +492,7 @@ void wxDynamicToolBar::SetLayout( LayoutManagerBase* pLayout )
     Layout();
 }
 
-void wxDynamicToolBar::EnableTool(const int toolIndex, const bool enable )
+void wxDynamicToolBar::EnableTool(int toolIndex, bool enable )
 {
     wxDynToolInfo* pInfo = GetToolInfo( toolIndex );
 
index 328513bbda125824e524c4d94554295b14459054..255f1f36d741415147db5e399fbf7d3f7b769b81 100644 (file)
@@ -45,7 +45,6 @@ All GUI ports:
 - WXR resources can now be used in Unicode builds
 - it is now possible to use several wxFileHistory objects in the same menu
   by giving them different base IDs (Dimitri Schoolwerth)
-
 - changed to type-safe wxSizerItemList for wxSizer child items
     Deprecated:
         wxSizer::Remove( wxWindow* )
@@ -64,8 +63,12 @@ All GUI ports:
         wxListBase::operator wxList&()
             - use typesafe lists instead
 - Added wxTLW::SetShape with implementations for wxMSW and wxGTK (so
-  far).
-
+  far)
+- FL: rmoved const from EnableTool parameters
+- FL: signal child window when toolbar is closed
+- In various places, changed tests for pathsep on last char of string to call
+  wxEndsWithPathSeparator(s)
+- Added to defs.h a couple of macros (wxPtrToULong & wxULongToPtr)
 
 Unix:
 
@@ -97,6 +100,12 @@ wxMSW:
 - fixed calling wxFrame::Maximize(FALSE) before the window is shown
 - all libraries built with makefile.g95 have a _min or _cyg suffix
   (for MinGW and Cygwin)
+- When using DLL, wxLocalFSHandler was not being exported - added
+  WXEXPORTDLL
+- A wxEvtHandler object was not removed from wxPendingEvents on deletion. 
+  wxPendingEventsLocker was being deleted in App before all wxEvtHandler
+  objects have been destroyed resulting in stale handler/lock
+  ptrs; fixed
 
 wxMotif:
 
index e86ebff8d73299c6c2bb180641c1d868871b0cf2..536c6d9697bd09aceb3b62ac70d46e7ba0e5bd9d 100644 (file)
@@ -794,6 +794,12 @@ typedef float wxFloat32 ;
   #define wxUINT64_SWAP_ON_BE(val)  (val)
 #endif
 
+// Macros to convert from unsigned long to void pointer.
+// High order truncation occurs if the respective type is not large enough.
+#define WXPTRULONGSLICE (((wxBYTE_ORDER==wxBIG_ENDIAN)&&(sizeof(void*)==8)&&(sizeof(unsigned long)<8))?1:0)
+#define wxPtrToULong(p) (((unsigned long*)(&(p)))[WXPTRULONGSLICE])
+#define wxULongToPtr(p,n) (p=NULL,wxPtrToULong(p)=(unsigned long)(n),p)
+
 // ----------------------------------------------------------------------------
 // Geometric flags
 // ----------------------------------------------------------------------------
index 7c1b69e77f77a51abcced4541856e5ab6be91090..5c69a5da7c46468a90040fe5230a7671cca0465d 100644 (file)
@@ -241,7 +241,7 @@ special characters :
 */
 
 
-class wxLocalFSHandler : public wxFileSystemHandler
+class WXDLLEXPORT wxLocalFSHandler : public wxFileSystemHandler
 {
 public:
     virtual bool CanOpen(const wxString& location);
index 6142c84e8480d3a0b012bfe02630bb1e2c26c54f..e774c0a1935b6128aa5dea18028e9225418b0606 100644 (file)
@@ -179,7 +179,7 @@ public: \
     CLASSNAME( size_type sz = 10, const hasher& hfun = hasher(), \
                const key_equal& k_eq = key_equal(), \
                const key_extractor& k_ex = key_extractor() ) \
-        : m_tableBuckets( GetNextPrime( sz ) ), \
+        : m_tableBuckets( GetNextPrime( (unsigned long) sz ) ), \
           m_items( 0 ), \
           m_hasher( hfun ), \
           m_equals( k_eq ), \
@@ -252,7 +252,7 @@ public: \
         delete *node; \
         (*node) = temp; \
         if( SHOULD_SHRINK( m_tableBuckets, m_items ) ) \
-            ResizeTable( GetPreviousPrime( m_tableBuckets ) - 1 ); \
+            ResizeTable( GetPreviousPrime( (unsigned long) m_tableBuckets ) - 1 ); \
         return 1; \
     } \
  \
@@ -324,7 +324,7 @@ protected: \
  \
     void ResizeTable( size_t newSize ) \
     { \
-        newSize = GetNextPrime( newSize ); \
+        newSize = GetNextPrime( (unsigned long)newSize ); \
         Node** srcTable = m_table; \
         size_t srcBuckets = m_tableBuckets; \
         m_table = (Node**)AllocTable( newSize ); \
@@ -441,7 +441,7 @@ public:
 
     // TODO: this might not work well on architectures with 64 bit pointers but
     //       32 bit longs, we should use % ULONG_MAX there
-    unsigned long operator()( const void* k ) const { return (unsigned long)k; }
+    unsigned long operator()( const void* k ) const { return (unsigned long)wxPtrToULong(k); }
 
     wxPointerHash& operator=(const wxPointerHash&) { return *this; }
 };
index eb2b8af14ea5cf287f7264624a99df67041da048..8c18691b7c21e9648c041403ed3eac0f97713701 100644 (file)
@@ -67,7 +67,7 @@ public:
     // ---------
 
     // get number of pages in the dialog
-    int GetPageCount() const { return m_pages.GetCount(); }
+    int GetPageCount() const { return (int) m_pages.GetCount(); }
 
     // get the panel which represents the given page
     wxNotebookPage *GetPage(int nPage) { return m_pages[nPage]; }
index 521b7ca966fe5d7fbd0b42cae2a716479cae622f..b4a6fa1df7f5c156cf7cbe28788341e24d7a7c20 100644 (file)
@@ -258,7 +258,7 @@ private:
   bool AssignCopy(size_t, const wxChar *);
 
   // append a (sub)string
-  bool ConcatSelf(int nLen, const wxChar *src);
+  bool ConcatSelf(size_t nLen, const wxChar *src);
 
   // functions called before writing to the string: they copy it if there
   // are other references to our data (should be the only owner when writing)
index 233ebcd16edf988bfbe4e7a18d61a1cf23078f68..4da515ebecffded5a46215856cde9b5fc23a0ce8 100644 (file)
@@ -77,7 +77,7 @@
 #include "wx/choicdlg.h"
 #include "wx/textdlg.h"
 #include "wx/filedlg.h"
-
+#include "wx/treectrl.h"
 #include "wx/validate.h"        // always include, even if !wxUSE_VALIDATORS
 
 #if wxUSE_VALIDATORS
index 7f36cc628b32381712869b64ffc436e344ed72e5..b2dc2e82f46194ef3a014650685b67456f9dec3c 100644 (file)
@@ -656,6 +656,15 @@ wxEvtHandler::~wxEvtHandler()
 #  if !defined(__VISAGECPP__)
     delete m_eventsLocker;
 #  endif
+   
+    // Remove us from wxPendingEvents if necessary.
+    if(wxPendingEventsLocker)
+        wxENTER_CRIT_SECT(*wxPendingEventsLocker);
+    if ( wxPendingEvents ) {
+        wxPendingEvents->DeleteObject(this);
+    }
+    if(wxPendingEventsLocker)
+        wxLEAVE_CRIT_SECT(*wxPendingEventsLocker);
 #endif
 
     // we only delete object data, not untyped
index d05fb1ecc3ba4d921f569b33b6af48646e4b525d..f6d5b9d69ff5def30a23ed614504705b8efaaca2 100644 (file)
@@ -1406,7 +1406,7 @@ wxString wxFindFirstFile(const wxChar *spec, int flags)
     wxSplitPath(spec, &gs_dirPath, NULL, NULL);
     if ( gs_dirPath.IsEmpty() )
         gs_dirPath = wxT(".");
-    if ( gs_dirPath.Last() != wxFILE_SEP_PATH )
+    if ( !wxEndsWithPathSeparator(gs_dirPath ) )
         gs_dirPath << wxFILE_SEP_PATH;
 
     if (gs_dir)
index 9d16b5302a1264d14cf355d9a7f37545f37408f8..791c5ce049d2f4836b45afc46b3e628eb810b2fc 100644 (file)
@@ -608,7 +608,7 @@ wxString& wxString::operator=(const wchar_t *pwz)
 // ---------------------------------------------------------------------------
 
 // add something to this string
-bool wxString::ConcatSelf(int nSrcLen, const wxChar *pszSrcData)
+bool wxString::ConcatSelf(size_t nSrcLen, const wxChar *pszSrcData)
 {
   STATISTICS_ADD(SummandLength, nSrcLen);
 
index 09f07715ee0cc074869e1d4124e603ad7beb79bd..01a5ef666b07ab7ea669ca22e55e0e18125f861b 100644 (file)
@@ -939,7 +939,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
     {
         wxString eachFilename(dirs[i]);
         path = dirName;
-        if (path.Last() != wxFILE_SEP_PATH)
+        if (!wxEndsWithPathSeparator(path))
             path += wxString(wxFILE_SEP_PATH);
         path += eachFilename;
 
@@ -966,7 +966,7 @@ void wxGenericDirCtrl::ExpandDir(wxTreeItemId parentId)
         {
             wxString eachFilename(filenames[i]);
             path = dirName;
-            if (path.Last() != wxFILE_SEP_PATH)
+            if (!wxEndsWithPathSeparator(path))
                 path += wxString(wxFILE_SEP_PATH);
             path += eachFilename;
             //path = dirName + wxString(wxT("/")) + eachFilename;
@@ -1010,7 +1010,7 @@ wxTreeItemId wxGenericDirCtrl::FindChild(wxTreeItemId parentId, const wxString&
         if (data && !data->m_path.IsEmpty())
         {
             wxString childPath(data->m_path);
-            if (childPath.Last() != wxFILE_SEP_PATH)
+            if (!wxEndsWithPathSeparator(childPath))
                 childPath += wxString(wxFILE_SEP_PATH);
 
             // In MSW and PM, case is not significant
index b73214e6b714ee8ef9bed03df4f0de00d9256a6e..107967f5216e18444fcd8b76fee02e862cf515c6 100644 (file)
@@ -273,7 +273,7 @@ void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
 
     wxString new_name( _("NewName") );
     wxString path( data->m_path );
-    if (path.Last() != wxFILE_SEP_PATH)
+    if (!wxEndsWithPathSeparator(path))
         path += wxFILE_SEP_PATH;
     path += new_name;
     if (wxFileExists(path))
@@ -287,7 +287,7 @@ void wxGenericDirDialog::OnNew( wxCommandEvent& WXUNUSED(event) )
             new_name += num;
 
             path = data->m_path;
-            if (path.Last() != wxFILE_SEP_PATH)
+            if (!wxEndsWithPathSeparator(path))
                 path += wxFILE_SEP_PATH;
             path += new_name;
             i++;
index de203552250f84bcdcde357f9351a2633f3607c1..bc5c9f174e0051aaf29170cfe6ca16a91d60a0db 100644 (file)
@@ -856,7 +856,7 @@ void wxFileCtrl::GoToParentDir()
     if (!IsTopMostDir(m_dirName))
     {
         size_t len = m_dirName.Len();
-        if (m_dirName[len-1] == wxFILE_SEP_PATH)
+        if (wxEndsWithPathSeparator(m_dirName))
             m_dirName.Remove( len-1, 1 );
         wxString fname( wxFileNameFromPath(m_dirName) );
         m_dirName = wxPathOnly( m_dirName );
@@ -1038,7 +1038,7 @@ wxFileDialog::wxFileDialog(wxWindow *parent,
     }
 
     size_t len = m_dir.Len();
-    if ((len > 1) && (m_dir[len-1] == wxFILE_SEP_PATH))
+    if ((len > 1) && (wxEndsWithPathSeparator(m_dir)))
         m_dir.Remove( len-1, 1 );
 
     m_path = m_dir;
index 94b3dfb59f49e697ab31e5d78b8030990eacdc8c..390b846cc3ba935cb74eb5025d9a46fcf724032f 100644 (file)
@@ -560,13 +560,14 @@ void wxApp::CleanUp()
 #endif
 
     delete wxWinHandleHash;
+    wxWinHandleHash = NULL; // Set to null in case anything later tries to ref it.
 
-    // GL: I'm annoyed ... I don't know where to put this and I don't want to
-    // create a module for that as it's part of the core.
     delete wxPendingEvents;
+    wxPendingEvents = NULL; // Set to null because wxAppBase::wxEvtHandler is destroyed later.
 
 #if wxUSE_THREADS
     delete wxPendingEventsLocker;
+    wxPendingEventsLocker = NULL; // Set to null because wxAppBase::wxEvtHandler is destroyed later.
     // If we don't do the following, we get an apparent memory leak
 #if wxUSE_VALIDATORS
     ((wxEvtHandler&) wxDefaultValidator).ClearEventLocker();
index 785bc8bda7455d310b513e7c264c8f90c1fb880a..672287a256306ae6f529ec6600ec9e5070010ff1 100644 (file)
@@ -578,7 +578,7 @@ wxString wxFindAppPath(const wxString& argv0, const wxString& cwd, const wxStrin
     {
         // Is it a relative path?
         wxString currentDir(cwd);
-        if (currentDir.Last() != wxFILE_SEP_PATH)
+        if (!wxEndsWithPathSeparator(currentDir))
             currentDir += wxFILE_SEP_PATH;
 
         str = currentDir + argv0;