]> git.saurik.com Git - wxWidgets.git/commitdiff
Updates to memcheck
authorRobert Roebling <robert@roebling.de>
Fri, 11 Sep 1998 09:05:26 +0000 (09:05 +0000)
committerRobert Roebling <robert@roebling.de>
Fri, 11 Sep 1998 09:05:26 +0000 (09:05 +0000)
  Corrected and beautified memory (output)
  Fixed a few memory leaks
  Fixed resizing in in wxRadioBox
  Added many wxFAIL and wxASSERT
  Corrected other wxFAIL (removed from ..::Ok())
  Added wxBrush::Set..() functions
  Added CopyOnWrite support in GDI objects (Unshare)
  Disabled all occurences of WXDEBUG_NEW
  made clean, recompiled with mem_chcking on

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

46 files changed:
TODO.txt
configure
configure.in
include/wx/gtk/accel.h
include/wx/gtk/brush.h
include/wx/gtk/pen.h
include/wx/gtk1/accel.h
include/wx/gtk1/brush.h
include/wx/gtk1/pen.h
include/wx/hash.h
include/wx/memory.h
include/wx/object.h
include/wx/utils.h
samples/dnd/dnd.cpp
samples/memcheck/memcheck.cpp
setup/setup.hin
src/common/gdicmn.cpp
src/common/hash.cpp
src/common/memory.cpp
src/common/object.cpp
src/generic/listctrl.cpp
src/generic/treectrl.cpp
src/gtk/accel.cpp
src/gtk/app.cpp
src/gtk/bitmap.cpp
src/gtk/brush.cpp
src/gtk/colour.cpp
src/gtk/font.cpp
src/gtk/frame.cpp
src/gtk/pen.cpp
src/gtk/radiobox.cpp
src/gtk/window.cpp
src/gtk1/accel.cpp
src/gtk1/app.cpp
src/gtk1/bitmap.cpp
src/gtk1/brush.cpp
src/gtk1/colour.cpp
src/gtk1/font.cpp
src/gtk1/frame.cpp
src/gtk1/pen.cpp
src/gtk1/radiobox.cpp
src/gtk1/window.cpp
user/wxFile/dirctrl.cpp
user/wxFile/filectrl.cpp
user/wxFile/wxFile.cpp
wx-config.in

index 5c5874812c6c4cfb24e8845113c82a6bf96af2b2..7fc0383153e5d69e2dc520015bec912a503716ec 100644 (file)
--- a/TODO.txt
+++ b/TODO.txt
@@ -23,7 +23,7 @@ Consistent keyboard interface and focus behaviour
 
 Add support Set colour/baclgroundcolour in GTK widgets
 Correct tab navigation (seems to be a GTK feature)
 
 Add support Set colour/baclgroundcolour in GTK widgets
 Correct tab navigation (seems to be a GTK feature)
-Finish DnD (postponed as GTK 1.2 will have new DnD)
+Finish DnD
 Add Clipboard
 Help system (not sure about this one)
 Show accelerator in menus
 Add Clipboard
 Help system (not sure about this one)
 Show accelerator in menus
@@ -36,7 +36,6 @@ Finish wxTextCtrl
 Finish native wxTreeCtrl
 Implement wxPalette
 Implement wxDirDialog
 Finish native wxTreeCtrl
 Implement wxPalette
 Implement wxDirDialog
-Implement CopyOnWrite (unshare) for GDI objects
 Support cooperation between Qt and wxWindows
 Fix toolbar tips
 TrueType support (just kidding)
 Support cooperation between Qt and wxWindows
 Fix toolbar tips
 TrueType support (just kidding)
index 930c3c15fab8c265ebaf1cdaafab12638a6f46ef..c47f54617ad55ba2d07a95f24e9b5d012f660a86 100755 (executable)
--- a/configure
+++ b/configure
@@ -5832,10 +5832,6 @@ fi
   
   
 
   
   
 
-  cat >> confdefs.h <<\EOF
-#define __WXGTK__ 1
-EOF
-
   TOOLKIT=GTK
   TOOLKIT_DEF=__WXGTK__
   MAKEINCLUDE=../gtk.inc
   TOOLKIT=GTK
   TOOLKIT_DEF=__WXGTK__
   MAKEINCLUDE=../gtk.inc
@@ -5843,7 +5839,7 @@ fi
 
 if test "$USE_QT" = 1; then
    echo $ac_n "checking for Qt includes""... $ac_c" 1>&6
 
 if test "$USE_QT" = 1; then
    echo $ac_n "checking for Qt includes""... $ac_c" 1>&6
-echo "configure:5847: checking for Qt includes" >&5
+echo "configure:5843: checking for Qt includes" >&5
    
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
    
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
@@ -5857,7 +5853,7 @@ for ac_dir in $SEARCH_INCLUDE;
    if test "$ac_find_includes" != "" ; then
      echo "$ac_t""found $ac_find_includes" 1>&6
      echo $ac_n "checking for Qt library""... $ac_c" 1>&6
    if test "$ac_find_includes" != "" ; then
      echo "$ac_t""found $ac_find_includes" 1>&6
      echo $ac_n "checking for Qt library""... $ac_c" 1>&6
-echo "configure:5861: checking for Qt library" >&5
+echo "configure:5857: checking for Qt library" >&5
      
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
      
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
@@ -5900,10 +5896,6 @@ for ac_dir in $SEARCH_LIB;
      { echo "configure: error: no" 1>&2; exit 1; }
   fi
   GUI_TK_LINK="-lXext -lX11 -lqt -lm"
      { echo "configure: error: no" 1>&2; exit 1; }
   fi
   GUI_TK_LINK="-lXext -lX11 -lqt -lm"
-  cat >> confdefs.h <<\EOF
-#define __WXQT__ 1
-EOF
-
   TOOLKIT=QT
   TOOLKIT_DEF=__WXQT__
   MAKEINCLUDE=../qt.inc
   TOOLKIT=QT
   TOOLKIT_DEF=__WXQT__
   MAKEINCLUDE=../qt.inc
@@ -5911,7 +5903,7 @@ fi
 
 if test "$USE_MOTIF" = 1; then
    echo $ac_n "checking for Motif/Lesstif includes""... $ac_c" 1>&6
 
 if test "$USE_MOTIF" = 1; then
    echo $ac_n "checking for Motif/Lesstif includes""... $ac_c" 1>&6
-echo "configure:5915: checking for Motif/Lesstif includes" >&5
+echo "configure:5907: checking for Motif/Lesstif includes" >&5
    
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
    
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
@@ -5925,7 +5917,7 @@ for ac_dir in $SEARCH_INCLUDE;
    if test "$ac_find_includes" != "" ; then
      echo "$ac_t""found $ac_find_includes" 1>&6
      echo $ac_n "checking for Motif or Lesstif library""... $ac_c" 1>&6
    if test "$ac_find_includes" != "" ; then
      echo "$ac_t""found $ac_find_includes" 1>&6
      echo $ac_n "checking for Motif or Lesstif library""... $ac_c" 1>&6
-echo "configure:5929: checking for Motif or Lesstif library" >&5
+echo "configure:5921: checking for Motif or Lesstif library" >&5
      
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
      
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
@@ -5968,10 +5960,6 @@ for ac_dir in $SEARCH_LIB;
      { echo "configure: error: no" 1>&2; exit 1; }
   fi
   GUI_TK_LINK="-lXext -lXt -lX11 -lXm -lm"
      { echo "configure: error: no" 1>&2; exit 1; }
   fi
   GUI_TK_LINK="-lXext -lXt -lX11 -lXm -lm"
-  cat >> confdefs.h <<\EOF
-#define __WXMOTIF__ 1
-EOF
-
   TOOLKIT=MOTIF
   TOOLKIT_DEF=__WXMOTIF__
   MAKEINCLUDE=../motif.inc
   TOOLKIT=MOTIF
   TOOLKIT_DEF=__WXMOTIF__
   MAKEINCLUDE=../motif.inc
@@ -6011,7 +5999,11 @@ if test "$USE_MEM_TRACING" = 1 ; then
 #define USE_MEMORY_TRACING $USE_MEM_TRACING
 EOF
 
 #define USE_MEMORY_TRACING $USE_MEM_TRACING
 EOF
 
-  fi
+  cat >> confdefs.h <<EOF
+#define USE_GLOBAL_MEMORY_OPERATORS $USE_MEM_TRACING
+EOF
+
+fi
 
 EXTRA_LINK=
 if test "$USE_DMALLOC" = 1 ; then
 
 EXTRA_LINK=
 if test "$USE_DMALLOC" = 1 ; then
@@ -6354,7 +6346,7 @@ fi
 
 
 echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6
 
 
 echo $ac_n "checking for main in -ldl""... $ac_c" 1>&6
-echo "configure:6358: checking for main in -ldl" >&5
+echo "configure:6350: checking for main in -ldl" >&5
 ac_lib_var=`echo dl'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 ac_lib_var=`echo dl'_'main | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6362,14 +6354,14 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
   ac_save_LIBS="$LIBS"
 LIBS="-ldl  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6366 "configure"
+#line 6358 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6373: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6409,7 +6401,7 @@ if test "$USE_THREADS" = "1"; then
 
   
   echo $ac_n "checking for pthread_create in -lpthread-0.7""... $ac_c" 1>&6
 
   
   echo $ac_n "checking for pthread_create in -lpthread-0.7""... $ac_c" 1>&6
-echo "configure:6413: checking for pthread_create in -lpthread-0.7" >&5
+echo "configure:6405: checking for pthread_create in -lpthread-0.7" >&5
 ac_lib_var=`echo pthread-0.7'_'pthread_create | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 ac_lib_var=`echo pthread-0.7'_'pthread_create | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6417,7 +6409,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread-0.7  $LIBS"
 cat > conftest.$ac_ext <<EOF
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread-0.7  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6421 "configure"
+#line 6413 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6428,7 +6420,7 @@ int main() {
 pthread_create()
 ; return 0; }
 EOF
 pthread_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6424: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6452,17 +6444,17 @@ else
 
     ac_safe=`echo "sys/prctl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/prctl.h""... $ac_c" 1>&6
 
     ac_safe=`echo "sys/prctl.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for sys/prctl.h""... $ac_c" 1>&6
-echo "configure:6456: checking for sys/prctl.h" >&5
+echo "configure:6448: checking for sys/prctl.h" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 6461 "configure"
+#line 6453 "configure"
 #include "confdefs.h"
 #include <sys/prctl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
 #include "confdefs.h"
 #include <sys/prctl.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6458: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6488,7 +6480,7 @@ fi
 
         
     echo $ac_n "checking for pthread_setcanceltype in -lpthread""... $ac_c" 1>&6
 
         
     echo $ac_n "checking for pthread_setcanceltype in -lpthread""... $ac_c" 1>&6
-echo "configure:6492: checking for pthread_setcanceltype in -lpthread" >&5
+echo "configure:6484: checking for pthread_setcanceltype in -lpthread" >&5
 ac_lib_var=`echo pthread'_'pthread_setcanceltype | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 ac_lib_var=`echo pthread'_'pthread_setcanceltype | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6496,7 +6488,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
   ac_save_LIBS="$LIBS"
 LIBS="-lpthread  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6500 "configure"
+#line 6492 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6507,7 +6499,7 @@ int main() {
 pthread_setcanceltype()
 ; return 0; }
 EOF
 pthread_setcanceltype()
 ; return 0; }
 EOF
-if { (eval echo configure:6511: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6503: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6534,7 +6526,7 @@ fi
 fi
 
   echo $ac_n "checking for pthread_setcanceltype in -lpthreads""... $ac_c" 1>&6
 fi
 
   echo $ac_n "checking for pthread_setcanceltype in -lpthreads""... $ac_c" 1>&6
-echo "configure:6538: checking for pthread_setcanceltype in -lpthreads" >&5
+echo "configure:6530: checking for pthread_setcanceltype in -lpthreads" >&5
 ac_lib_var=`echo pthreads'_'pthread_setcanceltype | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 ac_lib_var=`echo pthreads'_'pthread_setcanceltype | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -6542,7 +6534,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lpthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
   ac_save_LIBS="$LIBS"
 LIBS="-lpthreads  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 6546 "configure"
+#line 6538 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -6553,7 +6545,7 @@ int main() {
 pthread_setcanceltype()
 ; return 0; }
 EOF
 pthread_setcanceltype()
 ; return 0; }
 EOF
-if { (eval echo configure:6557: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:6549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6597,7 +6589,7 @@ OPENGL_LINK=
 
 if test "$USE_OPENGL" = 1; then
     echo $ac_n "checking for OpenGL includes""... $ac_c" 1>&6
 
 if test "$USE_OPENGL" = 1; then
     echo $ac_n "checking for OpenGL includes""... $ac_c" 1>&6
-echo "configure:6601: checking for OpenGL includes" >&5
+echo "configure:6593: checking for OpenGL includes" >&5
   
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
   
 ac_find_includes=
 for ac_dir in $SEARCH_INCLUDE;
@@ -6612,7 +6604,7 @@ for ac_dir in $SEARCH_INCLUDE;
     OPENGL_INCLUDE="-I$ac_find_includes"
     echo "$ac_t""found $ac_find_includes" 1>&6
         echo $ac_n "checking for OpenGL library""... $ac_c" 1>&6
     OPENGL_INCLUDE="-I$ac_find_includes"
     echo "$ac_t""found $ac_find_includes" 1>&6
         echo $ac_n "checking for OpenGL library""... $ac_c" 1>&6
-echo "configure:6616: checking for OpenGL library" >&5
+echo "configure:6608: checking for OpenGL library" >&5
     
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
     
 ac_find_libraries=
 for ac_dir in $SEARCH_LIB;
index 860ffa7576baf7320fa6234050c1db07d9b3f8d3..01f5d75a1c294c77aa798a5e02e03737f1df4f19 100644 (file)
@@ -976,7 +976,6 @@ if test "$USE_GTK" = 1; then
        GUI_TK_INCLUDE="$GTK_CFLAGS"
        GUI_TK_LIBRARY="$GTK_LIBS"
   ], AC_MSG_ERROR(Are gtk-config and the GTK in path and up-to-date?))
        GUI_TK_INCLUDE="$GTK_CFLAGS"
        GUI_TK_LIBRARY="$GTK_LIBS"
   ], AC_MSG_ERROR(Are gtk-config and the GTK in path and up-to-date?))
-  AC_DEFINE(__WXGTK__)
   TOOLKIT=GTK
   TOOLKIT_DEF=__WXGTK__
   MAKEINCLUDE=../gtk.inc
   TOOLKIT=GTK
   TOOLKIT_DEF=__WXGTK__
   MAKEINCLUDE=../gtk.inc
@@ -1002,7 +1001,6 @@ if test "$USE_QT" = 1; then
      AC_MSG_ERROR(no)
   fi
   GUI_TK_LINK="-lXext -lX11 -lqt -lm"
      AC_MSG_ERROR(no)
   fi
   GUI_TK_LINK="-lXext -lX11 -lqt -lm"
-  AC_DEFINE(__WXQT__)
   TOOLKIT=QT
   TOOLKIT_DEF=__WXQT__
   MAKEINCLUDE=../qt.inc
   TOOLKIT=QT
   TOOLKIT_DEF=__WXQT__
   MAKEINCLUDE=../qt.inc
@@ -1028,7 +1026,6 @@ if test "$USE_MOTIF" = 1; then
      AC_MSG_ERROR(no)
   fi
   GUI_TK_LINK="-lXext -lXt -lX11 -lXm -lm"
      AC_MSG_ERROR(no)
   fi
   GUI_TK_LINK="-lXext -lXt -lX11 -lXm -lm"
