]> git.saurik.com Git - wxWidgets.git/commitdiff
1. fixed memory leak in GAddress
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 16 Mar 2000 01:03:52 +0000 (01:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 16 Mar 2000 01:03:52 +0000 (01:03 +0000)
2. fixed memory leak with wxLogStderr in wxBase
3. updated tmake files/makefiles for wxBase with wxSocket under MSW
4. fixed wxSashWindow cursor bug by allowing SetCursor(wxNullCursor)
5. fixed warning in gsock*.c

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

docs/latex/wx/window.tex
src/common/init.cpp
src/common/wincmn.cpp
src/generic/sashwin.cpp
src/msw/gsocket.c
src/msw/gsockmsw.c
src/msw/window.cpp

index 424cc23d72c1d8420e45036aaec93c3f6ce0175f..73f56744916a6f71e99907e16b93db268ca7c999 100644 (file)
@@ -1832,9 +1832,13 @@ implements the following methods:\par
 
 \func{virtual void}{SetCursor}{\param{const wxCursor\&}{cursor}}
 
-Sets the window's cursor. Notice that setting the cursor for this window does
-not set it for its children so you'll need to explicitly call SetCursor() for
-them too if you need it.
+% VZ: the docs are correct, if the code doesn't behave like this, it must be
+%     changed
+Sets the window's cursor. Notice that the window cursor also sets it for the
+children of the window implicitly.
+
+The {\it cursor} may be {\tt wxNullCursor} in which case the window cursor will
+be reset back to default.
 
 \wxheading{Parameters}
 
index 78576fb3c545eec7e749a34308f1eb430f41bf6f..70c9dafcdbb824c857d9b9e59c330255aef42c4d 100644 (file)
@@ -219,9 +219,8 @@ static void DoCleanUp()
     // continuing to use user defined log target is unsafe from now on because
     // some resources may be already unavailable, so replace it by something
     // more safe
-    wxLog *oldlog = wxLog::SetActiveTarget(new wxLogStderr);
-    if ( oldlog )
-        delete oldlog;
+    wxLog::DontCreateOnDemand();
+    delete wxLog::SetActiveTarget(new wxLogStderr);
 #endif // wxUSE_LOG
 
     wxModule::CleanUpModules();
@@ -231,4 +230,9 @@ static void DoCleanUp()
     // delete the application object
     delete wxTheApp;
     wxTheApp = (wxApp *)NULL;
+
+#if wxUSE_LOG
+    // and now delete the last logger as well
+    delete wxLog::SetActiveTarget(NULL);
+#endif // wxUSE_LOG
 }
index bd49ebf5dd893aa8cfbd76ffd9556ea7d3e78ab3..e3c669216f72df38cfb335b1e6d0d84dfa79356c 100644 (file)
@@ -586,16 +586,15 @@ bool wxWindowBase::SetForegroundColour( const wxColour &colour )
 
 bool wxWindowBase::SetCursor(const wxCursor& cursor)
 {
-    // don't try to set invalid cursor, always fall back to the default
-    const wxCursor& cursorOk = cursor.Ok() ? cursor : *wxSTANDARD_CURSOR;
-
-    if ( (wxCursor&)cursorOk == m_cursor )
+    // setting an invalid cursor is ok, it means that we don't have any special
+    // cursor
+    if ( cursor == m_cursor )
     {
         // no change
         return FALSE;
     }
 
-    m_cursor = cursorOk;
+    m_cursor = cursor;
 
     return TRUE;
 }
index 5f0bbe3ba1b0cd014029d5bbd7312e35aacb3be3..6daf05f134c496edc5df66f533b6251ce7799bbb 100644 (file)
@@ -115,7 +115,7 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
     SetCursor(* wxSTANDARD_CURSOR);
 #endif
 #ifdef __WXMSW__
-    SetCursor(wxCursor());
+    SetCursor(wxNullCursor);
 #endif
 
     if (event.LeftDown())
@@ -306,7 +306,7 @@ void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
         }
         else
         {
-            SetCursor(* wxSTANDARD_CURSOR);
+            SetCursor(wxNullCursor);
         }
     }
     else if ( event.Dragging() &&
index 7417b834bc4fdbbc90132edb8d338831b3f0d2a0..eb4d669270a5ba42a0f76a837612483c0386113a 100644 (file)
  * PLEASE don't put C++ comments here - this is a C source file.
  */
 
+/* including rasasync.h (included from windows.h itself included from
+ * wx/setup.h and/or winsock.h results in this warning for
+ * RPCNOTIFICATION_ROUTINE
+ */
+#ifdef _MSC_VER
+#  pragma warning(disable:4115) /* named type definition in parentheses */
+#endif
+
 #ifndef __GSOCKET_STANDALONE__
 #include "wx/setup.h"
 #endif
 #include <stdlib.h>
 #include <stddef.h>
 #include <ctype.h>
+
 #include <winsock.h>
 
+#ifdef _MSC_VER
+#  pragma warning(default:4115) /* named type definition in parentheses */
+#endif
+
 /* if we use configure for MSW SOCKLEN_T will be already defined */
 #ifndef SOCKLEN_T
 #  define SOCKLEN_T int
@@ -1061,6 +1074,7 @@ void GAddress_destroy(GAddress *address)
 {
   assert(address != NULL);
 
+  free(address->m_addr);
   free(address);
 }
 
index b8a3bda68329918916693a48616506ee689dcf75..e853b8b1bd53b9ac919702c642267e15ab59fd87 100644 (file)
  * PLEASE don't put C++ comments here - this is a C source file.
  */
 
+/* including rasasync.h (included from windows.h itself included from
+ * wx/setup.h and/or winsock.h results in this warning for
+ * RPCNOTIFICATION_ROUTINE
+ */
+#ifdef _MSC_VER
+#  pragma warning(disable:4115) /* named type definition in parentheses */
+#endif
+
 #ifndef __GSOCKET_STANDALONE__
 #include "wx/setup.h"
 #endif
 #include <stdlib.h>
 #include <stddef.h>
 #include <ctype.h>
+
 #include <winsock.h>
 
+#ifdef _MSC_VER
+#  pragma warning(default:4115) /* named type definition in parentheses */
+#endif
+
 #define CLASSNAME  "_GSocket_Internal_Window_Class"
 #define WINDOWNAME "_GSocket_Internal_Window_Name"
 
index dcd6b8cce0b65d1c4e4943548ecf9760be331d2b..33b7de5dcd106754ffbf76bbefe2da2e39f7c393 100644 (file)
@@ -469,20 +469,20 @@ bool wxWindow::SetCursor(const wxCursor& cursor)
         return FALSE;
     }
 
-    wxASSERT_MSG( m_cursor.Ok(),
-                  wxT("cursor must be valid after call to the base version"));
-
-    HWND hWnd = GetHwnd();
+    if ( m_cursor.Ok() )
+    {
+        HWND hWnd = GetHwnd();
 
-    // Change the cursor NOW if we're within the correct window
-    POINT point;
-    ::GetCursorPos(&point);
+        // Change the cursor NOW if we're within the correct window
+        POINT point;
+        ::GetCursorPos(&point);
 
-    RECT rect;
-    ::GetWindowRect(hWnd, &rect);
+        RECT rect;
+        ::GetWindowRect(hWnd, &rect);
 
-    if ( ::PtInRect(&rect, point) && !wxIsBusy() )
-        ::SetCursor(GetHcursorOf(m_cursor));
+        if ( ::PtInRect(&rect, point) && !wxIsBusy() )
+            ::SetCursor(GetHcursorOf(m_cursor));
+    }
 
     return TRUE;
 }