-  AC_DEFINE(__WXMOTIF__)
   TOOLKIT=MOTIF
   TOOLKIT_DEF=__WXMOTIF__
   MAKEINCLUDE=../motif.inc
   TOOLKIT=MOTIF
   TOOLKIT_DEF=__WXMOTIF__
   MAKEINCLUDE=../motif.inc
@@ -1065,7 +1062,7 @@ fi
 
 if test "$USE_MEM_TRACING" = 1 ; then
   AC_DEFINE_UNQUOTED(USE_MEMORY_TRACING,$USE_MEM_TRACING)
 
 if test "$USE_MEM_TRACING" = 1 ; then
   AC_DEFINE_UNQUOTED(USE_MEMORY_TRACING,$USE_MEM_TRACING)
-  dnl AC_DEFINE_UNQUOTED(USE_GLOBAL_MEMORY_OPERATORS,$USE_MEM_TRACING)
+  AC_DEFINE_UNQUOTED(USE_GLOBAL_MEMORY_OPERATORS,$USE_MEM_TRACING)
 fi
 
 EXTRA_LINK=
 fi
 
 EXTRA_LINK=
index 44bfd043aed641858973833421619c80fdbcc2c4..3f7ce4056e627ef36c6b6020752c5ff23dbdc68b 100644 (file)
@@ -52,7 +52,7 @@ extern wxAcceleratorTable wxNullAcceleratorTable;
 // wxAcceleratorEntry
 //-----------------------------------------------------------------------------
 
 // wxAcceleratorEntry
 //-----------------------------------------------------------------------------
 
-class wxAcceleratorEntry
+class wxAcceleratorEntry: public wxObject
 {
   public:
 
 {
   public:
 
index 32048f67b74d50d67ec6b181f9fa74490c4ff6b6..94c65f760f13033663065605e9e8095dd17db3ff 100644 (file)
@@ -54,6 +54,15 @@ class wxBrush: public wxGDIObject
     wxColour &GetColour(void) const;
     wxBitmap *GetStipple(void) const;
     
     wxColour &GetColour(void) const;
     wxBitmap *GetStipple(void) const;
     
+    
+    void SetColour( const wxColour& col );
+    void SetColour( const wxString& col );
+    void SetColour( unsigned char r, unsigned char g, unsigned char b );
+    void SetStyle( int style );
+    void SetStipple( const wxBitmap& stipple );
+    
+    void Unshare(void);
+  
     // no data :-)
 };
 
     // no data :-)
 };
 
index a0eaa2a59b0f88ef1d9f85601fccc736e32803c1..d6c4d632b8d4a39941f2f22f410c5ba10f4bee60 100644 (file)
@@ -62,6 +62,8 @@ class wxPen: public wxGDIObject
     int GetWidth(void) const;
     bool Ok(void) const;
     
     int GetWidth(void) const;
     bool Ok(void) const;
     
+    void Unshare(void);
+    
     // no data :-)
 };
 
     // no data :-)
 };
 
index 44bfd043aed641858973833421619c80fdbcc2c4..3f7ce4056e627ef36c6b6020752c5ff23dbdc68b 100644 (file)
@@ -52,7 +52,7 @@ extern wxAcceleratorTable wxNullAcceleratorTable;
 // wxAcceleratorEntry
 //-----------------------------------------------------------------------------
 
 // wxAcceleratorEntry
 //-----------------------------------------------------------------------------
 
-class wxAcceleratorEntry
+class wxAcceleratorEntry: public wxObject
 {
   public:
 
 {
   public:
 
index 32048f67b74d50d67ec6b181f9fa74490c4ff6b6..94c65f760f13033663065605e9e8095dd17db3ff 100644 (file)
@@ -54,6 +54,15 @@ class wxBrush: public wxGDIObject
     wxColour &GetColour(void) const;
     wxBitmap *GetStipple(void) const;
     
     wxColour &GetColour(void) const;
     wxBitmap *GetStipple(void) const;
     
+    
+    void SetColour( const wxColour& col );
+    void SetColour( const wxString& col );
+    void SetColour( unsigned char r, unsigned char g, unsigned char b );
+    void SetStyle( int style );
+    void SetStipple( const wxBitmap& stipple );
+    
+    void Unshare(void);
+  
     // no data :-)
 };
 
     // no data :-)
 };
 
index a0eaa2a59b0f88ef1d9f85601fccc736e32803c1..d6c4d632b8d4a39941f2f22f410c5ba10f4bee60 100644 (file)
@@ -62,6 +62,8 @@ class wxPen: public wxGDIObject
     int GetWidth(void) const;
     bool Ok(void) const;
     
     int GetWidth(void) const;
     bool Ok(void) const;
     
+    void Unshare(void);
+    
     // no data :-)
 };
 
     // no data :-)
 };
 
index e154046cf5e447a5b543124b699b2057ac6a084c..a223f99968399bc8e973a155383b3be72bc3a125 100644 (file)
@@ -40,6 +40,8 @@ class WXDLLEXPORT wxHashTable: public wxObject
 
   wxHashTable(int the_key_type = wxKEY_INTEGER, int size = 1000);
   ~wxHashTable(void);
 
   wxHashTable(int the_key_type = wxKEY_INTEGER, int size = 1000);
   ~wxHashTable(void);
+  
+  void Destroy(void);  // Robert Roebling
 
   bool Create(int the_key_type = wxKEY_INTEGER, int size = 1000);
 
 
   bool Create(int the_key_type = wxKEY_INTEGER, int size = 1000);
 
index 9a17ad3ac99fc896b5be307f8ef0930b0eca221a..c1967741a975ae6d0bc6b03e0f8ac15240e00c7e 100644 (file)
 
 #include "wx/string.h"
 
 
 #include "wx/string.h"
 
-#ifndef WXDEBUG_NEW
-#define WXDEBUG_NEW new(__FILE__,__LINE__)
-#endif
-
 #if WXDEBUG
 #if WXDEBUG
+
+// #ifndef WXDEBUG_NEW
+// #define WXDEBUG_NEW new(__FILE__,__LINE__)
+// #endif
+
 void * wxDebugAlloc(size_t size, char * fileName, int lineNum, bool isObject, bool isVect = FALSE);
 void wxDebugFree(void * buf, bool isVect = FALSE);
 
 void * wxDebugAlloc(size_t size, char * fileName, int lineNum, bool isObject, bool isVect = FALSE);
 void wxDebugFree(void * buf, bool isVect = FALSE);
 
@@ -61,8 +62,6 @@ void * operator new[] (size_t size, char * fileName, int lineNum);
 void operator delete[] (void * buf);
 #endif
 
 void operator delete[] (void * buf);
 #endif
 
-#define new WXDEBUG_NEW
-
 #endif
 #endif
 
 #endif
 #endif
 
@@ -270,7 +269,7 @@ inline void wxTraceLevel(int WXUNUSED(level), const char *WXUNUSED(fmt)) {}
 
 #define WXTRACE TRUE ? (void)0 : wxTrace
 #define WXTRACELEVEL TRUE ? (void)0 : wxTraceLevel
 
 #define WXTRACE TRUE ? (void)0 : wxTrace
 #define WXTRACELEVEL TRUE ? (void)0 : wxTraceLevel
-#define WXDEBUG_NEW new
+// #define WXDEBUG_NEW new
 
 #endif // WXDEBUG
 
 
 #endif // WXDEBUG
 
index 83b86a7d086b4228b9764ed81a670b5d99926461..de08899955124c201ca58ec216e3267bda0878fc 100644 (file)
@@ -17,6 +17,7 @@
 #endif
 
 #include "wx/defs.h"
 #endif
 
 #include "wx/defs.h"
+#include "wx/memory.h"
 
 class WXDLLEXPORT wxObject;
 
 
 class WXDLLEXPORT wxObject;
 
@@ -232,10 +233,10 @@ private:
 };
 
 #if WXDEBUG && USE_GLOBAL_MEMORY_OPERATORS
 };
 
 #if WXDEBUG && USE_GLOBAL_MEMORY_OPERATORS
-#ifndef WXDEBUG_NEW
-#define WXDEBUG_NEW new(__FILE__,__LINE__)
-#endif
-#define new WXDEBUG_NEW
+//#ifndef WXDEBUG_NEW
+//#define WXDEBUG_NEW new(__FILE__,__LINE__)
+//#endif
+#define new new(__FILE__,__LINE__)
 #endif
 
 #endif
 #endif
 
 #endif
index b4739ed9217cc4844ec909577be31029a2a94e20..cbfd4d2b83720ca0730382c12e3a19422d274e8c 100644 (file)
@@ -167,9 +167,9 @@ int WXDLLEXPORT wxFindMenuItemId(wxFrame *frame, const wxString& menuString, con
 // Can't export a class derived from a non-export class
 #if !defined(_WINDLL) && !defined(WXUSINGDLL)
 
 // Can't export a class derived from a non-export class
 #if !defined(_WINDLL) && !defined(WXUSINGDLL)
 
-#ifdef new
-#undef new
-#endif
+// #ifdef new
+// #undef new
+// #endif
 
 class WXDLLEXPORT wxDebugStreamBuf: public streambuf
 {
 
 class WXDLLEXPORT wxDebugStreamBuf: public streambuf
 {
@@ -182,9 +182,9 @@ class WXDLLEXPORT wxDebugStreamBuf: public streambuf
     int sync(void);
 };
 
     int sync(void);
 };
 
-#if WXDEBUG && USE_GLOBAL_MEMORY_OPERATORS
-#define new WXDEBUG_NEW
-#endif
+// #if WXDEBUG && USE_GLOBAL_MEMORY_OPERATORS
+// #define new WXDEBUG_NEW
+// #endif
 
 #endif
 
 
 #endif
 
index 9933d0d3bca9d22c535258fd033b0b928ad6d39b..4cbe5a31ed33fd69749912702d9e68c9f984a0ed 100644 (file)
@@ -192,7 +192,7 @@ DnDFrame::DnDFrame(wxFrame *frame, char *title, int x, int y, int w, int h)
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
 
   // associate drop targets with 2 text controls
   m_ctrlFile->SetDropTarget(new DnDFile(m_ctrlFile));
-  //m_ctrlText->SetDropTarget(new DnDText(m_ctrlText));  
+  m_ctrlText->SetDropTarget(new DnDText(m_ctrlText));  
 
   wxLayoutConstraints *c;
 
 
   wxLayoutConstraints *c;
 
index 713fd131d1f79c1a06d1bf06fe8fc474b063d27f..2c0f39843957c3e14e3fcd9ce330d18d51f588da 100644 (file)
@@ -35,8 +35,6 @@
 #error You must set WXDEBUG to 1 on the 'make' command line (MSW) or with configure (GTK)
 #endif
 
 #error You must set WXDEBUG to 1 on the 'make' command line (MSW) or with configure (GTK)
 #endif
 
-// #define new WXDEBUG_NEW
-
 // Define a new application type
 class MyApp: public wxApp
 { public:
 // Define a new application type
 class MyApp: public wxApp
 { public:
@@ -85,10 +83,9 @@ bool MyApp::OnInit(void)
   wxDebugContext::SetCheckpoint();
   wxDebugContext::SetFile("debug.log");
 
   wxDebugContext::SetCheckpoint();
   wxDebugContext::SetFile("debug.log");
 
-  wxString *thing = new wxString; // WXDEBUG_NEW wxString;
+  wxString *thing = new wxString;
   wxDate* date = new wxDate;
 
   wxDate* date = new wxDate;
 
-  // Proves that defining 'new' to be 'WXDEBUG_NEW' doesn't mess up
   // non-object allocation
   char *ordinaryNonObject = new char[1000];
 
   // non-object allocation
   char *ordinaryNonObject = new char[1000];
 
index 978f9c63ab3c0a198347e0e11c81257fee331d1e..cb421990f0f5033799e9cc678969e6bd3a9ce1a0 100644 (file)
@@ -17,9 +17,6 @@
 #endif
 
 /* define the system to compile */
 #endif
 
 /* define the system to compile */
-#undef __WXGTK__
-#undef __WXMOTIF__
-#undef __WXQT__
 #undef __UNIX__
 #undef __LINUX__
 #undef __SGI__
 #undef __UNIX__
 #undef __LINUX__
 #undef __SGI__
  * Disable it, If this causes problems (e.g. link errors)
  */
 #undef USE_GLOBAL_MEMORY_OPERATORS
  * Disable it, If this causes problems (e.g. link errors)
  */
 #undef USE_GLOBAL_MEMORY_OPERATORS
-/*
- * If WXDEBUG && USE_MEMORY_TRACING && USE_GLOBAL_MEMORY_OPERATORS
- * used to debug the memory allocation of wxWindows Xt port code
- */
-#define USE_INTERNAL_MEMORY_TRACING 0
 /*
  * Matthews garbage collection (used for MrEd?)
  */
 /*
  * Matthews garbage collection (used for MrEd?)
  */
index 81b17c2b13d91bc9f8201d33b1913919512f045d..7238bc9d0ace8ecbc410adc12b2e6172b102f61c 100644 (file)
@@ -568,7 +568,6 @@ void wxBrushList::RemoveBrush (wxBrush * brush)
 
 wxFontList::~wxFontList ()
 {
 
 wxFontList::~wxFontList ()
 {
-#ifdef __WXMSW__
   wxNode *node = First ();
   while (node)
     {
   wxNode *node = First ();
   while (node)
     {
@@ -582,7 +581,6 @@ wxFontList::~wxFontList ()
                delete font;
       node = next;
 }
                delete font;
       node = next;
 }
-#endif
 }
 
 void wxFontList::AddFont (wxFont * font)
 }
 
 void wxFontList::AddFont (wxFont * font)
index f4139dd5f9d7beadf69ad7de653a1d401e1fc6e3..69b17fd56ea5a17824088b8a79a44995448435ce 100644 (file)
@@ -48,11 +48,18 @@ wxHashTable::wxHashTable (int the_key_type, int size)
 
 wxHashTable::~wxHashTable (void)
 {
 
 wxHashTable::~wxHashTable (void)
 {
+  Destroy();
+}
+
+void wxHashTable::Destroy(void)
+{
+  if (!hash_table) return;
   int i;
   for (i = 0; i < n; i++)
     if (hash_table[i])
       delete hash_table[i];
   delete[] hash_table;
   int i;
   for (i = 0; i < n; i++)
     if (hash_table[i])
       delete hash_table[i];
   delete[] hash_table;
+  hash_table = NULL;
 }
 
 bool wxHashTable::Create(int the_key_type, int size)
 }
 
 bool wxHashTable::Create(int the_key_type, int size)
index 01f70591f97eb8440e360a1cdfd91ce3c713ea1a..70b4155d09f15c3b4604aee93b61d8263497332a 100644 (file)
 
 #include "wx/memory.h"
 
 
 #include "wx/memory.h"
 
-/*
 #ifdef new
 #undef new
 #endif
 #ifdef new
 #undef new
 #endif
-*/
 
 // wxDebugContext wxTheDebugContext;
 /*
 
 // wxDebugContext wxTheDebugContext;
 /*
@@ -651,10 +649,16 @@ bool wxDebugContext::Dump(void)
     {
         appNameStr = wxTheApp->GetAppName();
         appName = (char*) (const char*) appNameStr;
     {
         appNameStr = wxTheApp->GetAppName();
         appName = (char*) (const char*) appNameStr;
-        wxTrace("Memory dump of %s at %s:\n", appName, WXSTRINGCAST wxNow() );
+        wxTrace("----- Memory dump of %s at %s -----\n", appName, WXSTRINGCAST wxNow() );
+    }
+    else
+    {
+      wxTrace( "----- Memory dump -----\n" );
     }
   }
   TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL));
     }
   }
   TraverseList ((PmSFV)&wxMemStruct::Dump, (checkPoint ? checkPoint->m_next : (wxMemStruct*)NULL));
+  
+  wxTrace( "\n\n" );
 
   return TRUE;
 #else
 
   return TRUE;
 #else
@@ -693,6 +697,22 @@ bool wxDebugContext::PrintStatistics(bool detailed)
   if (!HasStream())
     return FALSE;
 
   if (!HasStream())
     return FALSE;
 
+  if (TRUE)
+  {
+    char* appName = "application";
+    wxString appNameStr("");
+    if (wxTheApp)
+    {
+        appNameStr = wxTheApp->GetAppName();
+        appName = (char*) (const char*) appNameStr;
+        wxTrace("----- Memory statistics of %s at %s -----\n", appName, WXSTRINGCAST wxNow() );
+    }
+    else
+    {
+      wxTrace( "----- Memory statistics -----\n" );
+    }
+  }
+  
   bool currentMode = GetDebugMode();
   SetDebugMode(FALSE);
   
   bool currentMode = GetDebugMode();
   SetDebugMode(FALSE);
   
@@ -760,6 +780,7 @@ bool wxDebugContext::PrintStatistics(bool detailed)
   wxTrace("Number of object items: %ld\n", noObjectNodes);
   wxTrace("Number of non-object items: %ld\n", noNonObjectNodes);
   wxTrace("Total allocated size: %ld\n", totalSize);
   wxTrace("Number of object items: %ld\n", noObjectNodes);
   wxTrace("Number of non-object items: %ld\n", noNonObjectNodes);
   wxTrace("Total allocated size: %ld\n", totalSize);
+  wxTrace("\n\n");
 
   return TRUE;
 #else
 
   return TRUE;
 #else
@@ -780,7 +801,7 @@ bool wxDebugContext::PrintClasses(void)
     {
         appNameStr = wxTheApp->GetAppName();
         appName = (char*) (const char*) appNameStr;
     {
         appNameStr = wxTheApp->GetAppName();
         appName = (char*) (const char*) appNameStr;
-        wxTrace("Classes in %s:\n\n", appName);
+        wxTrace("----- Classes in %s -----\n", appName);
     }
   }
 
     }
   }
 
@@ -806,10 +827,10 @@ bool wxDebugContext::PrintClasses(void)
       else
         wxTrace("\n");
     }
       else
         wxTrace("\n");
     }
-    node = node->Next();
+    node = wxClassInfo::sm_classTable->Next();
     n ++;
   }
     n ++;
   }
-  wxTrace("\nThere are %d classes derived from wxObject.\n", n);
+  wxTrace("\nThere are %d classes derived from wxObject.\n\n\n", n);
   return TRUE;
 }    
 
   return TRUE;
 }    
 
index 6d293b0569bbd1e9f1e350bffbab9905c3c877c5..a6b2ec1ca2e621bc6964b9745585b596c6e65c5a 100644 (file)
@@ -220,7 +220,6 @@ void wxClassInfo::InitializeClasses(void)
   }
 }
 
   }
 }
 
-// Clean up hash table
 void wxClassInfo::CleanUpClasses(void)
 {
     delete wxClassInfo::sm_classTable;
 void wxClassInfo::CleanUpClasses(void)
 {
     delete wxClassInfo::sm_classTable;
index 2e657bddbfdee8053703462149ee8944359d418e..a5e2c197782e3c6069a6941642b98700a49324fc 100644 (file)
@@ -910,10 +910,10 @@ wxListMainWindow::wxListMainWindow( wxWindow *parent, wxWindowID id,
 
 wxListMainWindow::~wxListMainWindow( void )
 {
 
 wxListMainWindow::~wxListMainWindow( void )
 {
+  if (m_hilightBrush) delete m_hilightBrush;
+  delete m_renameTimer;
 //  if (m_hilightColour) delete m_hilightColour;
 //  if (m_hilightColour) delete m_hilightColour;
-//  if (m_hilightBrush) delete m_hilightBrush;
 //  if (m_myFont) delete m_myFont;
 //  if (m_myFont) delete m_myFont;
-  delete m_renameTimer;
 //  delete m_text;
 }
 
 //  delete m_text;
 }
 
index e6504c9bece29477f4245cd74ae4b167e3088b02..109827378a02a37482c865ad0744c3cca0331047 100644 (file)
@@ -381,6 +381,8 @@ wxTreeCtrl::wxTreeCtrl(wxWindow *parent, wxWindowID id,
 
 wxTreeCtrl::~wxTreeCtrl()
 {
 
 wxTreeCtrl::~wxTreeCtrl()
 {
+  if (m_hilightBrush) delete m_hilightBrush;
+  if (m_anchor) delete m_anchor;
 }
 
 bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
 }
 
 bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
index 8288d870daf7ce76edbda683ff58fb4db614b290..52949c26ea41c352234afafc308a9203d3345175 100644 (file)
@@ -24,24 +24,13 @@ class wxAccelRefData: public wxObjectRefData
   public:
   
     wxAccelRefData(void);
   public:
   
     wxAccelRefData(void);
-    ~wxAccelRefData(void);
   
     wxList m_accels;
 };
 
 wxAccelRefData::wxAccelRefData(void)
 {
   
     wxList m_accels;
 };
 
 wxAccelRefData::wxAccelRefData(void)
 {
-}
-
-wxAccelRefData::~wxAccelRefData(void)
-{
-  wxNode *node = m_accels.First();
-  while (node)
-  {
-    wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data();
-    delete entry;
-    node = node->Next();
-  }
+  m_accels.DeleteContents( TRUE );
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
@@ -52,7 +41,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable,wxObject)
   
 wxAcceleratorTable::wxAcceleratorTable()
 {
   
 wxAcceleratorTable::wxAcceleratorTable()
 {
-  m_refData = new wxAccelRefData();
 }
 
 wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
 }
 
 wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
@@ -64,7 +52,7 @@ wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
     int keycode = entries[i].GetKeyCode();
     int command = entries[i].GetCommand();
     if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
     int keycode = entries[i].GetKeyCode();
     int command = entries[i].GetCommand();
     if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
-    M_ACCELDATA->m_accels.Append( (wxObject*) new wxAcceleratorEntry( flag, keycode, command ) );
+    M_ACCELDATA->m_accels.Append( new wxAcceleratorEntry( flag, keycode, command ) );
   }
 }
 
   }
 }
 
@@ -79,6 +67,8 @@ bool wxAcceleratorTable::Ok() const
 
 int wxAcceleratorTable::GetCommand( wxKeyEvent &event )
 {
 
 int wxAcceleratorTable::GetCommand( wxKeyEvent &event )
 {
+  if (!Ok()) return -1;
+
   wxNode *node = M_ACCELDATA->m_accels.First();
   while (node)
   {
   wxNode *node = M_ACCELDATA->m_accels.First();
   while (node)
   {
index 291a4e878958bccc3dc934ca9397e177c5b4dfce..d2acce935aa53bef680c0a084dcae80269917eef 100644 (file)
@@ -293,8 +293,6 @@ void wxApp::CommonCleanUp(void)
   wxCleanUpResourceSystem();
 
   wxSystemSettings::Done();
   wxCleanUpResourceSystem();
 
   wxSystemSettings::Done();
-
-  wxClassInfo::CleanUpClasses();
 }
 
 wxLog *wxApp::CreateLogTarget()
 }
 
 wxLog *wxApp::CreateLogTarget()
@@ -314,11 +312,7 @@ int wxEntry( int argc, char *argv[] )
 
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 
 
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 
-#if !defined(_WINDLL)
   streambuf* sBuf = new wxDebugStreamBuf;
   streambuf* sBuf = new wxDebugStreamBuf;
-#else
-  streambuf* sBuf = NULL;
-#endif
   ostream* oStr = new ostream(sBuf) ;
   wxDebugContext::SetStream(oStr, sBuf);
 
   ostream* oStr = new ostream(sBuf) ;
   wxDebugContext::SetStream(oStr, sBuf);
 
@@ -348,6 +342,12 @@ int wxEntry( int argc, char *argv[] )
   wxTheApp->argc = argc;
   wxTheApp->argv = argv;
 
   wxTheApp->argc = argc;
   wxTheApp->argv = argv;
 
+  char name[200];
+  strcpy( name, argv[0] );
+  strcpy( name, wxFileNameFromPath(name) );
+  wxStripExtension( name );
+  wxTheApp->SetAppName( name );
+  
   gtk_set_locale();
   
   gtk_init( &argc, &argv );
   gtk_set_locale();
   
   gtk_init( &argc, &argv );
@@ -386,11 +386,15 @@ int wxEntry( int argc, char *argv[] )
 
   wxDELETE(wxTheApp);
 
 
   wxDELETE(wxTheApp);
 
+  wxLog *oldLog = wxLog::SetActiveTarget( NULL );
+  if (oldLog) delete oldLog;
+  
+  wxClassInfo::CleanUpClasses();
+  
+  delete[] wxBuffer;
+  
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
-  // At this point we want to check if there are any memory
-  // blocks that aren't part of the wxDebugContext itself,
-  // as a special case. Then when dumping we need to ignore
-  // wxDebugContext, too.
+  
   if (wxDebugContext::CountObjectsLeft() > 0)
   {
     wxTrace("There were memory leaks.\n");
   if (wxDebugContext::CountObjectsLeft() > 0)
   {
     wxTrace("There were memory leaks.\n");
@@ -398,6 +402,7 @@ int wxEntry( int argc, char *argv[] )
     wxDebugContext::PrintStatistics();
   }
   wxDebugContext::SetStream(NULL, NULL);
     wxDebugContext::PrintStatistics();
   }
   wxDebugContext::SetStream(NULL, NULL);
+  
 #endif
 
   return retValue;
 #endif
 
   return retValue;
index e4adea4dd18fd9f0142adc82326db8fae2af0b86..e000d6ab3fa02bb446c8d5993aa8a0e00d250a54 100644 (file)
@@ -228,25 +228,39 @@ bool wxBitmap::operator != ( const wxBitmap& bmp )
   
 bool wxBitmap::Ok(void) const
 {
   
 bool wxBitmap::Ok(void) const
 {
-  wxASSERT_MSG( m_refData != NULL, "invalid bitmap" );
   return (m_refData != NULL);
 }
   
 int wxBitmap::GetHeight(void) const
 {
   return (m_refData != NULL);
 }
   
 int wxBitmap::GetHeight(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+
   return M_BMPDATA->m_height;
 }
 
 int wxBitmap::GetWidth(void) const
 {
   return M_BMPDATA->m_height;
 }
 
 int wxBitmap::GetWidth(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+  
   return M_BMPDATA->m_width;
 }
 
 int wxBitmap::GetDepth(void) const
 {
   return M_BMPDATA->m_width;
 }
 
 int wxBitmap::GetDepth(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+  
   return M_BMPDATA->m_bpp;
 }
 
   return M_BMPDATA->m_bpp;
 }
 
@@ -279,14 +293,22 @@ void wxBitmap::SetDepth( int depth )
 
 wxMask *wxBitmap::GetMask(void) const
 {
 
 wxMask *wxBitmap::GetMask(void) const
 {
-  if (!Ok()) return (wxMask *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (wxMask *) NULL;
+  }
   
   return M_BMPDATA->m_mask;
 }
 
 void wxBitmap::SetMask( wxMask *mask )
 {
   
   return M_BMPDATA->m_mask;
 }
 
 void wxBitmap::SetMask( wxMask *mask )
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
   if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
   
   
   if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
   
@@ -295,11 +317,19 @@ void wxBitmap::SetMask( wxMask *mask )
 
 void wxBitmap::Resize( int height, int width )
 {
 
 void wxBitmap::Resize( int height, int width )
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
   
   
 #ifdef USE_GDK_IMLIB
   
-  if (M_BMPDATA->m_bitmap) return;  // not supported for bitmaps
+  if (M_BMPDATA->m_bitmap)
+  {
+    wxFAIL_MSG( "wxBitmap::Resize not supported for mono-bitmaps" );
+    return;
+  }
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -324,9 +354,19 @@ void wxBitmap::Resize( int height, int width )
 bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
 bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return FALSE;
+  }
+  
 #ifdef USE_GDK_IMLIB
 
 #ifdef USE_GDK_IMLIB
 
-  if (!Ok()) return FALSE;
+  if (M_BMPDATA->m_bitmap)
+  {
+    wxFAIL_MSG( "wxBitmap::SaveFile not supported for mono-bitmaps" );
+    return FALSE;
+  }
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -380,7 +420,11 @@ wxPalette *wxBitmap::GetPalette(void) const
 
 GdkPixmap *wxBitmap::GetPixmap(void) const
 {
 
 GdkPixmap *wxBitmap::GetPixmap(void) const
 {
-  if (!Ok()) return (GdkPixmap *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (GdkPixmap *) NULL;
+  }
   
 //  if (!M_BMPDATA->m_image) RecreateImage();
   
   
 //  if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -389,14 +433,22 @@ GdkPixmap *wxBitmap::GetPixmap(void) const
   
 GdkBitmap *wxBitmap::GetBitmap(void) const
 {
   
 GdkBitmap *wxBitmap::GetBitmap(void) const
 {
-  if (!Ok()) return (GdkBitmap *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (GdkBitmap *) NULL;
+  }
   
   return M_BMPDATA->m_bitmap;
 }
   
 void wxBitmap::DestroyImage(void)
 {
   
   return M_BMPDATA->m_bitmap;
 }
   
 void wxBitmap::DestroyImage(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
   if (M_BMPDATA->m_image)
   {
   
   if (M_BMPDATA->m_image)
   {
@@ -407,7 +459,11 @@ void wxBitmap::DestroyImage(void)
 
 void wxBitmap::RecreateImage(void)
 {
 
 void wxBitmap::RecreateImage(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
 
   
 #ifdef USE_GDK_IMLIB
 
@@ -458,7 +514,11 @@ void wxBitmap::RecreateImage(void)
 
 void wxBitmap::Render(void)
 {
 
 void wxBitmap::Render(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
 
   
 #ifdef USE_GDK_IMLIB
 
index 1229a9516e0c6ddc145edcd63db41e7b23b6469a..9b36dfce3d3571f4cab95c728264b3b3893a3d20 100644 (file)
@@ -23,7 +23,8 @@ class wxBrushRefData: public wxObjectRefData
   public:
   
     wxBrushRefData(void);
   public:
   
     wxBrushRefData(void);
-  
+    wxBrushRefData( const wxBrushRefData& data );
     int        m_style;
     wxBitmap   m_stipple;
     wxColour   m_colour;
     int        m_style;
     wxBitmap   m_stipple;
     wxColour   m_colour;
@@ -34,6 +35,13 @@ wxBrushRefData::wxBrushRefData(void)
   m_style = 0;
 }
 
   m_style = 0;
 }
 
+wxBrushRefData::wxBrushRefData( const wxBrushRefData& data )
+{
+  m_style = data.m_style;
+  m_stipple = data.m_stipple;
+  m_colour = data.m_colour;
+}
+
 //-----------------------------------------------------------------------------
 
 #define M_BRUSHDATA ((wxBrushRefData *)m_refData)
 //-----------------------------------------------------------------------------
 
 #define M_BRUSHDATA ((wxBrushRefData *)m_refData)
@@ -116,17 +124,78 @@ bool wxBrush::Ok(void) const
 
 int wxBrush::GetStyle(void) const
 {
 
 int wxBrush::GetStyle(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return 0;
+  }
+
   return M_BRUSHDATA->m_style;
 }
 
 wxColour &wxBrush::GetColour(void) const
 {
   return M_BRUSHDATA->m_style;
 }
 
 wxColour &wxBrush::GetColour(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return wxNullColour;
+  }
+  
   return M_BRUSHDATA->m_colour;
 }
 
 wxBitmap *wxBrush::GetStipple(void) const
 {
   return M_BRUSHDATA->m_colour;
 }
 
 wxBitmap *wxBrush::GetStipple(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return &wxNullBitmap;
+  }
+  
   return &M_BRUSHDATA->m_stipple;
 }
 
   return &M_BRUSHDATA->m_stipple;
 }
 
+void wxBrush::SetColour( const wxColour& col )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour = col;
+}
+
+void wxBrush::SetColour( const wxString& col )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour = col;
+}
+
+void wxBrush::SetColour( unsigned char r, unsigned char g, unsigned char b )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour.Set( r, g, b );
+}
+
+void wxBrush::SetStyle( int style )
+{
+  Unshare();
+  M_BRUSHDATA->m_style = style;
+}
+
+void wxBrush::SetStipple( const wxBitmap& stipple )
+{
+  Unshare();
+  M_BRUSHDATA->m_stipple = stipple;
+}
+
+void wxBrush::Unshare(void)
+{
+  if (!m_refData)
+  {
+    m_refData = new wxBrushRefData();
+  }
+  else
+  {
+    wxBrushRefData* ref = new wxBrushRefData( *(wxBrushRefData*)m_refData );
+    UnRef();
+    m_refData = ref;
+  }
+}
 
 
index f9d2fa62a28677e473058f23fbc4892e7051c3c0..5b465727f882e435ed78bd1042f1d68b7e985c98 100644 (file)
@@ -165,25 +165,40 @@ void wxColour::Set( const unsigned char red, const unsigned char green, const un
 
 unsigned char wxColour::Red(void) const
 {
 
 unsigned char wxColour::Red(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
 }
 
 unsigned char wxColour::Green(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
 }
 
 unsigned char wxColour::Green(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
 }
 
 unsigned char wxColour::Blue(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
 }
 
 unsigned char wxColour::Blue(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
 }
 
 bool wxColour::Ok(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
 }
 
 bool wxColour::Ok(void) const
 {
-  return (m_refData);
+  return (m_refData != NULL);
 }
 
 void wxColour::CalcPixel( GdkColormap *cmap )
 }
 
 void wxColour::CalcPixel( GdkColormap *cmap )
index dfb4fd8be24308b3717e7addc07e8f166a04758d..ef95c79be8d2a92c0335292ef56c1e2714b9469a 100644 (file)
@@ -179,25 +179,27 @@ bool wxFont::operator != ( const wxFont& font )
 
 bool wxFont::Ok() const
 {
 
 bool wxFont::Ok() const
 {
-  if (!m_refData)
-  {
-    wxFAIL_MSG( "invalid font" );
-    return FALSE;
-  }
-  else
-    return TRUE;
+  return (m_refData != NULL);
 }
 
 int wxFont::GetPointSize(void) const
 {
 }
 
 int wxFont::GetPointSize(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok()) 
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
   
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
-  if (!Ok()) return "";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
@@ -205,7 +207,11 @@ wxString wxFont::GetFaceString(void) const
 
 wxString wxFont::GetFaceName(void) const
 {
 
 wxString wxFont::GetFaceName(void) const
 {
-  if (!Ok()) return "";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
@@ -213,14 +219,22 @@ wxString wxFont::GetFaceName(void) const
 
 int wxFont::GetFamily(void) const
 {
 
 int wxFont::GetFamily(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return 0;
+  }
   
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
   
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
   
   switch (M_FONTDATA->m_family)
   {
   
   switch (M_FONTDATA->m_family)
   {
@@ -238,21 +252,33 @@ wxString wxFont::GetFamilyString(void) const
 
 int wxFont::GetFontId(void) const
 {
 
 int wxFont::GetFontId(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
   
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
   
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
   
   switch (M_FONTDATA->m_style)
   {
   
   switch (M_FONTDATA->m_style)
   {
@@ -267,14 +293,22 @@ wxString wxFont::GetStyleString(void) const
 
 int wxFont::GetWeight(void) const
 {
 
 int wxFont::GetWeight(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
 
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
 
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
 
   switch (M_FONTDATA->m_weight)
   {
 
   switch (M_FONTDATA->m_weight)
   {
@@ -289,7 +323,11 @@ wxString wxFont::GetWeightString(void) const
 
 bool wxFont::GetUnderlined(void) const
 {
 
 bool wxFont::GetUnderlined(void) const
 {
-  if (!Ok()) return FALSE;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return FALSE;
+  }
   
   return M_FONTDATA->m_underlined;
 }
   
   return M_FONTDATA->m_underlined;
 }
@@ -305,6 +343,12 @@ static GdkFont *wxLoadQueryNearestFont(int point_size, int fontid,
 
 GdkFont *wxFont::GetInternalFont(float scale) const
 {
 
 GdkFont *wxFont::GetInternalFont(float scale) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return (GdkFont*) NULL;
+  }
+  
   if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font;
    
   long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
   if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font;
    
   long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
index 70a326b33decb1508893922f51e09cec6b5a4e99..bead5e36e2218f77d8c0a375bb2d1e09fb62a612 100644 (file)
@@ -190,6 +190,8 @@ wxFrame::~wxFrame()
 
 bool wxFrame::Show( bool show )
 {
 
 bool wxFrame::Show( bool show )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (show)
   {
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
   if (show)
   {
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
@@ -201,20 +203,23 @@ bool wxFrame::Show( bool show )
 
 void wxFrame::Enable( bool enable )
 {
 
 void wxFrame::Enable( bool enable )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
+  if (!m_mainWindow) return;
+  
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
 }
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
 }
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
-    if ( GetEventHandler()->OnClose() || event.GetForce())
-    {
-        this->Destroy();
-    }
+  if (GetEventHandler()->OnClose() || event.GetForce()) this->Destroy();
 }
 
 bool wxFrame::Destroy()
 {
 }
 
 bool wxFrame::Destroy()
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (!wxPendingDelete.Member(this))
     wxPendingDelete.Append(this);
 
   if (!wxPendingDelete.Member(this))
     wxPendingDelete.Append(this);
 
@@ -229,6 +234,8 @@ void wxFrame::ImplementSetPosition(void)
 
 void wxFrame::Centre( int direction )
 {
 
 void wxFrame::Centre( int direction )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (direction & wxVERTICAL == wxVERTICAL) m_y = (gdk_screen_height () - m_height) / 2;
   ImplementSetPosition();
   if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (direction & wxVERTICAL == wxVERTICAL) m_y = (gdk_screen_height () - m_height) / 2;
   ImplementSetPosition();
@@ -236,6 +243,8 @@ void wxFrame::Centre( int direction )
 
 void wxFrame::GetClientSize( int *width, int *height ) const
 {
 
 void wxFrame::GetClientSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxWindow::GetClientSize( width, height );
   if (height)
   {
   wxWindow::GetClientSize( width, height );
   if (height)
   {
@@ -252,6 +261,8 @@ void wxFrame::GetClientSize( int *width, int *height ) const
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   int h = height;
   if (m_frameMenuBar) h += wxMENU_HEIGHT;
   if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
   int h = height;
   if (m_frameMenuBar) h += wxMENU_HEIGHT;
   if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
@@ -342,6 +353,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if ( GetAutoLayout() )
     Layout();
   else {
   if ( GetAutoLayout() )
     Layout();
   else {
@@ -378,6 +391,12 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 
 void wxFrame::AddChild( wxWindow *child )
 {
 
 void wxFrame::AddChild( wxWindow *child )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_mainWindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (child != NULL),  "invalid child" );
+  wxASSERT_MSG( (child->m_widget != NULL), "invalid child" );
+  
   // wxFrame and wxDialog as children aren't placed into the parents
   
   if (IS_KIND_OF(child,wxMDIChildFrame)) wxFAIL_MSG( "wxFrame::AddChild error.\n" );
   // wxFrame and wxDialog as children aren't placed into the parents
   
   if (IS_KIND_OF(child,wxMDIChildFrame)) wxFAIL_MSG( "wxFrame::AddChild error.\n" );
@@ -424,6 +443,10 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_mainWindow != NULL), "invalid frame" );
+  
   m_frameMenuBar = menuBar;
   
   if (m_frameMenuBar)
   m_frameMenuBar = menuBar;
   
   if (m_frameMenuBar)
@@ -452,6 +475,8 @@ wxMenuBar *wxFrame::GetMenuBar(void) const
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
 
   m_addPrivateChild = TRUE;
   wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
 
   m_addPrivateChild = TRUE;
@@ -473,6 +498,8 @@ wxToolBar *wxFrame::GetToolBar(void) const
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
   m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
   wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
   m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
@@ -503,6 +530,8 @@ wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id,
 
 void wxFrame::SetStatusText(const wxString& text, int number)
 {
 
 void wxFrame::SetStatusText(const wxString& text, int number)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
   m_frameStatusBar->SetStatusText(text, number);
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
   m_frameStatusBar->SetStatusText(text, number);
@@ -510,6 +539,8 @@ void wxFrame::SetStatusText(const wxString& text, int number)
 
 void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
 
 void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
 
   m_frameStatusBar->SetStatusWidths(n, widths_field);
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
 
   m_frameStatusBar->SetStatusWidths(n, widths_field);
@@ -522,6 +553,8 @@ wxStatusBar *wxFrame::GetStatusBar(void) const
 
 void wxFrame::SetTitle( const wxString &title )
 {
 
 void wxFrame::SetTitle( const wxString &title )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   m_title = title;
   if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
   m_title = title;
   if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
@@ -529,6 +562,8 @@ void wxFrame::SetTitle( const wxString &title )
 
 void wxFrame::SetIcon( const wxIcon &icon )
 {
 
 void wxFrame::SetIcon( const wxIcon &icon )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   m_icon = icon;
   if (!icon.Ok()) return;
   
   m_icon = icon;
   if (!icon.Ok()) return;
   
index b50ec2063e359f4b69335178006a7b035791f068..0a785a8deea700397375a82e2074e5c37aeee60c 100644 (file)
@@ -40,6 +40,15 @@ wxPenRefData::wxPenRefData(void)
   m_capStyle = wxCAP_ROUND;
 }
 
   m_capStyle = wxCAP_ROUND;
 }
 
+wxPenRefData::wxPenRefData( const wxPenRefData& data )
+{
+  m_style = data.m_style;
+  m_width = data.m_width;
+  m_joinStyle = data.m_joinStyle;
+  m_capStyle = data.m_capStyle;
+  m_colour = data.m_colour;
+}
+
 //-----------------------------------------------------------------------------
 
 #define M_PENDATA ((wxPenRefData *)m_refData)
 //-----------------------------------------------------------------------------
 
 #define M_PENDATA ((wxPenRefData *)m_refData)
@@ -109,99 +118,117 @@ bool wxPen::operator != ( const wxPen& pen )
 
 void wxPen::SetColour( const wxColour &colour )
 {
 
 void wxPen::SetColour( const wxColour &colour )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour = colour;
 }
 
 void wxPen::SetColour( const wxString &colourName )
 {
   M_PENDATA->m_colour = colour;
 }
 
 void wxPen::SetColour( const wxString &colourName )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour = colourName;
 }
 
 void wxPen::SetColour( int red, int green, int blue )
 {
   M_PENDATA->m_colour = colourName;
 }
 
 void wxPen::SetColour( int red, int green, int blue )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour.Set( red, green, blue );
 }
 
 void wxPen::SetCap( int capStyle )
 {
   M_PENDATA->m_colour.Set( red, green, blue );
 }
 
 void wxPen::SetCap( int capStyle )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_capStyle = capStyle;
 }
 
 void wxPen::SetJoin( int joinStyle )
 {
   M_PENDATA->m_capStyle = capStyle;
 }
 
 void wxPen::SetJoin( int joinStyle )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_joinStyle = joinStyle;
 }
 
 void wxPen::SetStyle( int style )
 {
   M_PENDATA->m_joinStyle = joinStyle;
 }
 
 void wxPen::SetStyle( int style )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_style = style;
 }
 
 void wxPen::SetWidth( int width )
 {
   M_PENDATA->m_style = style;
 }
 
 void wxPen::SetWidth( int width )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_width = width;
 }
 
 int wxPen::GetCap(void) const
 {
   M_PENDATA->m_width = width;
 }
 
 int wxPen::GetCap(void) const
 {
+  if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
   return M_PENDATA->m_capStyle;
 }
 
 int wxPen::GetJoin(void) const
 {
   if (!m_refData)
   return M_PENDATA->m_capStyle;
 }
 
 int wxPen::GetJoin(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_joinStyle;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_joinStyle;
 }
 
 int wxPen::GetStyle(void) const
 {
   if (!m_refData)
 }
 
 int wxPen::GetStyle(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_style;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_style;
 }
 
 int wxPen::GetWidth(void) const
 {
   if (!m_refData)
 }
 
 int wxPen::GetWidth(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_width;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_width;
 }
 
 wxColour &wxPen::GetColour(void) const
 {
   if (!m_refData)
 }
 
 wxColour &wxPen::GetColour(void) const
 {
   if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid pen" );
     return wxNullColour;
     return wxNullColour;
-  else
-    return M_PENDATA->m_colour;
+  }
+  
+  return M_PENDATA->m_colour;
 }
 
 bool wxPen::Ok(void) const
 {
 }
 
 bool wxPen::Ok(void) const
 {
-  return (m_refData);
+  return (m_refData != NULL);
+}
+
+void wxPen::Unshare(void)
+{
+  if (!m_refData)
+  {
+    m_refData = new wxPenRefData();
+  }
+  else
+  {
+    wxPenRefData* ref = new wxPenRefData( *(wxPenRefData*)m_refData );
+    UnRef();
+    m_refData = ref;
+  }
 }
 
 }
 
index 805ac0a2cac114aed6c4dc9d12ed8d32cad83f27..66a3e6f593f871c4f69356d277ead5b569ee1c2f 100644 (file)
@@ -158,6 +158,10 @@ void wxRadioBox::OnSize( wxSizeEvent &event )
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
     y += 20;
     
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
     y += 20;
     
+    int w = m_width-10;
+    if (w < 15) w = 15;
+    gtk_widget_set_usize( button, w, 20 );
+      
     node = node->Next();
   }
 }
     node = node->Next();
   }
 }
index 0c574153af321c0154786c0898031d73d919ccdb..bec738c78646724e1912db01251d0234eae08452 100644 (file)
@@ -1123,6 +1123,8 @@ bool wxWindow::HasVMT(void)
 
 bool wxWindow::Close( bool force )
 {
 
 bool wxWindow::Close( bool force )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
   event.SetForce(force);
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
   event.SetForce(force);
@@ -1132,6 +1134,8 @@ bool wxWindow::Close( bool force )
 
 bool wxWindow::Destroy(void)
 {
 
 bool wxWindow::Destroy(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
@@ -1192,6 +1196,8 @@ void wxWindow::ImplementSetPosition(void)
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_resizing) return; // I don't like recursions
   m_resizing = TRUE;
   
   if (m_resizing) return; // I don't like recursions
   m_resizing = TRUE;
   
@@ -1251,12 +1257,16 @@ void wxWindow::Move( int x, int y )
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
 }
 
 void wxWindow::SetClientSize( int width, int height )
 {
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
 }
 
 void wxWindow::SetClientSize( int width, int height )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (!m_wxwindow)
   {
     SetSize( width, height );
   if (!m_wxwindow)
   {
     SetSize( width, height );
@@ -1314,6 +1324,8 @@ void wxWindow::SetClientSize( int width, int height )
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (!m_wxwindow)
   {
     if (width) (*width) = m_width;
   if (!m_wxwindow)
   {
     if (width) (*width) = m_width;
@@ -1375,12 +1387,16 @@ void wxWindow::GetClientSize( int *width, int *height ) const
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
 }
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
 }
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
@@ -1406,6 +1422,8 @@ void wxWindow::ClientToScreen( int *x, int *y )
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
@@ -1431,6 +1449,8 @@ void wxWindow::ScreenToClient( int *x, int *y )
 
 void wxWindow::Centre( int direction )
 {
 
 void wxWindow::Centre( int direction )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (IS_KIND_OF(this,wxDialog) || IS_KIND_OF(this,wxFrame))
   {
     if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (IS_KIND_OF(this,wxDialog) || IS_KIND_OF(this,wxFrame))
   {
     if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
@@ -1453,6 +1473,8 @@ void wxWindow::Centre( int direction )
 
 void wxWindow::Fit(void)
 {
 
 void wxWindow::Fit(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   int maxX = 0;
   int maxY = 0;
   wxNode *node = GetChildren()->First();
   int maxX = 0;
   int maxY = 0;
   wxNode *node = GetChildren()->First();
@@ -1474,6 +1496,8 @@ void wxWindow::Fit(void)
 
 void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
 {
 
 void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_minWidth = minW;
   m_minHeight = minH;
   m_maxWidth = maxW;
   m_minWidth = minW;
   m_minHeight = minH;
   m_maxWidth = maxW;
@@ -1487,6 +1511,8 @@ void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 
 bool wxWindow::Show( bool show )
 {
 
 bool wxWindow::Show( bool show )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (show)
     gtk_widget_show( m_widget );
   else
   if (show)
     gtk_widget_show( m_widget );
   else
@@ -1497,6 +1523,8 @@ bool wxWindow::Show( bool show )
 
 void wxWindow::Enable( bool enable )
 {
 
 void wxWindow::Enable( bool enable )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
@@ -1504,12 +1532,28 @@ void wxWindow::Enable( bool enable )
 
 int wxWindow::GetCharHeight(void) const
 {
 
 int wxWindow::GetCharHeight(void) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  if (!m_font.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return -1;
+  }
+  
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return font->ascent + font->descent;
 }
 
 int wxWindow::GetCharWidth(void) const
 {
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return font->ascent + font->descent;
 }
 
 int wxWindow::GetCharWidth(void) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  if (!m_font.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return -1;
+  }
+  
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return gdk_string_width( font, "H" );
 }
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return gdk_string_width( font, "H" );
 }
@@ -1517,9 +1561,18 @@ int wxWindow::GetCharWidth(void) const
 void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
   int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
 {
 void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
   int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxFont fontToUse = m_font;
   if (theFont) fontToUse = *theFont;
   
   wxFont fontToUse = m_font;
   if (theFont) fontToUse = *theFont;
   
+  if (!fontToUse.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return;
+  }
+  wxASSERT_MSG( (m_font.Ok()), "invalid font" );
+  
   GdkFont *font = fontToUse.GetInternalFont( 1.0 );
   if (x) (*x) = gdk_string_width( font, string );
   if (y) (*y) = font->ascent + font->descent;
   GdkFont *font = fontToUse.GetInternalFont( 1.0 );
   if (x) (*x) = gdk_string_width( font, string );
   if (y) (*y) = font->ascent + font->descent;
@@ -1547,6 +1600,8 @@ void wxWindow::MakeModal( bool modal )
 
 void wxWindow::SetFocus(void)
 {
 
 void wxWindow::SetFocus(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   if (connect_widget)
   {
   GtkWidget *connect_widget = GetConnectWidget();
   if (connect_widget)
   {
@@ -1564,6 +1619,11 @@ bool wxWindow::OnClose(void)
 
 void wxWindow::AddChild( wxWindow *child )
 {
 
 void wxWindow::AddChild( wxWindow *child )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "window need client area" );
+  wxASSERT_MSG( (child != NULL), "invalid child" );
+  wxASSERT_MSG( (child->m_widget != NULL), "invalid child" );
+  
   // Addchild is (often) called before the program
   // has left the parents constructor so that no
   // virtual tables work yet. The approach below
   // Addchild is (often) called before the program
   // has left the parents constructor so that no
   // virtual tables work yet. The approach below
@@ -1636,7 +1696,7 @@ wxList *wxWindow::GetChildren(void)
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
- GetChildren()->DeleteObject( child );
 GetChildren()->DeleteObject( child );
   child->m_parent = (wxWindow *) NULL;
 }
 
   child->m_parent = (wxWindow *) NULL;
 }
 
@@ -1652,11 +1712,15 @@ int wxWindow::GetReturnCode(void)
 
 void wxWindow::Raise(void)
 {
 
 void wxWindow::Raise(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_widget) gdk_window_raise( m_widget->window );
 }
 
 void wxWindow::Lower(void)
 {
   if (m_widget) gdk_window_raise( m_widget->window );
 }
 
 void wxWindow::Lower(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_widget) gdk_window_lower( m_widget->window );
 }
 
   if (m_widget) gdk_window_lower( m_widget->window );
 }
 
@@ -1672,28 +1736,28 @@ void wxWindow::SetEventHandler( wxEvtHandler *handler )
 
 void wxWindow::PushEventHandler(wxEvtHandler *handler)
 {
 
 void wxWindow::PushEventHandler(wxEvtHandler *handler)
 {
-       handler->SetNextHandler(GetEventHandler());
-       SetEventHandler(handler);
+  handler->SetNextHandler(GetEventHandler());
+  SetEventHandler(handler);
 }
 
 wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
 {
 }
 
 wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
 {
-       if ( GetEventHandler() )
-       {
-               wxEvtHandler *handlerA = GetEventHandler();
-               wxEvtHandler *handlerB = handlerA->GetNextHandler();
-               handlerA->SetNextHandler((wxEvtHandler *) NULL);
-               SetEventHandler(handlerB);
-               if ( deleteHandler )
-               {
-                       delete handlerA;
-                       return (wxEvtHandler *) NULL;
-               }
-               else
-                       return handlerA;
-       }
-       else
-               return (wxEvtHandler *) NULL;
+  if (GetEventHandler())
+  {
+    wxEvtHandler *handlerA = GetEventHandler();
+    wxEvtHandler *handlerB = handlerA->GetNextHandler();
+    handlerA->SetNextHandler((wxEvtHandler *) NULL);
+    SetEventHandler(handlerB);
+    if (deleteHandler)
+    {
+      delete handlerA;
+      return (wxEvtHandler*) NULL;
+    }
+    else
+      return handlerA;
+  }
+  else
+   return (wxEvtHandler *) NULL;
 }
 
 wxValidator *wxWindow::GetValidator(void)
 }
 
 wxValidator *wxWindow::GetValidator(void)
@@ -1725,6 +1789,8 @@ wxWindowID wxWindow::GetId(void)
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_cursor == NULL)
   {
     wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
   if (m_cursor == NULL)
   {
     wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
@@ -1750,6 +1816,8 @@ void wxWindow::SetCursor( const wxCursor &cursor )
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (eraseBackground && m_wxwindow && m_wxwindow->window)
   {
     if (rect)
   if (eraseBackground && m_wxwindow && m_wxwindow->window)
   {
     if (rect)
@@ -1819,6 +1887,8 @@ bool wxWindow::IsExposed( const wxRect& rect ) const
 
 void wxWindow::Clear(void)
 {
 
 void wxWindow::Clear(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
 }
 
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
 }
 
@@ -1829,6 +1899,8 @@ wxColour wxWindow::GetBackgroundColour(void) const
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_backgroundColour = colour;
   if (m_wxwindow)
   {
   m_backgroundColour = colour;
   if (m_wxwindow)
   {
@@ -1851,6 +1923,8 @@ void wxWindow::SetForegroundColour( const wxColour &colour )
 
 bool wxWindow::Validate(void)
 {
 
 bool wxWindow::Validate(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1864,6 +1938,8 @@ bool wxWindow::Validate(void)
 
 bool wxWindow::TransferDataToWindow(void)
 {
 
 bool wxWindow::TransferDataToWindow(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1881,6 +1957,8 @@ bool wxWindow::TransferDataToWindow(void)
 
 bool wxWindow::TransferDataFromWindow(void)
 {
 
 bool wxWindow::TransferDataFromWindow(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1904,6 +1982,8 @@ void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) )
 
 void wxWindow::InitDialog(void)
 {
 
 void wxWindow::InitDialog(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
@@ -1924,6 +2004,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   SetInvokingWindow( menu, this );
   gtk_menu_popup( GTK_MENU(menu->m_menu), (GtkWidget *) NULL, (GtkWidget *) NULL, (GtkMenuPositionFunc) NULL, NULL, 0, 0 );
   return TRUE;
   SetInvokingWindow( menu, this );
   gtk_menu_popup( GTK_MENU(menu->m_menu), (GtkWidget *) NULL, (GtkWidget *) NULL, (GtkMenuPositionFunc) NULL, NULL, 0, 0 );
   return TRUE;
@@ -1931,6 +2013,8 @@ bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 
 void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
 {
 
 void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GtkWidget *dnd_widget = GetConnectWidget();
   
   DisconnectDnDWidget( dnd_widget );
   GtkWidget *dnd_widget = GetConnectWidget();
   
   DisconnectDnDWidget( dnd_widget );
@@ -1982,6 +2066,8 @@ bool wxWindow::IsOwnGtkWindow( GdkWindow *window )
 
 void wxWindow::SetFont( const wxFont &font )
 {
 
 void wxWindow::SetFont( const wxFont &font )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (((wxFont*)&font)->Ok())
     m_font = font;
   else
   if (((wxFont*)&font)->Ok())
     m_font = font;
   else
@@ -2021,6 +2107,10 @@ long wxWindow::GetWindowStyleFlag(void) const
 
 void wxWindow::CaptureMouse(void)
 {
 
 void wxWindow::CaptureMouse(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (g_capturing == FALSE), "CaptureMouse called twice" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_add( connect_widget );
   gdk_pointer_grab ( connect_widget->window, FALSE,
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_add( connect_widget );
   gdk_pointer_grab ( connect_widget->window, FALSE,
@@ -2034,6 +2124,10 @@ void wxWindow::CaptureMouse(void)
 
 void wxWindow::ReleaseMouse(void)
 {
 
 void wxWindow::ReleaseMouse(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (g_capturing == TRUE), "ReleaseMouse called twice" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
@@ -2105,6 +2199,10 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
 {
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return;
 
   if (orient == wxHORIZONTAL)
@@ -2159,6 +2257,10 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return;
   
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return;
   
   if (orient == wxHORIZONTAL)
@@ -2188,6 +2290,10 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2198,6 +2304,10 @@ int wxWindow::GetScrollThumb( int orient ) const
 
 int wxWindow::GetScrollPos( int orient ) const
 {
 
 int wxWindow::GetScrollPos( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2208,6 +2318,10 @@ int wxWindow::GetScrollPos( int orient ) const
 
 int wxWindow::GetScrollRange( int orient ) const
 {
 
 int wxWindow::GetScrollRange( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2218,32 +2332,11 @@ int wxWindow::GetScrollRange( int orient ) const
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
-  if (!m_wxwindow) return;
-  
-/*
-  bool refresh = FALSE;
-    
-  if ((m_drawingOffsetX == 0) && (m_drawingOffsetY == 0))
-  {
-    m_drawingOffsetX = -16000;
-    m_drawingOffsetY = -16000;
-    refresh = TRUE;
-  }
-  else
-  {
-    m_drawingOffsetX += dx;
-    m_drawingOffsetY += dy;
-  }
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
   
   
-//  printf( "X: %d  Y: %d  \n", (int)m_drawingOffsetX, (int)m_drawingOffsetY );
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
   
   
-  gtk_myfixed_set_offset( GTK_MYFIXED(m_wxwindow), m_drawingOffsetX, m_drawingOffsetY );
-  
-  if (refresh) Refresh();
-  
-    The code here is very nifty, but it doesn't work with
-    overlapping windows...
-*/
+  if (!m_wxwindow) return;
 
     int cw = 0;
     int ch = 0;
 
     int cw = 0;
     int ch = 0;
index 8288d870daf7ce76edbda683ff58fb4db614b290..52949c26ea41c352234afafc308a9203d3345175 100644 (file)
@@ -24,24 +24,13 @@ class wxAccelRefData: public wxObjectRefData
   public:
   
     wxAccelRefData(void);
   public:
   
     wxAccelRefData(void);
-    ~wxAccelRefData(void);
   
     wxList m_accels;
 };
 
 wxAccelRefData::wxAccelRefData(void)
 {
   
     wxList m_accels;
 };
 
 wxAccelRefData::wxAccelRefData(void)
 {
-}
-
-wxAccelRefData::~wxAccelRefData(void)
-{
-  wxNode *node = m_accels.First();
-  while (node)
-  {
-    wxAcceleratorEntry *entry = (wxAcceleratorEntry *)node->Data();
-    delete entry;
-    node = node->Next();
-  }
+  m_accels.DeleteContents( TRUE );
 }
 
 //-----------------------------------------------------------------------------
 }
 
 //-----------------------------------------------------------------------------
@@ -52,7 +41,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxAcceleratorTable,wxObject)
   
 wxAcceleratorTable::wxAcceleratorTable()
 {
   
 wxAcceleratorTable::wxAcceleratorTable()
 {
-  m_refData = new wxAccelRefData();
 }
 
 wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
 }
 
 wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
@@ -64,7 +52,7 @@ wxAcceleratorTable::wxAcceleratorTable( int n, wxAcceleratorEntry entries[] )
     int keycode = entries[i].GetKeyCode();
     int command = entries[i].GetCommand();
     if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
     int keycode = entries[i].GetKeyCode();
     int command = entries[i].GetCommand();
     if ((keycode >= (int)'A') && (keycode <= (int)'Z')) keycode = (int)tolower( (char)keycode );
-    M_ACCELDATA->m_accels.Append( (wxObject*) new wxAcceleratorEntry( flag, keycode, command ) );
+    M_ACCELDATA->m_accels.Append( new wxAcceleratorEntry( flag, keycode, command ) );
   }
 }
 
   }
 }
 
@@ -79,6 +67,8 @@ bool wxAcceleratorTable::Ok() const
 
 int wxAcceleratorTable::GetCommand( wxKeyEvent &event )
 {
 
 int wxAcceleratorTable::GetCommand( wxKeyEvent &event )
 {
+  if (!Ok()) return -1;
+
   wxNode *node = M_ACCELDATA->m_accels.First();
   while (node)
   {
   wxNode *node = M_ACCELDATA->m_accels.First();
   while (node)
   {
index 291a4e878958bccc3dc934ca9397e177c5b4dfce..d2acce935aa53bef680c0a084dcae80269917eef 100644 (file)
@@ -293,8 +293,6 @@ void wxApp::CommonCleanUp(void)
   wxCleanUpResourceSystem();
 
   wxSystemSettings::Done();
   wxCleanUpResourceSystem();
 
   wxSystemSettings::Done();
-
-  wxClassInfo::CleanUpClasses();
 }
 
 wxLog *wxApp::CreateLogTarget()
 }
 
 wxLog *wxApp::CreateLogTarget()
@@ -314,11 +312,7 @@ int wxEntry( int argc, char *argv[] )
 
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 
 
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 
-#if !defined(_WINDLL)
   streambuf* sBuf = new wxDebugStreamBuf;
   streambuf* sBuf = new wxDebugStreamBuf;
-#else
-  streambuf* sBuf = NULL;
-#endif
   ostream* oStr = new ostream(sBuf) ;
   wxDebugContext::SetStream(oStr, sBuf);
 
   ostream* oStr = new ostream(sBuf) ;
   wxDebugContext::SetStream(oStr, sBuf);
 
@@ -348,6 +342,12 @@ int wxEntry( int argc, char *argv[] )
   wxTheApp->argc = argc;
   wxTheApp->argv = argv;
 
   wxTheApp->argc = argc;
   wxTheApp->argv = argv;
 
+  char name[200];
+  strcpy( name, argv[0] );
+  strcpy( name, wxFileNameFromPath(name) );
+  wxStripExtension( name );
+  wxTheApp->SetAppName( name );
+  
   gtk_set_locale();
   
   gtk_init( &argc, &argv );
   gtk_set_locale();
   
   gtk_init( &argc, &argv );
@@ -386,11 +386,15 @@ int wxEntry( int argc, char *argv[] )
 
   wxDELETE(wxTheApp);
 
 
   wxDELETE(wxTheApp);
 
+  wxLog *oldLog = wxLog::SetActiveTarget( NULL );
+  if (oldLog) delete oldLog;
+  
+  wxClassInfo::CleanUpClasses();
+  
+  delete[] wxBuffer;
+  
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
 #if (WXDEBUG && USE_MEMORY_TRACING) || USE_DEBUG_CONTEXT
-  // At this point we want to check if there are any memory
-  // blocks that aren't part of the wxDebugContext itself,
-  // as a special case. Then when dumping we need to ignore
-  // wxDebugContext, too.
+  
   if (wxDebugContext::CountObjectsLeft() > 0)
   {
     wxTrace("There were memory leaks.\n");
   if (wxDebugContext::CountObjectsLeft() > 0)
   {
     wxTrace("There were memory leaks.\n");
@@ -398,6 +402,7 @@ int wxEntry( int argc, char *argv[] )
     wxDebugContext::PrintStatistics();
   }
   wxDebugContext::SetStream(NULL, NULL);
     wxDebugContext::PrintStatistics();
   }
   wxDebugContext::SetStream(NULL, NULL);
+  
 #endif
 
   return retValue;
 #endif
 
   return retValue;
index e4adea4dd18fd9f0142adc82326db8fae2af0b86..e000d6ab3fa02bb446c8d5993aa8a0e00d250a54 100644 (file)
@@ -228,25 +228,39 @@ bool wxBitmap::operator != ( const wxBitmap& bmp )
   
 bool wxBitmap::Ok(void) const
 {
   
 bool wxBitmap::Ok(void) const
 {
-  wxASSERT_MSG( m_refData != NULL, "invalid bitmap" );
   return (m_refData != NULL);
 }
   
 int wxBitmap::GetHeight(void) const
 {
   return (m_refData != NULL);
 }
   
 int wxBitmap::GetHeight(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+
   return M_BMPDATA->m_height;
 }
 
 int wxBitmap::GetWidth(void) const
 {
   return M_BMPDATA->m_height;
 }
 
 int wxBitmap::GetWidth(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+  
   return M_BMPDATA->m_width;
 }
 
 int wxBitmap::GetDepth(void) const
 {
   return M_BMPDATA->m_width;
 }
 
 int wxBitmap::GetDepth(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return -1;
+  }
+  
   return M_BMPDATA->m_bpp;
 }
 
   return M_BMPDATA->m_bpp;
 }
 
@@ -279,14 +293,22 @@ void wxBitmap::SetDepth( int depth )
 
 wxMask *wxBitmap::GetMask(void) const
 {
 
 wxMask *wxBitmap::GetMask(void) const
 {
-  if (!Ok()) return (wxMask *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (wxMask *) NULL;
+  }
   
   return M_BMPDATA->m_mask;
 }
 
 void wxBitmap::SetMask( wxMask *mask )
 {
   
   return M_BMPDATA->m_mask;
 }
 
 void wxBitmap::SetMask( wxMask *mask )
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
   if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
   
   
   if (M_BMPDATA->m_mask) delete M_BMPDATA->m_mask;
   
@@ -295,11 +317,19 @@ void wxBitmap::SetMask( wxMask *mask )
 
 void wxBitmap::Resize( int height, int width )
 {
 
 void wxBitmap::Resize( int height, int width )
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
   
   
 #ifdef USE_GDK_IMLIB
   
-  if (M_BMPDATA->m_bitmap) return;  // not supported for bitmaps
+  if (M_BMPDATA->m_bitmap)
+  {
+    wxFAIL_MSG( "wxBitmap::Resize not supported for mono-bitmaps" );
+    return;
+  }
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -324,9 +354,19 @@ void wxBitmap::Resize( int height, int width )
 bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
 bool wxBitmap::SaveFile( const wxString &name, int WXUNUSED(type), 
   wxPalette *WXUNUSED(palette) )
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return FALSE;
+  }
+  
 #ifdef USE_GDK_IMLIB
 
 #ifdef USE_GDK_IMLIB
 
-  if (!Ok()) return FALSE;
+  if (M_BMPDATA->m_bitmap)
+  {
+    wxFAIL_MSG( "wxBitmap::SaveFile not supported for mono-bitmaps" );
+    return FALSE;
+  }
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
   
   if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -380,7 +420,11 @@ wxPalette *wxBitmap::GetPalette(void) const
 
 GdkPixmap *wxBitmap::GetPixmap(void) const
 {
 
 GdkPixmap *wxBitmap::GetPixmap(void) const
 {
-  if (!Ok()) return (GdkPixmap *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (GdkPixmap *) NULL;
+  }
   
 //  if (!M_BMPDATA->m_image) RecreateImage();
   
   
 //  if (!M_BMPDATA->m_image) RecreateImage();
   
@@ -389,14 +433,22 @@ GdkPixmap *wxBitmap::GetPixmap(void) const
   
 GdkBitmap *wxBitmap::GetBitmap(void) const
 {
   
 GdkBitmap *wxBitmap::GetBitmap(void) const
 {
-  if (!Ok()) return (GdkBitmap *) NULL;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return (GdkBitmap *) NULL;
+  }
   
   return M_BMPDATA->m_bitmap;
 }
   
 void wxBitmap::DestroyImage(void)
 {
   
   return M_BMPDATA->m_bitmap;
 }
   
 void wxBitmap::DestroyImage(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
   if (M_BMPDATA->m_image)
   {
   
   if (M_BMPDATA->m_image)
   {
@@ -407,7 +459,11 @@ void wxBitmap::DestroyImage(void)
 
 void wxBitmap::RecreateImage(void)
 {
 
 void wxBitmap::RecreateImage(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
 
   
 #ifdef USE_GDK_IMLIB
 
@@ -458,7 +514,11 @@ void wxBitmap::RecreateImage(void)
 
 void wxBitmap::Render(void)
 {
 
 void wxBitmap::Render(void)
 {
-  if (!Ok()) return;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid bitmap" );
+    return;
+  }
   
 #ifdef USE_GDK_IMLIB
 
   
 #ifdef USE_GDK_IMLIB
 
index 1229a9516e0c6ddc145edcd63db41e7b23b6469a..9b36dfce3d3571f4cab95c728264b3b3893a3d20 100644 (file)
@@ -23,7 +23,8 @@ class wxBrushRefData: public wxObjectRefData
   public:
   
     wxBrushRefData(void);
   public:
   
     wxBrushRefData(void);
-  
+    wxBrushRefData( const wxBrushRefData& data );
     int        m_style;
     wxBitmap   m_stipple;
     wxColour   m_colour;
     int        m_style;
     wxBitmap   m_stipple;
     wxColour   m_colour;
@@ -34,6 +35,13 @@ wxBrushRefData::wxBrushRefData(void)
   m_style = 0;
 }
 
   m_style = 0;
 }
 
+wxBrushRefData::wxBrushRefData( const wxBrushRefData& data )
+{
+  m_style = data.m_style;
+  m_stipple = data.m_stipple;
+  m_colour = data.m_colour;
+}
+
 //-----------------------------------------------------------------------------
 
 #define M_BRUSHDATA ((wxBrushRefData *)m_refData)
 //-----------------------------------------------------------------------------
 
 #define M_BRUSHDATA ((wxBrushRefData *)m_refData)
@@ -116,17 +124,78 @@ bool wxBrush::Ok(void) const
 
 int wxBrush::GetStyle(void) const
 {
 
 int wxBrush::GetStyle(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return 0;
+  }
+
   return M_BRUSHDATA->m_style;
 }
 
 wxColour &wxBrush::GetColour(void) const
 {
   return M_BRUSHDATA->m_style;
 }
 
 wxColour &wxBrush::GetColour(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return wxNullColour;
+  }
+  
   return M_BRUSHDATA->m_colour;
 }
 
 wxBitmap *wxBrush::GetStipple(void) const
 {
   return M_BRUSHDATA->m_colour;
 }
 
 wxBitmap *wxBrush::GetStipple(void) const
 {
+  if (m_refData == NULL)
+  {
+    wxFAIL_MSG( "invalid brush" );
+    return &wxNullBitmap;
+  }
+  
   return &M_BRUSHDATA->m_stipple;
 }
 
   return &M_BRUSHDATA->m_stipple;
 }
 
+void wxBrush::SetColour( const wxColour& col )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour = col;
+}
+
+void wxBrush::SetColour( const wxString& col )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour = col;
+}
+
+void wxBrush::SetColour( unsigned char r, unsigned char g, unsigned char b )
+{
+  Unshare();
+  M_BRUSHDATA->m_colour.Set( r, g, b );
+}
+
+void wxBrush::SetStyle( int style )
+{
+  Unshare();
+  M_BRUSHDATA->m_style = style;
+}
+
+void wxBrush::SetStipple( const wxBitmap& stipple )
+{
+  Unshare();
+  M_BRUSHDATA->m_stipple = stipple;
+}
+
+void wxBrush::Unshare(void)
+{
+  if (!m_refData)
+  {
+    m_refData = new wxBrushRefData();
+  }
+  else
+  {
+    wxBrushRefData* ref = new wxBrushRefData( *(wxBrushRefData*)m_refData );
+    UnRef();
+    m_refData = ref;
+  }
+}
 
 
index f9d2fa62a28677e473058f23fbc4892e7051c3c0..5b465727f882e435ed78bd1042f1d68b7e985c98 100644 (file)
@@ -165,25 +165,40 @@ void wxColour::Set( const unsigned char red, const unsigned char green, const un
 
 unsigned char wxColour::Red(void) const
 {
 
 unsigned char wxColour::Red(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
 }
 
 unsigned char wxColour::Green(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
 }
 
 unsigned char wxColour::Green(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
 }
 
 unsigned char wxColour::Blue(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
 }
 
 unsigned char wxColour::Blue(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+     wxFAIL_MSG( "invalid colour" );
+     return 0;
+  }
+  
   return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
 }
 
 bool wxColour::Ok(void) const
 {
   return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
 }
 
 bool wxColour::Ok(void) const
 {
-  return (m_refData);
+  return (m_refData != NULL);
 }
 
 void wxColour::CalcPixel( GdkColormap *cmap )
 }
 
 void wxColour::CalcPixel( GdkColormap *cmap )
index dfb4fd8be24308b3717e7addc07e8f166a04758d..ef95c79be8d2a92c0335292ef56c1e2714b9469a 100644 (file)
@@ -179,25 +179,27 @@ bool wxFont::operator != ( const wxFont& font )
 
 bool wxFont::Ok() const
 {
 
 bool wxFont::Ok() const
 {
-  if (!m_refData)
-  {
-    wxFAIL_MSG( "invalid font" );
-    return FALSE;
-  }
-  else
-    return TRUE;
+  return (m_refData != NULL);
 }
 
 int wxFont::GetPointSize(void) const
 {
 }
 
 int wxFont::GetPointSize(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok()) 
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
   
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
-  if (!Ok()) return "";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
@@ -205,7 +207,11 @@ wxString wxFont::GetFaceString(void) const
 
 wxString wxFont::GetFaceName(void) const
 {
 
 wxString wxFont::GetFaceName(void) const
 {
-  if (!Ok()) return "";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return "";
+  }
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
   
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
@@ -213,14 +219,22 @@ wxString wxFont::GetFaceName(void) const
 
 int wxFont::GetFamily(void) const
 {
 
 int wxFont::GetFamily(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+     return 0;
+  }
   
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
   
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
   
   switch (M_FONTDATA->m_family)
   {
   
   switch (M_FONTDATA->m_family)
   {
@@ -238,21 +252,33 @@ wxString wxFont::GetFamilyString(void) const
 
 int wxFont::GetFontId(void) const
 {
 
 int wxFont::GetFontId(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
   
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
   
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
   
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
   
   switch (M_FONTDATA->m_style)
   {
   
   switch (M_FONTDATA->m_style)
   {
@@ -267,14 +293,22 @@ wxString wxFont::GetStyleString(void) const
 
 int wxFont::GetWeight(void) const
 {
 
 int wxFont::GetWeight(void) const
 {
-  if (!Ok()) return 0;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return 0;
+  }
 
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
 
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
-  if (!Ok()) return "wxDEFAULT";
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return "wxDEFAULT";
+  }
 
   switch (M_FONTDATA->m_weight)
   {
 
   switch (M_FONTDATA->m_weight)
   {
@@ -289,7 +323,11 @@ wxString wxFont::GetWeightString(void) const
 
 bool wxFont::GetUnderlined(void) const
 {
 
 bool wxFont::GetUnderlined(void) const
 {
-  if (!Ok()) return FALSE;
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return FALSE;
+  }
   
   return M_FONTDATA->m_underlined;
 }
   
   return M_FONTDATA->m_underlined;
 }
@@ -305,6 +343,12 @@ static GdkFont *wxLoadQueryNearestFont(int point_size, int fontid,
 
 GdkFont *wxFont::GetInternalFont(float scale) const
 {
 
 GdkFont *wxFont::GetInternalFont(float scale) const
 {
+  if (!Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return (GdkFont*) NULL;
+  }
+  
   if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font;
    
   long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
   if (M_FONTDATA->m_byXFontName) return M_FONTDATA->m_font;
    
   long int_scale = long(scale * 100.0 + 0.5); // key for fontlist
index 70a326b33decb1508893922f51e09cec6b5a4e99..bead5e36e2218f77d8c0a375bb2d1e09fb62a612 100644 (file)
@@ -190,6 +190,8 @@ wxFrame::~wxFrame()
 
 bool wxFrame::Show( bool show )
 {
 
 bool wxFrame::Show( bool show )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (show)
   {
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
   if (show)
   {
     wxSizeEvent event( wxSize(m_width,m_height), GetId() );
@@ -201,20 +203,23 @@ bool wxFrame::Show( bool show )
 
 void wxFrame::Enable( bool enable )
 {
 
 void wxFrame::Enable( bool enable )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
+  if (!m_mainWindow) return;
+  
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
 }
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
   wxWindow::Enable( enable );
   gtk_widget_set_sensitive( m_mainWindow, enable );
 }
 
 void wxFrame::OnCloseWindow( wxCloseEvent &event )
 {
-    if ( GetEventHandler()->OnClose() || event.GetForce())
-    {
-        this->Destroy();
-    }
+  if (GetEventHandler()->OnClose() || event.GetForce()) this->Destroy();
 }
 
 bool wxFrame::Destroy()
 {
 }
 
 bool wxFrame::Destroy()
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (!wxPendingDelete.Member(this))
     wxPendingDelete.Append(this);
 
   if (!wxPendingDelete.Member(this))
     wxPendingDelete.Append(this);
 
@@ -229,6 +234,8 @@ void wxFrame::ImplementSetPosition(void)
 
 void wxFrame::Centre( int direction )
 {
 
 void wxFrame::Centre( int direction )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (direction & wxVERTICAL == wxVERTICAL) m_y = (gdk_screen_height () - m_height) / 2;
   ImplementSetPosition();
   if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (direction & wxVERTICAL == wxVERTICAL) m_y = (gdk_screen_height () - m_height) / 2;
   ImplementSetPosition();
@@ -236,6 +243,8 @@ void wxFrame::Centre( int direction )
 
 void wxFrame::GetClientSize( int *width, int *height ) const
 {
 
 void wxFrame::GetClientSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxWindow::GetClientSize( width, height );
   if (height)
   {
   wxWindow::GetClientSize( width, height );
   if (height)
   {
@@ -252,6 +261,8 @@ void wxFrame::GetClientSize( int *width, int *height ) const
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
 
 void wxFrame::SetClientSize( int const width, int const height )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   int h = height;
   if (m_frameMenuBar) h += wxMENU_HEIGHT;
   if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
   int h = height;
   if (m_frameMenuBar) h += wxMENU_HEIGHT;
   if (m_frameStatusBar) h += wxSTATUS_HEIGHT;
@@ -342,6 +353,8 @@ void wxFrame::GtkOnSize( int WXUNUSED(x), int WXUNUSED(y), int width, int height
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
 
 void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   if ( GetAutoLayout() )
     Layout();
   else {
   if ( GetAutoLayout() )
     Layout();
   else {
@@ -378,6 +391,12 @@ void wxFrame::OnSize( wxSizeEvent &WXUNUSED(event) )
 
 void wxFrame::AddChild( wxWindow *child )
 {
 
 void wxFrame::AddChild( wxWindow *child )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_mainWindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (child != NULL),  "invalid child" );
+  wxASSERT_MSG( (child->m_widget != NULL), "invalid child" );
+  
   // wxFrame and wxDialog as children aren't placed into the parents
   
   if (IS_KIND_OF(child,wxMDIChildFrame)) wxFAIL_MSG( "wxFrame::AddChild error.\n" );
   // wxFrame and wxDialog as children aren't placed into the parents
   
   if (IS_KIND_OF(child,wxMDIChildFrame)) wxFAIL_MSG( "wxFrame::AddChild error.\n" );
@@ -424,6 +443,10 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
 
 void wxFrame::SetMenuBar( wxMenuBar *menuBar )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "invalid frame" );
+  wxASSERT_MSG( (m_mainWindow != NULL), "invalid frame" );
+  
   m_frameMenuBar = menuBar;
   
   if (m_frameMenuBar)
   m_frameMenuBar = menuBar;
   
   if (m_frameMenuBar)
@@ -452,6 +475,8 @@ wxMenuBar *wxFrame::GetMenuBar(void) const
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
 
 wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
 
   m_addPrivateChild = TRUE;
   wxCHECK_MSG( m_frameToolBar == NULL, FALSE, "recreating toolbar in wxFrame" );
 
   m_addPrivateChild = TRUE;
@@ -473,6 +498,8 @@ wxToolBar *wxFrame::GetToolBar(void) const
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
 
 wxStatusBar* wxFrame::CreateStatusBar( int number, long style, wxWindowID id, const wxString& name )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
   m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
   wxCHECK_MSG( m_frameStatusBar == NULL, FALSE, "recreating status bar in wxFrame" );
 
   m_frameStatusBar = OnCreateStatusBar( number, style, id, name );
@@ -503,6 +530,8 @@ wxStatusBar *wxFrame::OnCreateStatusBar( int number, long style, wxWindowID id,
 
 void wxFrame::SetStatusText(const wxString& text, int number)
 {
 
 void wxFrame::SetStatusText(const wxString& text, int number)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
   m_frameStatusBar->SetStatusText(text, number);
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set text for" );
 
   m_frameStatusBar->SetStatusText(text, number);
@@ -510,6 +539,8 @@ void wxFrame::SetStatusText(const wxString& text, int number)
 
 void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
 
 void wxFrame::SetStatusWidths(int n, const int widths_field[] )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
 
   m_frameStatusBar->SetStatusWidths(n, widths_field);
   wxCHECK_RET( m_frameStatusBar != NULL, "no statusbar to set widths for" );
 
   m_frameStatusBar->SetStatusWidths(n, widths_field);
@@ -522,6 +553,8 @@ wxStatusBar *wxFrame::GetStatusBar(void) const
 
 void wxFrame::SetTitle( const wxString &title )
 {
 
 void wxFrame::SetTitle( const wxString &title )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   m_title = title;
   if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
   m_title = title;
   if (m_title.IsNull()) m_title = "";
   gtk_window_set_title( GTK_WINDOW(m_widget), title );
@@ -529,6 +562,8 @@ void wxFrame::SetTitle( const wxString &title )
 
 void wxFrame::SetIcon( const wxIcon &icon )
 {
 
 void wxFrame::SetIcon( const wxIcon &icon )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid frame" );
+  
   m_icon = icon;
   if (!icon.Ok()) return;
   
   m_icon = icon;
   if (!icon.Ok()) return;
   
index b50ec2063e359f4b69335178006a7b035791f068..0a785a8deea700397375a82e2074e5c37aeee60c 100644 (file)
@@ -40,6 +40,15 @@ wxPenRefData::wxPenRefData(void)
   m_capStyle = wxCAP_ROUND;
 }
 
   m_capStyle = wxCAP_ROUND;
 }
 
+wxPenRefData::wxPenRefData( const wxPenRefData& data )
+{
+  m_style = data.m_style;
+  m_width = data.m_width;
+  m_joinStyle = data.m_joinStyle;
+  m_capStyle = data.m_capStyle;
+  m_colour = data.m_colour;
+}
+
 //-----------------------------------------------------------------------------
 
 #define M_PENDATA ((wxPenRefData *)m_refData)
 //-----------------------------------------------------------------------------
 
 #define M_PENDATA ((wxPenRefData *)m_refData)
@@ -109,99 +118,117 @@ bool wxPen::operator != ( const wxPen& pen )
 
 void wxPen::SetColour( const wxColour &colour )
 {
 
 void wxPen::SetColour( const wxColour &colour )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour = colour;
 }
 
 void wxPen::SetColour( const wxString &colourName )
 {
   M_PENDATA->m_colour = colour;
 }
 
 void wxPen::SetColour( const wxString &colourName )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour = colourName;
 }
 
 void wxPen::SetColour( int red, int green, int blue )
 {
   M_PENDATA->m_colour = colourName;
 }
 
 void wxPen::SetColour( int red, int green, int blue )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_colour.Set( red, green, blue );
 }
 
 void wxPen::SetCap( int capStyle )
 {
   M_PENDATA->m_colour.Set( red, green, blue );
 }
 
 void wxPen::SetCap( int capStyle )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_capStyle = capStyle;
 }
 
 void wxPen::SetJoin( int joinStyle )
 {
   M_PENDATA->m_capStyle = capStyle;
 }
 
 void wxPen::SetJoin( int joinStyle )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_joinStyle = joinStyle;
 }
 
 void wxPen::SetStyle( int style )
 {
   M_PENDATA->m_joinStyle = joinStyle;
 }
 
 void wxPen::SetStyle( int style )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_style = style;
 }
 
 void wxPen::SetWidth( int width )
 {
   M_PENDATA->m_style = style;
 }
 
 void wxPen::SetWidth( int width )
 {
-  if (!m_refData)
-    m_refData = new wxPenRefData();
-
+  Unshare();
   M_PENDATA->m_width = width;
 }
 
 int wxPen::GetCap(void) const
 {
   M_PENDATA->m_width = width;
 }
 
 int wxPen::GetCap(void) const
 {
+  if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
   return M_PENDATA->m_capStyle;
 }
 
 int wxPen::GetJoin(void) const
 {
   if (!m_refData)
   return M_PENDATA->m_capStyle;
 }
 
 int wxPen::GetJoin(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_joinStyle;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_joinStyle;
 }
 
 int wxPen::GetStyle(void) const
 {
   if (!m_refData)
 }
 
 int wxPen::GetStyle(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_style;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_style;
 }
 
 int wxPen::GetWidth(void) const
 {
   if (!m_refData)
 }
 
 int wxPen::GetWidth(void) const
 {
   if (!m_refData)
-    return 0;
-  else
-    return M_PENDATA->m_width;
+  {
+    wxFAIL_MSG( "invalid pen" );
+    return -1;
+  }
+  
+  return M_PENDATA->m_width;
 }
 
 wxColour &wxPen::GetColour(void) const
 {
   if (!m_refData)
 }
 
 wxColour &wxPen::GetColour(void) const
 {
   if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid pen" );
     return wxNullColour;
     return wxNullColour;
-  else
-    return M_PENDATA->m_colour;
+  }
+  
+  return M_PENDATA->m_colour;
 }
 
 bool wxPen::Ok(void) const
 {
 }
 
 bool wxPen::Ok(void) const
 {
-  return (m_refData);
+  return (m_refData != NULL);
+}
+
+void wxPen::Unshare(void)
+{
+  if (!m_refData)
+  {
+    m_refData = new wxPenRefData();
+  }
+  else
+  {
+    wxPenRefData* ref = new wxPenRefData( *(wxPenRefData*)m_refData );
+    UnRef();
+    m_refData = ref;
+  }
 }
 
 }
 
index 805ac0a2cac114aed6c4dc9d12ed8d32cad83f27..66a3e6f593f871c4f69356d277ead5b569ee1c2f 100644 (file)
@@ -158,6 +158,10 @@ void wxRadioBox::OnSize( wxSizeEvent &event )
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
     y += 20;
     
     gtk_myfixed_move( GTK_MYFIXED(m_parent->m_wxwindow), button, x, y );
     y += 20;
     
+    int w = m_width-10;
+    if (w < 15) w = 15;
+    gtk_widget_set_usize( button, w, 20 );
+      
     node = node->Next();
   }
 }
     node = node->Next();
   }
 }
index 0c574153af321c0154786c0898031d73d919ccdb..bec738c78646724e1912db01251d0234eae08452 100644 (file)
@@ -1123,6 +1123,8 @@ bool wxWindow::HasVMT(void)
 
 bool wxWindow::Close( bool force )
 {
 
 bool wxWindow::Close( bool force )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
   event.SetForce(force);
   wxCloseEvent event(wxEVT_CLOSE_WINDOW, m_windowId);
   event.SetEventObject(this);
   event.SetForce(force);
@@ -1132,6 +1134,8 @@ bool wxWindow::Close( bool force )
 
 bool wxWindow::Destroy(void)
 {
 
 bool wxWindow::Destroy(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
   m_hasVMT = FALSE;
   delete this;
   return TRUE;
@@ -1192,6 +1196,8 @@ void wxWindow::ImplementSetPosition(void)
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
 
 void wxWindow::SetSize( int x, int y, int width, int height, int sizeFlags )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_resizing) return; // I don't like recursions
   m_resizing = TRUE;
   
   if (m_resizing) return; // I don't like recursions
   m_resizing = TRUE;
   
@@ -1251,12 +1257,16 @@ void wxWindow::Move( int x, int y )
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
 
 void wxWindow::GetSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
 }
 
 void wxWindow::SetClientSize( int width, int height )
 {
   if (width) (*width) = m_width;
   if (height) (*height) = m_height;
 }
 
 void wxWindow::SetClientSize( int width, int height )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (!m_wxwindow)
   {
     SetSize( width, height );
   if (!m_wxwindow)
   {
     SetSize( width, height );
@@ -1314,6 +1324,8 @@ void wxWindow::SetClientSize( int width, int height )
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
 
 void wxWindow::GetClientSize( int *width, int *height ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (!m_wxwindow)
   {
     if (width) (*width) = m_width;
   if (!m_wxwindow)
   {
     if (width) (*width) = m_width;
@@ -1375,12 +1387,16 @@ void wxWindow::GetClientSize( int *width, int *height ) const
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
 
 void wxWindow::GetPosition( int *x, int *y ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
 }
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
   if (x) (*x) = m_x;
   if (y) (*y) = m_y;
 }
 
 void wxWindow::ClientToScreen( int *x, int *y )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
@@ -1406,6 +1422,8 @@ void wxWindow::ClientToScreen( int *x, int *y )
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
 
 void wxWindow::ScreenToClient( int *x, int *y )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
   GdkWindow *source = (GdkWindow *) NULL;
   if (m_wxwindow)
     source = m_wxwindow->window;
@@ -1431,6 +1449,8 @@ void wxWindow::ScreenToClient( int *x, int *y )
 
 void wxWindow::Centre( int direction )
 {
 
 void wxWindow::Centre( int direction )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (IS_KIND_OF(this,wxDialog) || IS_KIND_OF(this,wxFrame))
   {
     if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
   if (IS_KIND_OF(this,wxDialog) || IS_KIND_OF(this,wxFrame))
   {
     if (direction & wxHORIZONTAL == wxHORIZONTAL) m_x = (gdk_screen_width () - m_width) / 2;
@@ -1453,6 +1473,8 @@ void wxWindow::Centre( int direction )
 
 void wxWindow::Fit(void)
 {
 
 void wxWindow::Fit(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   int maxX = 0;
   int maxY = 0;
   wxNode *node = GetChildren()->First();
   int maxX = 0;
   int maxY = 0;
   wxNode *node = GetChildren()->First();
@@ -1474,6 +1496,8 @@ void wxWindow::Fit(void)
 
 void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
 {
 
 void wxWindow::SetSizeHints( int minW, int minH, int maxW, int maxH, int WXUNUSED(incW), int WXUNUSED(incH) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_minWidth = minW;
   m_minHeight = minH;
   m_maxWidth = maxW;
   m_minWidth = minW;
   m_minHeight = minH;
   m_maxWidth = maxW;
@@ -1487,6 +1511,8 @@ void wxWindow::OnSize( wxSizeEvent &WXUNUSED(event) )
 
 bool wxWindow::Show( bool show )
 {
 
 bool wxWindow::Show( bool show )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (show)
     gtk_widget_show( m_widget );
   else
   if (show)
     gtk_widget_show( m_widget );
   else
@@ -1497,6 +1523,8 @@ bool wxWindow::Show( bool show )
 
 void wxWindow::Enable( bool enable )
 {
 
 void wxWindow::Enable( bool enable )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
   m_isEnabled = enable;
   gtk_widget_set_sensitive( m_widget, enable );
   if (m_wxwindow) gtk_widget_set_sensitive( m_wxwindow, enable );
@@ -1504,12 +1532,28 @@ void wxWindow::Enable( bool enable )
 
 int wxWindow::GetCharHeight(void) const
 {
 
 int wxWindow::GetCharHeight(void) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  if (!m_font.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return -1;
+  }
+  
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return font->ascent + font->descent;
 }
 
 int wxWindow::GetCharWidth(void) const
 {
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return font->ascent + font->descent;
 }
 
 int wxWindow::GetCharWidth(void) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  if (!m_font.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return -1;
+  }
+  
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return gdk_string_width( font, "H" );
 }
   GdkFont *font = m_font.GetInternalFont( 1.0 );
   return gdk_string_width( font, "H" );
 }
@@ -1517,9 +1561,18 @@ int wxWindow::GetCharWidth(void) const
 void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
   int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
 {
 void wxWindow::GetTextExtent( const wxString& string, int *x, int *y,
   int *descent, int *externalLeading, const wxFont *theFont, bool WXUNUSED(use16) ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxFont fontToUse = m_font;
   if (theFont) fontToUse = *theFont;
   
   wxFont fontToUse = m_font;
   if (theFont) fontToUse = *theFont;
   
+  if (!fontToUse.Ok())
+  {
+    wxFAIL_MSG( "invalid font" );
+    return;
+  }
+  wxASSERT_MSG( (m_font.Ok()), "invalid font" );
+  
   GdkFont *font = fontToUse.GetInternalFont( 1.0 );
   if (x) (*x) = gdk_string_width( font, string );
   if (y) (*y) = font->ascent + font->descent;
   GdkFont *font = fontToUse.GetInternalFont( 1.0 );
   if (x) (*x) = gdk_string_width( font, string );
   if (y) (*y) = font->ascent + font->descent;
@@ -1547,6 +1600,8 @@ void wxWindow::MakeModal( bool modal )
 
 void wxWindow::SetFocus(void)
 {
 
 void wxWindow::SetFocus(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   if (connect_widget)
   {
   GtkWidget *connect_widget = GetConnectWidget();
   if (connect_widget)
   {
@@ -1564,6 +1619,11 @@ bool wxWindow::OnClose(void)
 
 void wxWindow::AddChild( wxWindow *child )
 {
 
 void wxWindow::AddChild( wxWindow *child )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  wxASSERT_MSG( (m_wxwindow != NULL), "window need client area" );
+  wxASSERT_MSG( (child != NULL), "invalid child" );
+  wxASSERT_MSG( (child->m_widget != NULL), "invalid child" );
+  
   // Addchild is (often) called before the program
   // has left the parents constructor so that no
   // virtual tables work yet. The approach below
   // Addchild is (often) called before the program
   // has left the parents constructor so that no
   // virtual tables work yet. The approach below
@@ -1636,7 +1696,7 @@ wxList *wxWindow::GetChildren(void)
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
 void wxWindow::RemoveChild( wxWindow *child )
 {
   if (GetChildren())
- GetChildren()->DeleteObject( child );
 GetChildren()->DeleteObject( child );
   child->m_parent = (wxWindow *) NULL;
 }
 
   child->m_parent = (wxWindow *) NULL;
 }
 
@@ -1652,11 +1712,15 @@ int wxWindow::GetReturnCode(void)
 
 void wxWindow::Raise(void)
 {
 
 void wxWindow::Raise(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_widget) gdk_window_raise( m_widget->window );
 }
 
 void wxWindow::Lower(void)
 {
   if (m_widget) gdk_window_raise( m_widget->window );
 }
 
 void wxWindow::Lower(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_widget) gdk_window_lower( m_widget->window );
 }
 
   if (m_widget) gdk_window_lower( m_widget->window );
 }
 
@@ -1672,28 +1736,28 @@ void wxWindow::SetEventHandler( wxEvtHandler *handler )
 
 void wxWindow::PushEventHandler(wxEvtHandler *handler)
 {
 
 void wxWindow::PushEventHandler(wxEvtHandler *handler)
 {
-       handler->SetNextHandler(GetEventHandler());
-       SetEventHandler(handler);
+  handler->SetNextHandler(GetEventHandler());
+  SetEventHandler(handler);
 }
 
 wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
 {
 }
 
 wxEvtHandler *wxWindow::PopEventHandler(bool deleteHandler)
 {
-       if ( GetEventHandler() )
-       {
-               wxEvtHandler *handlerA = GetEventHandler();
-               wxEvtHandler *handlerB = handlerA->GetNextHandler();
-               handlerA->SetNextHandler((wxEvtHandler *) NULL);
-               SetEventHandler(handlerB);
-               if ( deleteHandler )
-               {
-                       delete handlerA;
-                       return (wxEvtHandler *) NULL;
-               }
-               else
-                       return handlerA;
-       }
-       else
-               return (wxEvtHandler *) NULL;
+  if (GetEventHandler())
+  {
+    wxEvtHandler *handlerA = GetEventHandler();
+    wxEvtHandler *handlerB = handlerA->GetNextHandler();
+    handlerA->SetNextHandler((wxEvtHandler *) NULL);
+    SetEventHandler(handlerB);
+    if (deleteHandler)
+    {
+      delete handlerA;
+      return (wxEvtHandler*) NULL;
+    }
+    else
+      return handlerA;
+  }
+  else
+   return (wxEvtHandler *) NULL;
 }
 
 wxValidator *wxWindow::GetValidator(void)
 }
 
 wxValidator *wxWindow::GetValidator(void)
@@ -1725,6 +1789,8 @@ wxWindowID wxWindow::GetId(void)
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
 
 void wxWindow::SetCursor( const wxCursor &cursor )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_cursor == NULL)
   {
     wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
   if (m_cursor == NULL)
   {
     wxFAIL_MSG( "wxWindow::SetCursor m_cursor == NULL" );
@@ -1750,6 +1816,8 @@ void wxWindow::SetCursor( const wxCursor &cursor )
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
 
 void wxWindow::Refresh( bool eraseBackground, const wxRect *rect )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (eraseBackground && m_wxwindow && m_wxwindow->window)
   {
     if (rect)
   if (eraseBackground && m_wxwindow && m_wxwindow->window)
   {
     if (rect)
@@ -1819,6 +1887,8 @@ bool wxWindow::IsExposed( const wxRect& rect ) const
 
 void wxWindow::Clear(void)
 {
 
 void wxWindow::Clear(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
 }
 
   if (m_wxwindow && m_wxwindow->window) gdk_window_clear( m_wxwindow->window );
 }
 
@@ -1829,6 +1899,8 @@ wxColour wxWindow::GetBackgroundColour(void) const
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
 
 void wxWindow::SetBackgroundColour( const wxColour &colour )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   m_backgroundColour = colour;
   if (m_wxwindow)
   {
   m_backgroundColour = colour;
   if (m_wxwindow)
   {
@@ -1851,6 +1923,8 @@ void wxWindow::SetForegroundColour( const wxColour &colour )
 
 bool wxWindow::Validate(void)
 {
 
 bool wxWindow::Validate(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1864,6 +1938,8 @@ bool wxWindow::Validate(void)
 
 bool wxWindow::TransferDataToWindow(void)
 {
 
 bool wxWindow::TransferDataToWindow(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1881,6 +1957,8 @@ bool wxWindow::TransferDataToWindow(void)
 
 bool wxWindow::TransferDataFromWindow(void)
 {
 
 bool wxWindow::TransferDataFromWindow(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxNode *node = GetChildren()->First();
   while (node)
   {
   wxNode *node = GetChildren()->First();
   while (node)
   {
@@ -1904,6 +1982,8 @@ void wxWindow::OnInitDialog( wxInitDialogEvent &WXUNUSED(event) )
 
 void wxWindow::InitDialog(void)
 {
 
 void wxWindow::InitDialog(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
   wxInitDialogEvent event(GetId());
   event.SetEventObject( this );
   GetEventHandler()->ProcessEvent(event);
@@ -1924,6 +2004,8 @@ static void SetInvokingWindow( wxMenu *menu, wxWindow *win )
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
 
 bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   SetInvokingWindow( menu, this );
   gtk_menu_popup( GTK_MENU(menu->m_menu), (GtkWidget *) NULL, (GtkWidget *) NULL, (GtkMenuPositionFunc) NULL, NULL, 0, 0 );
   return TRUE;
   SetInvokingWindow( menu, this );
   gtk_menu_popup( GTK_MENU(menu->m_menu), (GtkWidget *) NULL, (GtkWidget *) NULL, (GtkMenuPositionFunc) NULL, NULL, 0, 0 );
   return TRUE;
@@ -1931,6 +2013,8 @@ bool wxWindow::PopupMenu( wxMenu *menu, int WXUNUSED(x), int WXUNUSED(y) )
 
 void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
 {
 
 void wxWindow::SetDropTarget( wxDropTarget *dropTarget )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   GtkWidget *dnd_widget = GetConnectWidget();
   
   DisconnectDnDWidget( dnd_widget );
   GtkWidget *dnd_widget = GetConnectWidget();
   
   DisconnectDnDWidget( dnd_widget );
@@ -1982,6 +2066,8 @@ bool wxWindow::IsOwnGtkWindow( GdkWindow *window )
 
 void wxWindow::SetFont( const wxFont &font )
 {
 
 void wxWindow::SetFont( const wxFont &font )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
   if (((wxFont*)&font)->Ok())
     m_font = font;
   else
   if (((wxFont*)&font)->Ok())
     m_font = font;
   else
@@ -2021,6 +2107,10 @@ long wxWindow::GetWindowStyleFlag(void) const
 
 void wxWindow::CaptureMouse(void)
 {
 
 void wxWindow::CaptureMouse(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (g_capturing == FALSE), "CaptureMouse called twice" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_add( connect_widget );
   gdk_pointer_grab ( connect_widget->window, FALSE,
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_add( connect_widget );
   gdk_pointer_grab ( connect_widget->window, FALSE,
@@ -2034,6 +2124,10 @@ void wxWindow::CaptureMouse(void)
 
 void wxWindow::ReleaseMouse(void)
 {
 
 void wxWindow::ReleaseMouse(void)
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (g_capturing == TRUE), "ReleaseMouse called twice" );
+  
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
@@ -2105,6 +2199,10 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
 {
 void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
       int range, bool WXUNUSED(refresh) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return;
 
   if (orient == wxHORIZONTAL)
@@ -2159,6 +2257,10 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
 
 void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return;
   
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return;
   
   if (orient == wxHORIZONTAL)
@@ -2188,6 +2290,10 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
 
 int wxWindow::GetScrollThumb( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2198,6 +2304,10 @@ int wxWindow::GetScrollThumb( int orient ) const
 
 int wxWindow::GetScrollPos( int orient ) const
 {
 
 int wxWindow::GetScrollPos( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2208,6 +2318,10 @@ int wxWindow::GetScrollPos( int orient ) const
 
 int wxWindow::GetScrollRange( int orient ) const
 {
 
 int wxWindow::GetScrollRange( int orient ) const
 {
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
+  
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
+  
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
   if (!m_wxwindow) return 0;
 
   if (orient == wxHORIZONTAL)
@@ -2218,32 +2332,11 @@ int wxWindow::GetScrollRange( int orient ) const
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
 
 void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
 {
-  if (!m_wxwindow) return;
-  
-/*
-  bool refresh = FALSE;
-    
-  if ((m_drawingOffsetX == 0) && (m_drawingOffsetY == 0))
-  {
-    m_drawingOffsetX = -16000;
-    m_drawingOffsetY = -16000;
-    refresh = TRUE;
-  }
-  else
-  {
-    m_drawingOffsetX += dx;
-    m_drawingOffsetY += dy;
-  }
+  wxASSERT_MSG( (m_widget != NULL), "invalid window" );
   
   
-//  printf( "X: %d  Y: %d  \n", (int)m_drawingOffsetX, (int)m_drawingOffsetY );
+  wxASSERT_MSG( (m_wxwindow != NULL), "window needs client area" );
   
   
-  gtk_myfixed_set_offset( GTK_MYFIXED(m_wxwindow), m_drawingOffsetX, m_drawingOffsetY );
-  
-  if (refresh) Refresh();
-  
-    The code here is very nifty, but it doesn't work with
-    overlapping windows...
-*/
+  if (!m_wxwindow) return;
 
     int cw = 0;
     int ch = 0;
 
     int cw = 0;
     int ch = 0;
index 0b2c446216f0e343bb7167508983e035f9c94110..16ad3756424635e38f971fb588ca48bf808d0315 100644 (file)
@@ -33,10 +33,8 @@ wxDirInfo::wxDirInfo( const wxString &path )
   if (m_path == "/home")
   {
     m_name = "My Home";
   if (m_path == "/home")
   {
     m_name = "My Home";
-    m_path += "/";
-    wxString str;
-    wxGetHomeDir( & str );
-    m_path = str;
+    m_path = "";
+    wxGetHomeDir( &m_path );
   }
   else
   if (m_path == "/proc") m_name = "Info Filesystem";
   }
   else
   if (m_path == "/proc") m_name = "Info Filesystem";
@@ -97,7 +95,7 @@ wxDirCtrl::wxDirCtrl(wxWindow *parent, const wxWindowID id, const wxString &WXUN
   item.m_children = 1;
   m_rootId = InsertItem( 0, item );
   
   item.m_children = 1;
   m_rootId = InsertItem( 0, item );
   
-  SetDropTarget( new wxFileDropTarget() );
+//  SetDropTarget( new wxFileDropTarget() );
 };
 
 void wxDirCtrl::OnExpandItem( const wxTreeEvent &event )
 };
 
 void wxDirCtrl::OnExpandItem( const wxTreeEvent &event )
index 5956e5ef424ade4537f28f2928712fa470d5bbd3..5fb6510d106662c380e9e6b9a6dfb81bd9c86759 100644 (file)
@@ -241,7 +241,7 @@ wxFileCtrl::wxFileCtrl( wxWindow *win, const wxWindowID id, const wxString &dirN
   m_dragStartY = 0;
   m_dragCount = 0;
     
   m_dragStartY = 0;
   m_dragCount = 0;
     
-  SetDropTarget( new wxFileDropTarget() );
+//  SetDropTarget( new wxFileDropTarget() );
 };
 
 void wxFileCtrl::ChangeToListMode()
 };
 
 void wxFileCtrl::ChangeToListMode()
index 01b66dd1224ef62eda5c97a112529cd4d127f031..5c93b977dfbef36bae3715139cd4ee3d17f9b800 100644 (file)
@@ -155,10 +155,9 @@ MyFrame::MyFrame(void) :
   m_leftFile = (wxFileCtrl *) NULL;
   m_dir = new wxDirCtrl( m_splitter, ID_DIRCTRL, "/", wxPoint(10,45), wxSize(200,330) );
   
   m_leftFile = (wxFileCtrl *) NULL;
   m_dir = new wxDirCtrl( m_splitter, ID_DIRCTRL, "/", wxPoint(10,45), wxSize(200,330) );
   
-  wxString homepath( "/home" );
-  wxString str;
-  wxGetHomeDir( & str );
-  homepath = str;
+  wxString homepath;
+  wxGetHomeDir( &homepath );
+  
   m_rightFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(220,5), wxSize(200,330) );
    
   m_leftFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(0,5), wxSize(200,330) );
   m_rightFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(220,5), wxSize(200,330) );
    
   m_leftFile = new wxFileCtrl( m_splitter, ID_FILECTRL, homepath, wxPoint(0,5), wxSize(200,330) );
index a61220cfab2d5a8847fb4a4d2f96ceff2cd0ac79..83cff55b82b70ce932c85d3f70bf301d40c92c7b 100755 (executable)
@@ -42,7 +42,6 @@ while test $# -gt 0; do
       if test @includedir@ != /usr/include ; then
         includes=-I@includedir@
       fi
       if test @includedir@ != /usr/include ; then
         includes=-I@includedir@
       fi
-      includes="$includes -I@includedir@/wx/@host@"
       echo $includes -D@TOOLKIT_DEF@ @GUI_TK_INCLUDE@
       ;;
     --libs)
       echo $includes -D@TOOLKIT_DEF@ @GUI_TK_INCLUDE@
       ;;
     --libs)