Blob Blame History Raw
diff -ur wxWidgets-2.6.3/build/aclocal/bakefile.m4 wxWidgets-2.6.3.3/build/aclocal/bakefile.m4
--- wxWidgets-2.6.3/build/aclocal/bakefile.m4	2006-02-12 03:50:55.000000000 -0500
+++ wxWidgets-2.6.3.3/build/aclocal/bakefile.m4	2006-07-12 04:59:53.000000000 -0400
@@ -421,6 +421,7 @@
 
       powerpc-apple-macos* | \
       *-*-freebsd* | *-*-openbsd* | *-*-netbsd* | *-*-k*bsd*-gnu | \
+      *-*-mirbsd* | \
       *-*-sunos4* | \
       *-*-osf* | \
       *-*-dgux5* | \
diff -ur wxWidgets-2.6.3/configure wxWidgets-2.6.3.3/configure
--- wxWidgets-2.6.3/configure	2006-03-21 14:33:33.000000000 -0500
+++ wxWidgets-2.6.3.3/configure	2006-05-23 14:08:19.000000000 -0400
@@ -892,6 +892,7 @@
   --enable-universal_binary create Mac PowerPC and Intel Universal binary (not yet working)
   --enable-compat22       enable wxWidgets 2.2 compatibility
   --disable-compat24      disable wxWidgets 2.4 compatibility
+  --disable-reserved_virtual do not create unused vtable entries
   --disable-rpath         disable use of rpath for uninstalled builds
   --enable-intl           use internationalization system
   --enable-config         use wxConfig (and derived) classes
@@ -1669,7 +1670,7 @@
 wx_major_version_number=2
 wx_minor_version_number=6
 wx_release_number=3
-wx_subrelease_number=1
+wx_subrelease_number=3
 
 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number
 WX_VERSION=$WX_RELEASE.$wx_release_number
@@ -4241,6 +4242,49 @@
           fi
 
 
+DEFAULT_WX_USE_RESERVED_VIRTUALS=yes
+
+	  enablestring=
+          echo "$as_me:$LINENO: checking for --${enablestring:-enable}-reserved_virtual" >&5
+echo $ECHO_N "checking for --${enablestring:-enable}-reserved_virtual... $ECHO_C" >&6
+          no_cache=0
+          # Check whether --enable-reserved_virtual or --disable-reserved_virtual was given.
+if test "${enable_reserved_virtual+set}" = set; then
+  enableval="$enable_reserved_virtual"
+
+                          if test "$enableval" = yes; then
+                            ac_cv_use_reserved_virtual='WX_USE_RESERVED_VIRTUALS=yes'
+                          else
+                            ac_cv_use_reserved_virtual='WX_USE_RESERVED_VIRTUALS=no'
+                          fi
+
+else
+
+                          LINE=`grep "WX_USE_RESERVED_VIRTUALS" ${wx_arg_cache_file}`
+                          if test "x$LINE" != x ; then
+                            eval "DEFAULT_$LINE"
+                          else
+                            no_cache=1
+                          fi
+
+                          ac_cv_use_reserved_virtual='WX_USE_RESERVED_VIRTUALS='$DEFAULT_WX_USE_RESERVED_VIRTUALS
+
+fi;
+
+          eval "$ac_cv_use_reserved_virtual"
+          if test "$no_cache" != 1; then
+            echo $ac_cv_use_reserved_virtual >> ${wx_arg_cache_file}.tmp
+          fi
+
+          if test "$WX_USE_RESERVED_VIRTUALS" = yes; then
+            echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+          else
+            echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+          fi
+
+
 
 	  enablestring=
           echo "$as_me:$LINENO: checking for --${enablestring:-enable}-rpath" >&5
@@ -38289,6 +38333,13 @@
 
 fi
 
+if test "x$WX_USE_RESERVED_VIRTUALS" != "xno"; then
+    cat >>confdefs.h <<\_ACEOF
+#define WX_USE_RESERVED_VIRTUALS 1
+_ACEOF
+
+fi
+
 
 if test "$wxUSE_GUI" = "yes"; then
     cat >>confdefs.h <<\_ACEOF
@@ -42353,11 +42404,6 @@
 echo "$as_me: WARNING: Toggle button not yet supported under Mac OS X... disabled" >&2;}
         wxUSE_TOGGLEBTN=no
     fi
-    if test "$wxUSE_UNIVERSAL" = "yes"; then
-        { echo "$as_me:$LINENO: WARNING: Toggle button not yet supported under wxUniversal... disabled" >&5
-echo "$as_me: WARNING: Toggle button not yet supported under wxUniversal... disabled" >&2;}
-        wxUSE_TOGGLEBTN=no
-    fi
 
     if test "$wxUSE_TOGGLEBTN" = "yes"; then
         cat >>confdefs.h <<\_ACEOF
diff -ur wxWidgets-2.6.3/configure.in wxWidgets-2.6.3.3/configure.in
--- wxWidgets-2.6.3/configure.in	2006-03-21 14:33:57.000000000 -0500
+++ wxWidgets-2.6.3.3/configure.in	2006-07-12 04:59:50.000000000 -0400
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_REVISION($Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $)dnl
+AC_REVISION($Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $)dnl
 
 dnl ---------------------------------------------------------------------------
 dnl
@@ -8,7 +8,7 @@
 dnl
 dnl This script is under the wxWidgets licence.
 dnl
-dnl Version: $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+dnl Version: $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 dnl ---------------------------------------------------------------------------
 
 dnl ---------------------------------------------------------------------------
@@ -33,7 +33,7 @@
 wx_major_version_number=2
 wx_minor_version_number=6
 wx_release_number=3
-wx_subrelease_number=1
+wx_subrelease_number=3
 
 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number
 WX_VERSION=$WX_RELEASE.$wx_release_number
@@ -185,7 +185,7 @@
     AC_DEFINE(__BSD__)
     DEFAULT_DEFAULT_wxUSE_GTK=1
   ;;
-  *-*-openbsd*)
+  *-*-openbsd*|*-*-mirbsd*)
     USE_BSD=1
     USE_OPENBSD=1
     AC_DEFINE(__OPENBSD__)
@@ -857,6 +857,9 @@
 WX_ARG_ENABLE(compat22,      [  --enable-compat22       enable wxWidgets 2.2 compatibility], WXWIN_COMPATIBILITY_2_2)
 WX_ARG_ENABLE(compat24,      [  --disable-compat24      disable wxWidgets 2.4 compatibility], WXWIN_COMPATIBILITY_2_4, disable)
 
+DEFAULT_WX_USE_RESERVED_VIRTUALS=yes
+WX_ARG_ENABLE(reserved_virtual, [  --disable-reserved_virtual do not create unused vtable entries], WX_USE_RESERVED_VIRTUALS)
+
 WX_ARG_ENABLE(rpath,         [  --disable-rpath         disable use of rpath for uninstalled builds], wxUSE_RPATH)
 
 
@@ -5073,6 +5076,10 @@
     AC_DEFINE(WXWIN_COMPATIBILITY_2_4)
 fi
 
+if test "x$WX_USE_RESERVED_VIRTUALS" != "xno"; then
+    AC_DEFINE(WX_USE_RESERVED_VIRTUALS)
+fi
+
 dnl ---------------------------------------------------------------------------
 dnl the library may be built without GUI classes at all
 dnl ---------------------------------------------------------------------------
@@ -6311,10 +6318,6 @@
         AC_MSG_WARN([Toggle button not yet supported under Mac OS X... disabled])
         wxUSE_TOGGLEBTN=no
     fi
-    if test "$wxUSE_UNIVERSAL" = "yes"; then
-        AC_MSG_WARN([Toggle button not yet supported under wxUniversal... disabled])
-        wxUSE_TOGGLEBTN=no
-    fi
 
     if test "$wxUSE_TOGGLEBTN" = "yes"; then
         AC_DEFINE(wxUSE_TOGGLEBTN)
diff -ur wxWidgets-2.6.3/contrib/src/gizmos/editlbox.cpp wxWidgets-2.6.3.3/contrib/src/gizmos/editlbox.cpp
--- wxWidgets-2.6.3/contrib/src/gizmos/editlbox.cpp	2005-01-14 08:06:52.000000000 -0500
+++ wxWidgets-2.6.3.3/contrib/src/gizmos/editlbox.cpp	2006-05-23 15:30:03.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        editlbox.cpp
 // Purpose:     ListBox with editable items
 // Author:      Vaclav Slavik
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vaclav Slavik
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -228,6 +228,12 @@
         // add new empty line here so that adding one more line is still
         // possible:
         m_listCtrl->InsertItem(m_listCtrl->GetItemCount(), wxEmptyString);
+
+        // Simulate a wxEVT_COMMAND_LIST_ITEM_SELECTED event for the new item,
+        // so that the buttons are enabled/disabled properly
+        wxListEvent selectionEvent(wxEVT_COMMAND_LIST_ITEM_SELECTED, m_listCtrl->GetId());
+        selectionEvent.m_itemIndex = event.GetIndex();
+        m_listCtrl->GetEventHandler()->ProcessEvent(selectionEvent);
     }
 }
 
diff -ur wxWidgets-2.6.3/contrib/src/stc/scintilla/src/Editor.cxx wxWidgets-2.6.3.3/contrib/src/stc/scintilla/src/Editor.cxx
--- wxWidgets-2.6.3/contrib/src/stc/scintilla/src/Editor.cxx	2006-03-12 01:03:37.000000000 -0500
+++ wxWidgets-2.6.3.3/contrib/src/stc/scintilla/src/Editor.cxx	2006-06-28 15:32:14.000000000 -0400
@@ -213,7 +213,7 @@
 }
 
 void LineLayoutCache::AllocateForLevel(int linesOnScreen, int linesInDoc) {
-	PLATFORM_ASSERT(useCount == 0);
+//	PLATFORM_ASSERT(useCount == 0);
 	int lengthForLevel = 0;
 	if (level == llcCaret) {
 		lengthForLevel = 1;
@@ -239,7 +239,7 @@
 }
 
 void LineLayoutCache::Deallocate() {
-	PLATFORM_ASSERT(useCount == 0);
+//	PLATFORM_ASSERT(useCount == 0);
 	for (int i = 0; i < length; i++)
 		delete cache[i];
 	delete []cache;
diff -ur wxWidgets-2.6.3/contrib/src/stc/ScintillaWX.cpp wxWidgets-2.6.3.3/contrib/src/stc/ScintillaWX.cpp
--- wxWidgets-2.6.3/contrib/src/stc/ScintillaWX.cpp	2006-03-12 01:03:52.000000000 -0500
+++ wxWidgets-2.6.3.3/contrib/src/stc/ScintillaWX.cpp	2006-06-28 15:32:18.000000000 -0400
@@ -9,7 +9,7 @@
 // Author:      Robin Dunn
 //
 // Created:     13-Jan-2000
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2000 by Total Control Software
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -483,7 +483,10 @@
     if (gotData) {
         wxString   text = wxTextBuffer::Translate(data.GetText(),
                                                   wxConvertEOLMode(pdoc->eolMode));
+  data.SetText(wxEmptyString); // free the data object content
         wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
+  text = wxEmptyString; // free text
+
         int        len = strlen(buf);
         pdoc->InsertString(currentPos, buf, len);
         SetEmptySelection(currentPos + len);
@@ -827,13 +830,15 @@
 }
 
 void ScintillaWX::DoLeftButtonUp(Point pt, unsigned int curTime, bool ctrl) {
+    ButtonUp(pt, curTime, ctrl);
 #if wxUSE_DRAG_AND_DROP
     if (startDragTimer->IsRunning()) {
         startDragTimer->Stop();
+        SetDragPosition(invalidPosition);
         SetEmptySelection(PositionFromLocation(pt));
+        ShowCaretAtCurrentPosition();
     }
 #endif // wxUSE_DRAG_AND_DROP
-    ButtonUp(pt, curTime, ctrl);
 }
 
 void ScintillaWX::DoLeftButtonMove(Point pt) {
diff -ur wxWidgets-2.6.3/contrib/src/stc/stc.cpp wxWidgets-2.6.3.3/contrib/src/stc/stc.cpp
--- wxWidgets-2.6.3/contrib/src/stc/stc.cpp	2006-03-12 01:03:51.000000000 -0500
+++ wxWidgets-2.6.3.3/contrib/src/stc/stc.cpp	2006-06-28 15:32:18.000000000 -0400
@@ -10,7 +10,7 @@
 // Author:      Robin Dunn
 //
 // Created:     13-Jan-2000
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2000 by Total Control Software
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -3186,12 +3186,7 @@
                          size_t length) {
     if(!text) return;
 
-    // The unicode conversion MUST have a null byte to terminate the
-    // string so move it into a buffer first and give it one.
-    wxMemoryBuffer buf(length+1);
-    buf.AppendData((void*)text, length);
-    buf.AppendByte(0);
-    evt.SetText(stc2wx(buf));
+    evt.SetText(stc2wx(text, length));
 }
 
 
diff -ur wxWidgets-2.6.3/contrib/src/stc/stc.cpp.in wxWidgets-2.6.3.3/contrib/src/stc/stc.cpp.in
--- wxWidgets-2.6.3/contrib/src/stc/stc.cpp.in	2006-03-12 01:03:51.000000000 -0500
+++ wxWidgets-2.6.3.3/contrib/src/stc/stc.cpp.in	2006-06-28 15:32:17.000000000 -0400
@@ -10,7 +10,7 @@
 // Author:      Robin Dunn
 //
 // Created:     13-Jan-2000
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2000 by Total Control Software
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -854,12 +854,7 @@
                          size_t length) {
     if(!text) return;
 
-    // The unicode conversion MUST have a null byte to terminate the
-    // string so move it into a buffer first and give it one.
-    wxMemoryBuffer buf(length+1);
-    buf.AppendData((void*)text, length);
-    buf.AppendByte(0);
-    evt.SetText(stc2wx(buf));
+    evt.SetText(stc2wx(text, length));
 }
 
 
diff -ur wxWidgets-2.6.3/include/wx/control.h wxWidgets-2.6.3.3/include/wx/control.h
--- wxWidgets-2.6.3/include/wx/control.h	2005-06-26 11:46:07.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/control.h	2006-04-19 05:33:32.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     26.07.99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -66,6 +66,7 @@
     virtual void SetLabel( const wxString &label );
     virtual bool SetFont(const wxFont& font);
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedControlFunc1() {}
     virtual void ReservedControlFunc2() {}
@@ -76,6 +77,7 @@
     virtual void ReservedControlFunc7() {}
     virtual void ReservedControlFunc8() {}
     virtual void ReservedControlFunc9() {}
+#endif
 
 protected:
     // creates the control (calls wxWindowBase::CreateBase inside) and adds it
diff -ur wxWidgets-2.6.3/include/wx/dc.h wxWidgets-2.6.3.3/include/wx/dc.h
--- wxWidgets-2.6.3/include/wx/dc.h	2005-06-26 11:46:07.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/dc.h	2006-04-19 05:33:32.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     05/25/99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -631,6 +631,7 @@
         if (h) *h = hh;
     }
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedDCFunc1() {}
     virtual void ReservedDCFunc2() {}
@@ -641,6 +642,7 @@
     virtual void ReservedDCFunc7() {}
     virtual void ReservedDCFunc8() {}
     virtual void ReservedDCFunc9() {}
+#endif
 
 protected:
     // the pure virtual functions which should be implemented by wxDC
diff -ur wxWidgets-2.6.3/include/wx/defs.h wxWidgets-2.6.3.3/include/wx/defs.h
--- wxWidgets-2.6.3/include/wx/defs.h	2006-01-26 08:15:47.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/defs.h	2006-05-29 13:34:40.000000000 -0400
@@ -4,7 +4,7 @@
 *  Author:      Julian Smart and others
 *  Modified by: Ryan Norton (Converted to C)
 *  Created:     01/02/97
-*  RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+*  RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 *  Copyright:   (c) Julian Smart
 *  Licence:     wxWindows licence
 */
@@ -78,6 +78,12 @@
 #   pragma warning(disable:4305)    /*  truncation of long to near ptr */
 #endif
 
+    /* For VC++ 5.0 for release mode, the warning 'C4702: unreachable code */
+    /* is buggy, and occurs for code that does actually get executed */
+#   if !defined __WXDEBUG__ && __VISUALC__ <= 1100
+#       pragma warning(disable:4702)    /* unreachable code */ 
+#   endif
+
 /* Deprecated functions such as sprintf, localtime */
 #if __VISUALC__ >= 1400
 #define _CRT_SECURE_NO_DEPRECATE 1
diff -ur wxWidgets-2.6.3/include/wx/dlimpexp.h wxWidgets-2.6.3.3/include/wx/dlimpexp.h
--- wxWidgets-2.6.3/include/wx/dlimpexp.h	2005-06-22 16:58:47.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/dlimpexp.h	2006-06-25 20:03:33.000000000 -0400
@@ -4,7 +4,7 @@
  * Author:      Vadim Zeitlin
  * Modified by:
  * Created:     16.10.2003 (extracted from wx/defs.h)
- * RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+ * RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
  * Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwidgets.org>
  * Licence:     wxWindows licence
  */
@@ -77,6 +77,7 @@
 #    define WXMAKINGDLL_NET
 #    define WXMAKINGDLL_CORE
 #    define WXMAKINGDLL_ADV
+#    define WXMAKINGDLL_QA
 #    define WXMAKINGDLL_ODBC
 #    define WXMAKINGDLL_DBGRID
 #    define WXMAKINGDLL_HTML
diff -ur wxWidgets-2.6.3/include/wx/generic/fontdlgg.h wxWidgets-2.6.3.3/include/wx/generic/fontdlgg.h
--- wxWidgets-2.6.3/include/wx/generic/fontdlgg.h	2006-03-02 07:57:18.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/generic/fontdlgg.h	2006-05-23 07:16:34.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -52,6 +52,10 @@
 {
 public:
     wxGenericFontDialog() { Init(); }
+#if wxABI_VERSION >= 20604
+    wxGenericFontDialog(wxWindow *parent)
+        : wxFontDialogBase(parent) { Init(); }
+#endif
     wxGenericFontDialog(wxWindow *parent, const wxFontData& data)
         : wxFontDialogBase(parent, data) { Init(); }
     virtual ~wxGenericFontDialog();
diff -ur wxWidgets-2.6.3/include/wx/generic/grid.h wxWidgets-2.6.3.3/include/wx/generic/grid.h
--- wxWidgets-2.6.3/include/wx/generic/grid.h	2005-09-25 16:46:22.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/generic/grid.h	2006-05-29 13:34:45.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Michael Bedward (based on code by Julian Smart, Robin Dunn)
 // Modified by:
 // Created:     1/08/1999
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Michael Bedward
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -105,7 +105,7 @@
     // calling DecRef() once will delete it. Calling IncRef() allows to lock
     // it until the matching DecRef() is called
     void IncRef() { m_nRef++; }
-    void DecRef() { if ( !--m_nRef ) delete this; }
+    void DecRef() { if ( --m_nRef == 0 ) delete this; }
 
     // interpret renderer parameters: arbitrary string whose interpretatin is
     // left to the derived classes
@@ -660,7 +660,7 @@
     // calling DecRef() once will delete it. Calling IncRef() allows to lock
     // it until the matching DecRef() is called
     void IncRef() { m_nRef++; }
-    void DecRef() { if ( !--m_nRef ) delete this; }
+    void DecRef() { if ( --m_nRef == 0 ) delete this; }
 
     // setters
     void SetTextColour(const wxColour& colText) { m_colText = colText; }
diff -ur wxWidgets-2.6.3/include/wx/gtk/scrolwin.h wxWidgets-2.6.3.3/include/wx/gtk/scrolwin.h
--- wxWidgets-2.6.3/include/wx/gtk/scrolwin.h	2005-03-17 16:21:42.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/gtk/scrolwin.h	2006-06-04 13:00:09.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -154,17 +154,9 @@
     void OnPaint(wxPaintEvent& event);
     void OnChar(wxKeyEvent& event);
 
-    void GtkVScroll( float value, unsigned int scroll_type );
-    void GtkHScroll( float value, unsigned int scroll_type );
-    void GtkVConnectEvent();
-    void GtkHConnectEvent();
-    void GtkVDisconnectEvent();
-    void GtkHDisconnectEvent();
-
     // Calculate scroll increment
     virtual int CalcScrollInc(wxScrollWinEvent& event);
 
-    // Overridden from wxWidgets due callback being static
     virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE );
 
 #if WXWIN_COMPATIBILITY_2_2
@@ -192,6 +184,13 @@
     double                m_scaleY,m_scaleX;
 
 private:
+    void DoScroll(int orient, int pos, int* posOld, int pixelsPerLine);
+    void DoAdjustScrollbars(GtkAdjustment* adj,
+                            int pixelsPerLine,
+                            int winSize,
+                            int virtSize,
+                            int *linesPerPage);
+
     DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxScrolledWindow)
 };
diff -ur wxWidgets-2.6.3/include/wx/gtk/window.h wxWidgets-2.6.3.3/include/wx/gtk/window.h
--- wxWidgets-2.6.3/include/wx/gtk/window.h	2006-03-18 08:59:33.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/gtk/window.h	2006-05-29 03:31:23.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        wx/gtk/window.h
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -276,6 +276,8 @@
     virtual void DoSetToolTip( wxToolTip *tip );
 #endif // wxUSE_TOOLTIPS
 
+    void HandleScrollEvent(GtkAdjustment* adj);
+
 protected:
     // common part of all ctors (not virtual because called from ctor)
     void Init();
diff -ur wxWidgets-2.6.3/include/wx/list.h wxWidgets-2.6.3.3/include/wx/list.h
--- wxWidgets-2.6.3/include/wx/list.h	2006-01-18 03:33:59.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/list.h	2006-07-01 21:27:37.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by: VZ at 16/11/98: WX_DECLARE_LIST() and typesafe lists added
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -178,7 +178,9 @@
             const compatibility_iterator* operator->() const { return this; } \
                                                                               \
             bool operator==(const compatibility_iterator& i) const            \
-                { return (m_list == i.m_list) && (m_iter == i.m_iter); }      \
+                { return (m_list == i.m_list) && (m_iter == i.m_iter)         \
+                  || !m_list && (i.m_iter == i.m_list->end())                 \
+                  || !i.m_list && (m_iter == m_list->end()); }                \
             bool operator!=(const compatibility_iterator& i) const            \
                 { return !( operator==( i ) ); }                              \
             operator bool() const                                             \
@@ -199,7 +201,8 @@
             compatibility_iterator GetPrevious() const                        \
             {                                                                 \
                 iterator i = m_iter;                                          \
-                return compatibility_iterator( m_list, --i );                 \
+                i != m_list->begin() ? --i : i = m_list->end();               \
+                return compatibility_iterator( m_list, i );                   \
             }                                                                 \
             int IndexOf() const                                               \
             {                                                                 \
diff -ur wxWidgets-2.6.3/include/wx/metafile.h wxWidgets-2.6.3.3/include/wx/metafile.h
--- wxWidgets-2.6.3/include/wx/metafile.h	2005-08-19 09:48:19.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/metafile.h	2006-06-26 10:37:34.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      wxWidgets team
 // Modified by:
 // Created:     13.01.00
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -28,16 +28,19 @@
         #if defined(__WXPALMOS__)
             #include "wx/palmos/enhmeta.h"
         #else
-        #include "wx/msw/enhmeta.h"
+            #include "wx/msw/enhmeta.h"
         #endif
 
-        // map all metafile classes to enh metafile
-        #if !wxUSE_WIN_METAFILES_ALWAYS
+        #if wxUSE_WIN_METAFILES_ALWAYS
+            // use normal metafiles as well
+            #include "wx/msw/metafile.h"
+        #else // also map all metafile classes to enh metafile
             typedef wxEnhMetaFile wxMetafile;
             typedef wxEnhMetaFileDC wxMetafileDC;
-#if wxUSE_DRAG_AND_DROP
-            typedef wxEnhMetaFileDataObject wxMetafileDataObject;
-#endif
+            #if wxUSE_DRAG_AND_DROP
+                typedef wxEnhMetaFileDataObject wxMetafileDataObject;
+            #endif
+
             // this flag will be set if wxMetafile class is wxEnhMetaFile
             #define wxMETAFILE_IS_ENH
         #endif // wxUSE_WIN_METAFILES_ALWAYS
@@ -45,8 +48,8 @@
         #if defined(__WXPALMOS__)
             #include "wx/palmos/metafile.h"
         #else
-        #include "wx/msw/metafile.h"
-    #endif
+            #include "wx/msw/metafile.h"
+        #endif
     #endif
 #elif defined(__WXPM__)
     #include "wx/os2/metafile.h"
@@ -55,5 +58,5 @@
 #endif
 
 #endif // wxUSE_METAFILE
-#endif
-    // _WX_METAFILE_H_BASE_
+
+#endif // _WX_METAFILE_H_BASE_
diff -ur wxWidgets-2.6.3/include/wx/notebook.h wxWidgets-2.6.3.3/include/wx/notebook.h
--- wxWidgets-2.6.3/include/wx/notebook.h	2005-06-26 11:46:08.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/notebook.h	2006-04-19 05:33:32.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     01.02.01
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1996-2000 Vadim Zeitlin
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -95,12 +95,14 @@
     virtual wxColour GetThemeBackgroundColour() const { return wxNullColour; }
 
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedNotebookFunc1() {}
     virtual void ReservedNotebookFunc2() {}
     virtual void ReservedNotebookFunc3() {}
     virtual void ReservedNotebookFunc4() {}
     virtual void ReservedNotebookFunc5() {}
+#endif
 
 protected:
     DECLARE_NO_COPY_CLASS(wxNotebookBase)
diff -ur wxWidgets-2.6.3/include/wx/object.h wxWidgets-2.6.3.3/include/wx/object.h
--- wxWidgets-2.6.3/include/wx/object.h	2005-07-22 12:56:23.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/object.h	2006-04-19 05:33:33.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by: Ron Lee
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1997 Julian Smart
 //              (c) 2001 Ron Lee <ron@debian.org>
 // Licence:     wxWindows licence
@@ -469,6 +469,7 @@
     void UnRef();
 
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedObjectFunc1() {}
     virtual void ReservedObjectFunc2() {}
@@ -479,6 +480,7 @@
     virtual void ReservedObjectFunc7() {}
     virtual void ReservedObjectFunc8() {}
     virtual void ReservedObjectFunc9() {}
+#endif
 
 protected:
     // ensure that our data is not shared with anybody else: if we have no
diff -ur wxWidgets-2.6.3/include/wx/platform.h wxWidgets-2.6.3.3/include/wx/platform.h
--- wxWidgets-2.6.3/include/wx/platform.h	2006-01-18 05:25:00.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/platform.h	2006-05-19 12:57:07.000000000 -0400
@@ -4,7 +4,7 @@
 * Author:      Vadim Zeitlin
 * Modified by:
 * Created:     29.10.01 (extracted from wx/defs.h)
-* RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+* RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 * Copyright:   (c) 1997-2001 Vadim Zeitlin
 * Licence:     wxWindows licence
 */
@@ -513,10 +513,13 @@
         ... no gcc at all or gcc < 3.1 ...
 #    endif
 */
-#define wxCHECK_GCC_VERSION( major, minor ) \
-    ( defined(__GNUC__) && defined(__GNUC_MINOR__) \
-    && ( ( __GNUC__ > (major) ) \
-        || ( __GNUC__ == (major) && __GNUC_MINOR__ >= (minor) ) ) )
+#if defined(__GNUC__) && defined(__GNUC_MINOR__)
+    #define wxCHECK_GCC_VERSION( major, minor ) \
+        ( ( __GNUC__ > (major) ) \
+            || ( __GNUC__ == (major) && __GNUC_MINOR__ >= (minor) ) )
+#else
+    #define wxCHECK_GCC_VERSION( major, minor ) 0
+#endif
 
 /*
    This macro can be used to check that the version of mingw32 compiler is
diff -ur wxWidgets-2.6.3/include/wx/prntbase.h wxWidgets-2.6.3.3/include/wx/prntbase.h
--- wxWidgets-2.6.3/include/wx/prntbase.h	2005-07-28 18:20:05.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/prntbase.h	2006-06-28 08:56:04.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -571,6 +571,9 @@
     virtual void AdjustScrollbars(wxPreviewCanvas *canvas);
     virtual bool RenderPage(int pageNum);
     virtual void SetZoom(int percent);
+#if wxABI_VERSION >= 20604
+    virtual int GetZoom() const;
+#endif
 
     virtual bool Print(bool interactive);
     virtual void DetermineScaling();
diff -ur wxWidgets-2.6.3/include/wx/rawbmp.h wxWidgets-2.6.3.3/include/wx/rawbmp.h
--- wxWidgets-2.6.3/include/wx/rawbmp.h	2006-01-26 07:26:37.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/rawbmp.h	2006-05-29 13:54:54.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Eric Kidd, Vadim Zeitlin
 // Modified by:
 // Created:     10.03.03
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2002 Vadim Zeitlin <vadim@wxwidgets.org>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -71,7 +71,7 @@
     }
  */
 
-#ifdef __VISUALC__
+#if defined __VISUALC__ && __VISUALC__ >= 1200
     // VC++ gives an absolutely harmless warning for wxPixelData<wxBitmap> ctor
     #pragma warning(push)
     #pragma warning(disable: 4355) // 'this' used in initializer list
@@ -717,7 +717,7 @@
 {
 };
 
-#ifdef __VISUALC__
+#if defined __VISUALC__ && __VISUALC__ >= 1200
     #pragma warning(pop)
 #endif
 
diff -ur wxWidgets-2.6.3/include/wx/setup_inc.h wxWidgets-2.6.3.3/include/wx/setup_inc.h
--- wxWidgets-2.6.3/include/wx/setup_inc.h	2005-07-29 20:36:30.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/setup_inc.h	2006-04-19 10:36:49.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vadim Zeitlin
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -41,6 +41,14 @@
 // Recommended setting: 0 (please update your code)
 #define WXWIN_COMPATIBILITY_2_4 1
 
+// This setting controls the inclusion of reserved virtual functions
+// that were introduced just prior to the 2.6 freeze but have been
+// removed again for 2.7+
+//
+// Default is 1, typically you should not change it unless you know
+// exactly why you don't want them included.
+#define WX_USE_RESERVED_VIRTUALS 1
+
 // MSW-only: Set to 0 for accurate dialog units, else 1 for old behaviour when
 // default system font is used for wxWindow::GetCharWidth/Height() instead of
 // the current font.
diff -ur wxWidgets-2.6.3/include/wx/stream.h wxWidgets-2.6.3.3/include/wx/stream.h
--- wxWidgets-2.6.3/include/wx/stream.h	2005-06-26 11:46:08.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/stream.h	2006-04-19 05:33:33.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Guilhem Lavaux, Guillermo Rodriguez Garcia, Vadim Zeitlin
 // Modified by:
 // Created:     11/07/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Guilhem Lavaux
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -95,6 +95,7 @@
 #endif // WXWIN_COMPATIBILITY_2_2
 
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedStreamFunc1() {}
     virtual void ReservedStreamFunc2() {}
@@ -105,6 +106,7 @@
     virtual void ReservedStreamFunc7() {}
     virtual void ReservedStreamFunc8() {}
     virtual void ReservedStreamFunc9() {}
+#endif
 
 protected:
     virtual wxFileOffset OnSysSeek(wxFileOffset seek, wxSeekMode mode);
diff -ur wxWidgets-2.6.3/include/wx/string.h wxWidgets-2.6.3.3/include/wx/string.h
--- wxWidgets-2.6.3/include/wx/string.h	2005-12-15 14:26:27.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/string.h	2006-07-06 06:29:58.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -299,6 +299,53 @@
   typedef value_type *iterator;
   typedef const value_type *const_iterator;
 
+#if wxABI_VERSION >= 20604
+
+#define wxSTRING_REVERSE_ITERATOR(name, const_or_not)                         \
+  class name                                                                  \
+  {                                                                           \
+  public:                                                                     \
+      typedef wxChar value_type;                                              \
+      typedef const_or_not value_type& reference;                             \
+      typedef const_or_not value_type *pointer;                               \
+      typedef const_or_not value_type *iterator_type;                         \
+                                                                              \
+      name(iterator_type i) : m_cur(i) { }                                    \
+      name(const name& ri) : m_cur(ri.m_cur) { }                              \
+                                                                              \
+      iterator_type base() const { return m_cur; }                            \
+                                                                              \
+      reference operator*() const { return *(m_cur - 1); }                    \
+                                                                              \
+      name& operator++() { --m_cur; return *this; }                           \
+      name operator++(int) { name tmp = *this; --m_cur; return tmp; }         \
+      name& operator--() { ++m_cur; return *this; }                           \
+      name operator--(int) { name tmp = *this; ++m_cur; return tmp; }         \
+                                                                              \
+      bool operator==(name ri) const { return m_cur == ri.m_cur; }            \
+      bool operator!=(name ri) const { return !(*this == ri); }               \
+                                                                              \
+  private:                                                                    \
+      iterator_type m_cur;                                                    \
+  }
+
+  wxSTRING_REVERSE_ITERATOR(const_reverse_iterator, const);
+
+  #define wxSTRING_CONST
+  wxSTRING_REVERSE_ITERATOR(reverse_iterator, wxSTRING_CONST);
+  #undef wxSTRING_CONST
+
+  #undef wxSTRING_REVERSE_ITERATOR
+
+    // first element of the reversed string
+  const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); }
+  reverse_iterator rbegin() { return reverse_iterator(end()); }
+    // one beyond the end of the reversed string
+  const_reverse_iterator rend() const { return const_reverse_iterator(begin()); }
+  reverse_iterator rend() { return reverse_iterator(begin()); }
+
+#endif // ABI >= 2.6.4
+
   // constructors and destructor
     // ctor for an empty string
   wxStringBase() { Init(); }
diff -ur wxWidgets-2.6.3/include/wx/tglbtn.h wxWidgets-2.6.3.3/include/wx/tglbtn.h
--- wxWidgets-2.6.3/include/wx/tglbtn.h	2005-05-04 14:52:05.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/tglbtn.h	2006-05-23 13:53:50.000000000 -0400
@@ -5,7 +5,7 @@
 // Author:      John Norris, minor changes by Axel Schlueter
 // Modified by:
 // Created:     08.02.01
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2000 Johnny C. Norris II
 // License:     wxWindows Licence
 /////////////////////////////////////////////////////////////////////////////
@@ -27,7 +27,9 @@
 #define EVT_TOGGLEBUTTON(id, fn) \
     wx__DECLARE_EVT1(wxEVT_COMMAND_TOGGLEBUTTON_CLICKED, id, wxCommandEventHandler(fn))
 
-#if defined(__WXMSW__)
+#if defined(__WXUNIVERSAL__)
+    #include "wx/univ/tglbtn.h"
+#elif defined(__WXMSW__)
     #include "wx/msw/tglbtn.h"
 #elif defined(__WXGTK__)
     #include "wx/gtk/tglbtn.h"
diff -ur wxWidgets-2.6.3/include/wx/toplevel.h wxWidgets-2.6.3.3/include/wx/toplevel.h
--- wxWidgets-2.6.3/include/wx/toplevel.h	2005-06-26 11:46:08.000000000 -0400
+++ wxWidgets-2.6.3.3/include/wx/toplevel.h	2006-04-19 05:33:33.000000000 -0400
@@ -5,7 +5,7 @@
 // Author:      Vadim Zeitlin, Vaclav Slavik
 // Modified by:
 // Created:     06.08.01
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 //                       Vaclav Slavik <vaclav@wxwidgets.org>
 // Licence:     wxWindows licence
@@ -206,6 +206,7 @@
     // do the window-specific processing after processing the update event
     virtual void DoUpdateWindowUI(wxUpdateUIEvent& event) ;
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedTopLevelWindowFunc1() {}
     virtual void ReservedTopLevelWindowFunc2() {}
@@ -216,6 +217,7 @@
     virtual void ReservedTopLevelWindowFunc7() {}
     virtual void ReservedTopLevelWindowFunc8() {}
     virtual void ReservedTopLevelWindowFunc9() {}
+#endif
 
 protected:
     // the frame client to screen translation should take account of the
diff -ur wxWidgets-2.6.3/include/wx/version.h wxWidgets-2.6.3.3/include/wx/version.h
--- wxWidgets-2.6.3/include/wx/version.h	2006-01-18 05:25:00.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/version.h	2006-05-02 22:25:43.000000000 -0400
@@ -4,7 +4,7 @@
 *  Author:      Julian Smart
 *  Modified by: Ryan Norton (Converted to C)
 *  Created:     29/01/98
-*  RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+*  RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 *  Copyright:   (c) 1998 Julian Smart
 *  Licence:     wxWindows licence
 */
@@ -22,7 +22,7 @@
 #define wxMAJOR_VERSION      2
 #define wxMINOR_VERSION      6
 #define wxRELEASE_NUMBER     3
-#define wxSUBRELEASE_NUMBER  0
+#define wxSUBRELEASE_NUMBER  3
 #define wxVERSION_STRING   _T("wxWidgets 2.6.3")
 
 /*  nothing to update below this line when updating the version */
diff -ur wxWidgets-2.6.3/include/wx/window.h wxWidgets-2.6.3.3/include/wx/window.h
--- wxWidgets-2.6.3/include/wx/window.h	2006-01-30 23:02:41.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/window.h	2006-04-19 05:33:34.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by: Ron Lee
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vadim Zeitlin
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -1073,6 +1073,7 @@
     // behaviour in the most common case
     virtual bool ShouldInheritColours() const { return false; }
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     virtual void ReservedWindowFunc1() {}
     virtual void ReservedWindowFunc2() {}
@@ -1083,6 +1084,7 @@
     virtual void ReservedWindowFunc7() {}
     virtual void ReservedWindowFunc8() {}
     virtual void ReservedWindowFunc9() {}
+#endif
 
 protected:
     // event handling specific to wxWindow
@@ -1316,8 +1318,10 @@
     // implements the window variants
     virtual void DoSetWindowVariant( wxWindowVariant variant ) ;
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     void* m_windowReserved;
+#endif
 
 private:
     // contains the last id generated by NewControlId
diff -ur wxWidgets-2.6.3/include/wx/wx_cw_cm.h wxWidgets-2.6.3.3/include/wx/wx_cw_cm.h
--- wxWidgets-2.6.3/include/wx/wx_cw_cm.h	2006-01-18 09:12:23.000000000 -0500
+++ wxWidgets-2.6.3.3/include/wx/wx_cw_cm.h	2006-05-09 10:30:49.000000000 -0400
@@ -4,7 +4,7 @@
  Author:      Stefan Csomor
  Modified by:
  Created:
- RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+ RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
  Copyright:   (c) Stefan Csomor
  Licence:     wxWindows licence
 */
@@ -19,7 +19,9 @@
     #error "this file is only for builds with Metrowerks CodeWarrior"
 #endif
 
-#define WX_COMP_INLINE_NO_CLASS // defined if the compiler does not want the classname repeated for inlines within a class definition
+// defined if the compiler does not want the classname repeated for inlines
+// within a class definition
+#define WX_COMP_INLINE_NO_CLASS
 
 #if __MWERKS__ >= 0x2400 && __MWERKS__ < 0x3200
     #pragma old_argmatch on
@@ -55,22 +57,23 @@
     #endif
     #endif
 #elif defined( __WXMAC__)
-    #define USE_PRECOMPILED_MAC_HEADERS  0  /*Set to 0 if you don't want to use precompiled MacHeaders*/
+    /* Set to 0 if you don't want to use precompiled MacHeaders */
+    #define USE_PRECOMPILED_MAC_HEADERS  0
     #define ACCESSOR_CALLS_ARE_FUNCTIONS 1
     #define OPAQUE_TOOLBOX_STRUCTS 1
-    
-    /*CW9 has mbstate_t*/
-    #if defined(__MACH__) && __MWERKS__ < 0x3200
-		typedef int mbstate_t;
-		#define	_MBSTATE_T
+
+    /* CW8.3+ has mbstate_t */
+    #if defined(__MACH__) && __MWERKS__ < 0x3003
+        typedef int mbstate_t;
+        #define    _MBSTATE_T
     #endif
-    
-    /*CW9 has ssize_t*/
+
+    /* CW9 has ssize_t */
     #if defined(__MACH__) && __MWERKS__ >= 0x3200
         #define HAVE_SSIZE_T
-	#endif
-	
-	#include <mslconfig>
+    #endif
+
+    #include <mslconfig>
     // for getting the correct expat includes
     #define MACOS_CLASSIC
     /*
diff -ur wxWidgets-2.6.3/locale/de.po wxWidgets-2.6.3.3/locale/de.po
--- wxWidgets-2.6.3/locale/de.po	2005-08-21 12:02:08.000000000 -0400
+++ wxWidgets-2.6.3.3/locale/de.po	2006-04-16 00:13:50.000000000 -0400
@@ -13,21 +13,22 @@
 #: ../src/common/debugrpt.cpp:569
 #, c-format
 msgid "\t%s: %s\n"
-msgstr ""
+msgstr "\t%s: %s\n"
 
 #: ../src/common/debugrpt.cpp:572
 msgid ""
 "\n"
 "Please send this report to the program maintainer, thank you!\n"
 msgstr ""
+"Senden Sie bitte diesen Bericht an den Programmbetreuer. Vielen Dank!\n"
 
 #: ../src/palmos/utils.cpp:206
 msgid " "
-msgstr ""
+msgstr " "
 
 #: ../src/generic/dbgrptg.cpp:312
 msgid "              Thank you and we're sorry for the inconvenience!\n"
-msgstr ""
+msgstr "              Vielen Dank und entschuldigen Sie die Unannehmlichkeiten!\n"
 
 #: ../src/common/log.cpp:321
 #, c-format
@@ -113,23 +114,23 @@
 #: ../contrib/src/deprecated/resource.cpp:2390
 #, c-format
 msgid "%s not a bitmap resource specification."
-msgstr "%s gibt keine Quelle für eine Bitmap-Graphik an."
+msgstr "%s gibt keine Quelle für eine Bitmap-Grafik an."
 
 #: ../contrib/src/deprecated/resource.cpp:2544
 #, c-format
 msgid "%s not an icon resource specification."
-msgstr "%s gibt keine Quelle für eine Icon-Graphik an."
+msgstr "%s gibt keine Quelle für eine Icon-Grafik an."
 
 #: ../contrib/src/deprecated/resource.cpp:1901
 #: ../contrib/src/deprecated/resource.cpp:2030
 #: ../contrib/src/deprecated/resource.cpp:3123
 #, c-format
 msgid "%s: ill-formed resource file syntax."
-msgstr "%s: inkorrekter Syntax der Resource-Datei."
+msgstr "%s: inkorrekte Syntax der Ressourcen-Datei."
 
 #: ../src/html/helpfrm.cpp:357 ../src/html/helpfrm.cpp:359
 msgid "&About..."
-msgstr "Ãœbe&r..."
+msgstr "Ãœbe&r ..."
 
 #: ../src/common/stockitem.cpp:153
 msgid "&Actual Size"
@@ -176,7 +177,7 @@
 
 #: ../src/generic/dbgrptg.cpp:320
 msgid "&Debug report preview:"
-msgstr ""
+msgstr "Voransicht des Fehlerberichts:"
 
 #: ../src/common/stockitem.cpp:115 ../src/mac/carbon/textctrl.cpp:1076
 #: ../src/msw/textctrl.cpp:2066
@@ -261,9 +262,8 @@
 msgstr "&Nein"
 
 #: ../src/generic/dbgrptg.cpp:342
-#, fuzzy
 msgid "&Notes:"
-msgstr "&Nein"
+msgstr "&Hinweise:"
 
 #: ../src/common/stockitem.cpp:133 ../src/generic/fontdlgg.cpp:368
 #: ../src/generic/fontdlgg.cpp:375
@@ -272,11 +272,11 @@
 
 #: ../src/common/stockitem.cpp:134
 msgid "&Open"
-msgstr "&Öffnen..."
+msgstr "&Öffnen ..."
 
 #: ../src/html/helpfrm.cpp:352
 msgid "&Open..."
-msgstr "Öffnen..."
+msgstr "Öffnen ..."
 
 #: ../src/common/stockitem.cpp:135 ../src/mac/carbon/textctrl.cpp:1075
 #: ../src/msw/textctrl.cpp:2065
@@ -301,7 +301,7 @@
 
 #: ../src/common/prntbase.cpp:880
 msgid "&Print..."
-msgstr "Drucken..."
+msgstr "Drucken ..."
 
 #: ../src/common/stockitem.cpp:139
 msgid "&Properties"
@@ -335,7 +335,7 @@
 
 #: ../src/generic/logg.cpp:505
 msgid "&Save..."
-msgstr "&Sichern..."
+msgstr "&Sichern ..."
 
 #: ../src/generic/tipdlg.cpp:238
 msgid "&Show tips at startup"
@@ -445,25 +445,25 @@
 
 #: ../src/common/debugrpt.cpp:559
 msgid "*** A debug report has been generated\n"
-msgstr ""
+msgstr "*** Ein Fehlerbericht wurde erstellt.\n"
 
 #: ../src/common/debugrpt.cpp:562
 msgid "*** And includes the following files:\n"
-msgstr ""
+msgstr "*** Und beinhaltet die folgenden Dateien:\n"
 
 #: ../src/common/debugrpt.cpp:560
 #, c-format
 msgid "*** It can be found in \"%s\"\n"
-msgstr ""
+msgstr "*** Sie finden ihn in \"%s\"\n"
 
 #: ../contrib/src/deprecated/resource.cpp:1840
 #: ../contrib/src/deprecated/resource.cpp:1970
 #: ../contrib/src/deprecated/resource.cpp:3062
-#, fuzzy
 msgid ""
 ", expected static, #include or #define\n"
 "while parsing resource."
-msgstr "Erwarte 'char' während der Suche in einer Ressource."
+msgstr ", erwartete static, #include oder #define\n"
+"bei Abfrage einer Ressource."
 
 #: ../src/generic/dirctrlg.cpp:683 ../src/generic/filedlgg.cpp:740
 msgid "."
@@ -487,23 +487,20 @@
 msgstr "11 x 17 Zoll"
 
 #: ../src/common/paper.cpp:191
-#, fuzzy
 msgid "12 x 11 in"
-msgstr "10 x 14 Zoll"
+msgstr "12 x 11 Zoll"
 
 #: ../src/common/paper.cpp:148
-#, fuzzy
 msgid "15 x 11 in"
-msgstr "10 x 14 Zoll"
+msgstr "15 x 11 Zoll"
 
 #: ../src/common/paper.cpp:139
 msgid "6 3/4 Envelope, 3 5/8 x 6 1/2 in"
 msgstr "6 3/4 Umschlag, 3 5/8 x 6 1/2 Zoll"
 
 #: ../src/common/paper.cpp:146
-#, fuzzy
 msgid "9 x 11 in"
-msgstr "11 x 17 Zoll"
+msgstr "9 x 11 Zoll"
 
 #: ../src/html/htmprint.cpp:309
 msgid ": file does not exist!"
@@ -563,7 +560,7 @@
 
 #: ../src/generic/dbgrptg.cpp:304
 msgid "A debug report has been generated in the directory\n"
-msgstr ""
+msgstr "Fehlerbericht wurde erstellt im Verzeichnis\n"
 
 #: ../src/common/xtixml.cpp:409
 msgid "A non empty collection must consist of 'element' nodes"
@@ -574,24 +571,20 @@
 msgstr ""
 
 #: ../src/common/paper.cpp:163
-#, fuzzy
 msgid "A3 Extra 322 x 445 mm"
-msgstr "C3 Umschlag, 324 x 458 mm"
+msgstr "A3 Extra, 322 x 445 mm"
 
 #: ../src/common/paper.cpp:168
-#, fuzzy
 msgid "A3 Extra Transverse 322 x 445 mm"
-msgstr "C3 Umschlag, 324 x 458 mm"
+msgstr "A3 Extra quer, 322 x 445 mm"
 
 #: ../src/common/paper.cpp:177
-#, fuzzy
 msgid "A3 Rotated 420 x 297 mm"
-msgstr "A4 Blatt, 210 x 297 mm"
+msgstr "A3 gedreht, 420 x 297 mm"
 
 #: ../src/common/paper.cpp:167
-#, fuzzy
 msgid "A3 Transverse 297 x 420 mm"
-msgstr "A3 Blatt, 297 x 420 mm"
+msgstr "A3 quer, 297 x 420 mm"
 
 #: ../src/common/paper.cpp:113
 msgid "A3 sheet, 297 x 420 mm"
@@ -602,19 +595,16 @@
 msgstr ""
 
 #: ../src/common/paper.cpp:160
-#, fuzzy
 msgid "A4 Plus 210 x 330 mm"
-msgstr "A4 Blatt, 210 x 297 mm"
+msgstr "A4 Plus, 210 x 330 mm"
 
 #: ../src/common/paper.cpp:178
-#, fuzzy
 msgid "A4 Rotated 297 x 210 mm"
-msgstr "A3 Blatt, 297 x 420 mm"
+msgstr "A4 gedreht, 297 x 210 mm"
 
 #: ../src/common/paper.cpp:155
-#, fuzzy
 msgid "A4 Transverse 210 x 297 mm"
-msgstr "A4 Blatt, 210 x 297 mm"
+msgstr "A4 quer, 210 x 297 mm"
 
 #: ../src/common/paper.cpp:104
 msgid "A4 sheet, 210 x 297 mm"
@@ -622,35 +612,31 @@
 
 #: ../src/common/paper.cpp:114
 msgid "A4 small sheet, 210 x 297 mm"
-msgstr "A4 klein Blatt, 210 x 297 mm"
+msgstr "A4 kleines Blatt, 210 x 297 mm"
 
 #: ../src/common/paper.cpp:164
-#, fuzzy
 msgid "A5 Extra 174 x 235 mm"
-msgstr "A4 Blatt, 148 x 210 mm"
+msgstr "A5 extra, 174 x 235 mm"
 
 #: ../src/common/paper.cpp:179
 msgid "A5 Rotated 210 x 148 mm"
-msgstr ""
+msgstr "A5 gedreht, 210 x 148 mm"
 
 #: ../src/common/paper.cpp:161
-#, fuzzy
 msgid "A5 Transverse 148 x 210 mm"
-msgstr "A4 Blatt, 148 x 210 mm"
+msgstr "A5 quer, 148 x 210 mm"
 
 #: ../src/common/paper.cpp:115
 msgid "A5 sheet, 148 x 210 mm"
-msgstr "A4 Blatt, 148 x 210 mm"
+msgstr "A5 Blatt, 148 x 210 mm"
 
 #: ../src/common/paper.cpp:171
-#, fuzzy
 msgid "A6 105 x 148 mm"
-msgstr "10 x 14 Zoll"
+msgstr "A6 105 x 148 mm"
 
 #: ../src/common/paper.cpp:184
-#, fuzzy
 msgid "A6 Rotated 148 x 105 mm"
-msgstr "A4 Blatt, 148 x 210 mm"
+msgstr "A6 gedreht, 148 x 105 mm"
 
 #: ../src/generic/fontdlgg.cpp:87
 msgid "ABCDEFGabcdefg12345"
@@ -666,7 +652,7 @@
 
 #: ../src/html/helpfrm.cpp:444
 msgid "Add current page to bookmarks"
-msgstr "Aktuelle HTLM-Seite den Lesezeichen hinzufügen"
+msgstr "Aktuelle Seite den Lesezeichen hinzufügen"
 
 #: ../src/generic/colrdlgg.cpp:299
 msgid "Add to custom colours"
@@ -740,13 +726,12 @@
 msgstr "Eigenschaften"
 
 #: ../src/common/paper.cpp:144
-#, fuzzy
 msgid "B4 (ISO) 250 x 353 mm"
-msgstr "B4 Blatt, 250 x 354 mm"
+msgstr "B4 (ISO), 250 x 353 mm"
 
 #: ../src/common/paper.cpp:180
 msgid "B4 (JIS) Rotated 364 x 257 mm"
-msgstr ""
+msgstr "B4 (JIS) gedreht, 364 x 257 mm"
 
 #: ../src/common/paper.cpp:134
 msgid "B4 Envelope, 250 x 353 mm"
@@ -758,16 +743,15 @@
 
 #: ../src/common/paper.cpp:165
 msgid "B5 (ISO) Extra 201 x 276 mm"
-msgstr ""
+msgstr "B5 (ISO) extra, 201 x 276 mm"
 
 #: ../src/common/paper.cpp:181
 msgid "B5 (JIS) Rotated 257 x 182 mm"
-msgstr ""
+msgstr "B5 (JIS) gedreht, 257 x 182 mm"
 
 #: ../src/common/paper.cpp:162
-#, fuzzy
 msgid "B5 (JIS) Transverse 182 x 257 mm"
-msgstr "B5 Blatt, 182 x 257 mm"
+msgstr "B5 (JIS) quer, 182 x 257 mm"
 
 #: ../src/common/paper.cpp:135
 msgid "B5 Envelope, 176 x 250 mm"
@@ -779,11 +763,11 @@
 
 #: ../src/common/paper.cpp:189
 msgid "B6 (JIS) 128 x 182 mm"
-msgstr ""
+msgstr "B6 (JIS), 128 y 182 mm"
 
 #: ../src/common/paper.cpp:190
 msgid "B6 (JIS) Rotated 182 x 128 mm"
-msgstr ""
+msgstr "B6 (JIS) gedreht, 182 x 128 mm"
 
 #: ../src/common/paper.cpp:136
 msgid "B6 Envelope, 176 x 125 mm"
@@ -795,7 +779,7 @@
 
 #: ../src/common/imagbmp.cpp:94
 msgid "BMP: Couldn't save invalid image."
-msgstr "BMP: Konnte ungültige Format nicht sichern."
+msgstr "BMP: Konnte ungültiges Image nicht sichern."
 
 #: ../src/common/imagbmp.cpp:298
 msgid "BMP: Couldn't write RGB color map."
@@ -1148,7 +1132,7 @@
 #: ../src/html/helpdata.cpp:312
 #, c-format
 msgid "Cannot open contents file: %s"
-msgstr "Kann den Inhalt der Datei %s nicht öffnen!"
+msgstr "Kann den Inhaltsdatei %s nicht öffnen!"
 
 #: ../src/xrc/xmlres.cpp:421
 #, c-format
@@ -1198,9 +1182,8 @@
 msgstr "Kann 'Thread' nicht starten : Fehler beim 'TLS' schreiben"
 
 #: ../src/mac/carbon/mpthread.cpp:977 ../src/mac/carbon/thread.cpp:1174
-#, fuzzy
 msgid "Cannot wait for thread termination."
-msgstr "Kann nicht auf Threadende warten"
+msgstr "Kann nicht auf Beendigung des Threads warten"
 
 #: ../src/mac/carbon/mpthread.cpp:893 ../src/mac/carbon/thread.cpp:1082
 msgid "Cant create the thread event queue"
@@ -1293,7 +1276,7 @@
 
 #: ../src/html/htmlwin.cpp:386
 msgid "Connecting..."
-msgstr "Verbinde..."
+msgstr "Verbinde ..."
 
 #: ../src/html/helpfrm.cpp:476
 msgid "Contents"
@@ -1325,9 +1308,9 @@
 
 #: ../contrib/src/deprecated/resource.cpp:1830
 #: ../contrib/src/deprecated/resource.cpp:1960
-#, fuzzy, c-format
+#, c-format
 msgid "Could not find resource include file %s."
-msgstr "Konnte Datei %s nicht finden."
+msgstr "Konnte 'resource include'-Datei %s nicht finden."
 
 #: ../src/generic/tabg.cpp:1048
 msgid "Could not find tab for id"
@@ -1344,6 +1327,8 @@
 "Could not resolve control class or id '%s'. Use (non-zero) integer instead\n"
 " or provide #define (see manual for caveats)"
 msgstr ""
+"Konnte Kontroll-Klasse oder ID '%s' nicht auflösen. Benutzen Sie statt dessen\n"
+"einen Integer (nicht Null) oder #define (siehe Handbuch für Widersprüche)"
 
 #: ../contrib/src/deprecated/resource.cpp:1278
 #, c-format
@@ -1351,6 +1336,8 @@
 "Could not resolve menu id '%s'. Use (non-zero) integer instead\n"
 "or provide #define (see manual for caveats)"
 msgstr ""
+"Konnte Menü-ID '%s' nicht auflösen. Benutzen Sie statt dessen\n"
+"einen Integer (nicht Null) oder #define (siehe Handbuch für Widersprüche)"
 
 #: ../src/common/prntbase.cpp:1272
 msgid "Could not start document preview."
@@ -1497,16 +1484,15 @@
 #: ../src/generic/dbgrptg.cpp:295
 #, c-format
 msgid "Debug report \"%s\""
-msgstr ""
+msgstr "Fehlerbericht \"%s\""
 
 #: ../src/common/debugrpt.cpp:203
-#, fuzzy
 msgid "Debug report couldn't be created."
-msgstr "Verzeichnis '%s' konnte nicht angelegt werden."
+msgstr "Fehlerbericht konnte nicht erstellt werden."
 
 #: ../src/common/debugrpt.cpp:539
 msgid "Debug report generation has failed."
-msgstr ""
+msgstr "Erstellung des Fehlerberichts fehlgeschlagen."
 
 #: ../src/generic/fontdlgg.cpp:227
 msgid "Decorative"
@@ -1517,9 +1503,8 @@
 msgstr "Standard Kodierung"
 
 #: ../src/generic/prntdlgg.cpp:506
-#, fuzzy
 msgid "Default printer"
-msgstr "Standard Kodierung"
+msgstr "Standard-Drucker"
 
 #: ../contrib/src/gizmos/editlbox.cpp:160
 msgid "Delete item"
@@ -1532,7 +1517,7 @@
 
 #: ../src/generic/dirctrlg.cpp:656
 msgid "Desktop"
-msgstr ""
+msgstr "Desktop"
 
 #: ../src/msw/dialup.cpp:395
 msgid ""
@@ -1548,9 +1533,8 @@
 msgstr "Wussten Sie schon..."
 
 #: ../src/motif/filedlg.cpp:225
-#, fuzzy
 msgid "Directories"
-msgstr "Dekorativ"
+msgstr "Verzeichnisse"
 
 #: ../src/common/filefn.cpp:1177
 #, c-format
@@ -1593,7 +1577,7 @@
 msgstr ""
 "Wollen Sie den Befehl zum %s von Dateien mit der Erweiterung \"%s\" "
 "ändern ?\n"
-"Aktueller Wert ist;\n"
+"Aktueller Wert ist \n"
 "%s,\n"
 "Neuer Wert ist\n"
 "%s %1"
@@ -1605,7 +1589,7 @@
 
 #: ../src/common/sizer.cpp:1839
 msgid "Don't Save"
-msgstr ""
+msgstr "Nicht speichern"
 
 #: ../src/html/htmlwin.cpp:451 ../src/msw/frame.cpp:211
 msgid "Done"
@@ -1617,7 +1601,7 @@
 
 #: ../src/common/paper.cpp:183
 msgid "Double Japanese Postcard Rotated 148 x 200 mm"
-msgstr ""
+msgstr "Doppelte japanische Postkarte, gedreht, 148 x 200 mm"
 
 #: ../src/common/xtixml.cpp:271
 #, c-format
@@ -1646,25 +1630,24 @@
 msgstr "Geben Sie eine Zahl zwischen %d und %d ein:"
 
 #: ../src/generic/dbgrptg.cpp:169
-#, fuzzy, c-format
+#, c-format
 msgid "Enter command to open file \"%s\":"
-msgstr "Kann Datei '%s' nicht öffnen"
+msgstr "Befehl eingeben zum Öffnen der Datei '%s':"
 
 #: ../src/generic/helpext.cpp:443
 msgid "Entries found"
 msgstr "Einträge gefunden"
 
 #: ../src/common/paper.cpp:149
-#, fuzzy
 msgid "Envelope Invite 220 x 220 mm"
-msgstr "DL Umschlag, 110 x 220 mm"
+msgstr "Umschlag Einladung, 220 x 220 mm"
 
 #: ../src/common/config.cpp:384
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Environment variables expansion failed: missing '%c' at position %u in '%s'."
 msgstr ""
-"Einstzen der Umgebungsvariablen schlug fehl. Es fehlt '%c' an Position %d in "
+"Einsetzen der Umgebungsvariablen schlug fehl. Es fehlt '%c' an Position %d in "
 "'%s'."
 
 #: ../src/generic/dirctrlg.cpp:689 ../src/generic/dirctrlg.cpp:707
@@ -1711,11 +1694,11 @@
 
 #: ../src/generic/progdlgg.cpp:202
 msgid "Estimated time : "
-msgstr "Geschätzte Zeit :"
+msgstr "Geschätzte Zeit: "
 
 #: ../src/generic/dbgrptg.cpp:229
 msgid "Executable files (*.exe)|*.exe|All files (*.*)|*.*||"
-msgstr ""
+msgstr "Ausführbare Dateien (*.exe)|*.exe|Alle Dateien (*.*)|*.*||"
 
 #: ../src/msw/utilsexc.cpp:753
 #, c-format
@@ -1734,29 +1717,28 @@
 #: ../contrib/src/deprecated/resource.cpp:1869
 #: ../contrib/src/deprecated/resource.cpp:1999
 #: ../contrib/src/deprecated/resource.cpp:3091
-#, fuzzy
 msgid "Expected '*' while parsing resource."
-msgstr "Erwarte '*' während der Suche in einer Ressource."
+msgstr "Erwarte '*' beim Einlesen einer Ressource."
 
 #: ../contrib/src/deprecated/resource.cpp:1886
 #: ../contrib/src/deprecated/resource.cpp:2015
 #: ../contrib/src/deprecated/resource.cpp:3108
-#, fuzzy
 msgid "Expected '=' while parsing resource."
-msgstr "Erwarte '=' während der Suche in einer Ressource."
+msgstr "Erwarte '=' beim Einlesen einer Ressource."
 
 #: ../contrib/src/deprecated/resource.cpp:1855
 #: ../contrib/src/deprecated/resource.cpp:1985
 #: ../contrib/src/deprecated/resource.cpp:3077
-#, fuzzy
 msgid "Expected 'char' while parsing resource."
-msgstr "Erwarte 'char' während der Suche in einer Ressource."
+msgstr "Erwarte 'char' beim Einlesen einer Ressource."
 
 #: ../src/msw/registry.cpp:1140
 #, c-format
 msgid ""
 "Exporting registry key: file \"%s\" already exists and won't be overwritten."
 msgstr ""
+"Exportieren von Registrierschlüssel: Datei '%s' besteht bereits und"
+"wird nicht überschrieben."
 
 #: ../src/common/fmapbase.cpp:143
 msgid "Extended Unix Codepage for Japanese (EUC-JP)"
@@ -1786,9 +1768,9 @@
 msgstr "Änderung des Video-Modus gescheitert"
 
 #: ../src/common/debugrpt.cpp:237
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to clean up debug report directory \"%s\""
-msgstr "Das Verzeichnis %s/.gnome konnte nicht erzeugt werden."
+msgstr "Fehlerbericht-Verzeichnis '%s' konnte nicht geleert werden."
 
 #: ../src/common/filename.cpp:191
 msgid "Failed to close file handle"
@@ -1830,7 +1812,7 @@
 #: ../src/msw/registry.cpp:613
 #, c-format
 msgid "Failed to copy the registry subkey '%s' to '%s'."
-msgstr "Kopieren des Registry-Schlüssels von '%s' in '%s' gescheitert"
+msgstr "Kopieren des Registry-Unterschlüssels von '%s' in '%s' gescheitert"
 
 #: ../src/msw/dde.cpp:989
 msgid "Failed to create DDE string"
@@ -1855,16 +1837,16 @@
 #: ../src/msw/dde.cpp:447
 #, c-format
 msgid "Failed to create connection to server '%s' on topic '%s'"
-msgstr "Aufbau der Verbindung zur Server '%s' 'on topic' '%s' gescheitert"
+msgstr "Aufbau der Verbindung zur Server '%s' bezüglich '%s' gescheitert"
 
 #: ../src/msw/cursor.cpp:218
 msgid "Failed to create cursor."
 msgstr "Cursor konnte nicht erzeugt werden"
 
 #: ../src/common/debugrpt.cpp:202
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to create directory \"%s\""
-msgstr "Das Verzeichnis %s/.gnome konnte nicht erzeugt werden."
+msgstr "Das Verzeichnis '%s' konnte nicht erzeugt werden."
 
 #: ../src/unix/mimetype.cpp:370
 #, c-format
@@ -1911,7 +1893,7 @@
 
 #: ../src/msw/dde.cpp:650
 msgid "Failed to establish an advise loop with DDE server"
-msgstr "Aufbau einer 'advise Schleife\" mit dem DDE Server gescheitert"
+msgstr "Aufbau einer 'advise Schleife' mit dem DDE Server gescheitert"
 
 #: ../src/msw/dialup.cpp:658
 #, c-format
@@ -1925,7 +1907,7 @@
 
 #: ../src/common/debugrpt.cpp:666
 msgid "Failed to execute curl, please install it in PATH."
-msgstr ""
+msgstr "Konnte curl nicht ausführen, installieren Sie es bitte in PATH."
 
 #: ../contrib/src/deprecated/resource.cpp:2489
 #, c-format
@@ -1933,6 +1915,8 @@
 "Failed to find XBM resource %s.\n"
 "Forgot to use wxResourceLoadBitmapData?"
 msgstr ""
+"Konnte XBM-Ressource %s nicht finden.\n"
+"Vielleicht haben Sie vergessen, 'wxResourceLoadBitmapData' zu benutzen?"
 
 #: ../contrib/src/deprecated/resource.cpp:2643
 #, c-format
@@ -1940,6 +1924,8 @@
 "Failed to find XBM resource %s.\n"
 "Forgot to use wxResourceLoadIconData?"
 msgstr ""
+"Konnte XBM-Ressource %s nicht finden.\n"
+"Vielleicht haben Sie vergessen, 'wxResourceLoadIconData' zu benutzen?"
 
 #: ../contrib/src/deprecated/resource.cpp:2504
 #, c-format
@@ -1947,6 +1933,8 @@
 "Failed to find XPM resource %s.\n"
 "Forgot to use wxResourceLoadBitmapData?"
 msgstr ""
+"Konnte XPM-Ressource %s nicht finden.\n"
+"Vielleicht haben Sie vergessen, 'wxResourceLoadBitmapData' zu benutzen?"
 
 #: ../src/msw/dialup.cpp:718
 #, c-format
@@ -2005,9 +1993,9 @@
 msgstr "Konnte das Bild %d aus der Datei '%s' nicht laden."
 
 #: ../src/msw/enhmeta.cpp:84
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to load metafile from file \"%s\"."
-msgstr "Konnte das Bild %d aus der Datei '%s' nicht laden."
+msgstr "Konnte Metadatei aus der Datei '%s' nicht laden."
 
 #: ../src/msw/volume.cpp:312
 msgid "Failed to load mpr.dll."
@@ -2050,7 +2038,7 @@
 
 #: ../src/common/filename.cpp:788
 msgid "Failed to open temporary file."
-msgstr "Konnte vorübergehende Datei nicht öffnen."
+msgstr "Konnte temporäre Datei nicht öffnen."
 
 #: ../src/msw/clipbrd.cpp:99
 msgid "Failed to open the clipboard."
@@ -2088,14 +2076,14 @@
 "Versuch gescheitert, an die Kodierung für den Zeichensatz '%s' zu erinnern."
 
 #: ../src/common/debugrpt.cpp:220
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to remove debug report file \"%s\""
-msgstr "Konnte  Sperr-Datei '%s' nicht löschen."
+msgstr "Konnte Fehlerbericht-Datei '%s' nicht löschen."
 
 #: ../src/unix/snglinst.cpp:327
 #, c-format
 msgid "Failed to remove lock file '%s'"
-msgstr "Konnte  Sperr-Datei '%s' nicht löschen."
+msgstr "Konnte Sperr-Datei '%s' nicht löschen."
 
 #: ../src/unix/snglinst.cpp:293
 #, c-format
@@ -2105,12 +2093,12 @@
 #: ../src/msw/registry.cpp:464
 #, c-format
 msgid "Failed to rename registry value '%s' to '%s'."
-msgstr "Umbenennen des Registrieungswertes '%s' in '%s' gescheitert"
+msgstr "Umbenennen des Registrierungswertes '%s' in '%s' gescheitert"
 
 #: ../src/msw/registry.cpp:568
 #, c-format
 msgid "Failed to rename the registry key '%s' to '%s'."
-msgstr "Umbenennen des Registrieungsschlüssels von '%s' in '%s' gescheitert"
+msgstr "Umbenennen des Registrierungsschlüssels von '%s' in '%s' gescheitert"
 
 #: ../src/msw/clipbrd.cpp:503
 msgid "Failed to retrieve data from the clipboard."
@@ -2174,7 +2162,7 @@
 
 #: ../src/msw/dde.cpp:669
 msgid "Failed to terminate the advise loop with DDE server"
-msgstr "Versuch gescheitert, die 'advise Schleife mit DDE-Server zu beenden."
+msgstr "Versuch gescheitert, die 'advise Schleife' mit DDE-Server zu beenden."
 
 #: ../src/msw/dialup.cpp:955
 #, c-format
@@ -2183,13 +2171,14 @@
 
 #: ../src/common/filename.cpp:1933
 #, c-format
+# see man touch
 msgid "Failed to touch the file '%s'"
-msgstr "Konnte die Datei '%s' nicht 'berühren'"
+msgstr "Konnte die Datei '%s' nicht erzeugen"
 
 #: ../src/unix/snglinst.cpp:333
 #, c-format
 msgid "Failed to unlock lock file '%s'"
-msgstr "Konnte die Sperrung von Datei '%s' nicht aufheben"
+msgstr "Konnte die Sperrung von Sperr-Datei '%s' nicht aufheben"
 
 #: ../src/msw/dde.cpp:318
 #, c-format
@@ -2201,9 +2190,9 @@
 msgstr "Kann Benutzer-Konfigurations-Datei nicht aktualisieren."
 
 #: ../src/common/debugrpt.cpp:679
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to upload the debug report (error code %d)."
-msgstr "Konnte keinen Standard Finden/Ersetzen-Dialog erstellen (Fehler %d)"
+msgstr "Konnte Fehlerbericht nicht hochladen (Fehlercode %d)."
 
 #: ../src/unix/snglinst.cpp:173
 #, c-format
@@ -2239,7 +2228,7 @@
 "Do you want to replace it?"
 msgstr ""
 "Datei '%s' existiert bereits.\n"
-"Möchten Sie sie wirklich überschreiben?"
+"Möchten Sie sie wirklich ersetzen?"
 
 #: ../src/common/textcmn.cpp:215
 msgid "File couldn't be loaded."
@@ -2254,9 +2243,8 @@
 msgstr "Dateiname bereits vorhanden"
 
 #: ../src/motif/filedlg.cpp:226
-#, fuzzy
 msgid "Files"
-msgstr "Datei"
+msgstr "Dateien"
 
 #: ../src/common/filefn.cpp:1746
 #, c-format
@@ -2264,9 +2252,8 @@
 msgstr "Dateien (%s)"
 
 #: ../src/motif/filedlg.cpp:224
-#, fuzzy
 msgid "Filter"
-msgstr "Datei"
+msgstr "Filter"
 
 #: ../src/html/helpfrm.cpp:491
 msgid "Find"
@@ -2286,11 +2273,11 @@
 
 #: ../src/html/helpfrm.cpp:1220
 msgid "Font size:"
-msgstr "Font Größe:"
+msgstr "Schrift-Größe:"
 
 #: ../src/unix/utilsunx.cpp:545
 msgid "Fork failed"
-msgstr "'Fork' gescheitert"
+msgstr "Aufspaltung des Prozesses gescheitert"
 
 #: ../src/common/xtixml.cpp:235
 msgid "Forward hrefs are not supported"
@@ -2336,9 +2323,8 @@
 msgstr "GTK+ Thema"
 
 #: ../src/common/prntbase.cpp:228
-#, fuzzy
 msgid "Generic PostScript"
-msgstr "PostScript-Datei"
+msgstr "PostScript generisch"
 
 #: ../src/common/paper.cpp:142
 msgid "German Legal Fanfold, 8 1/2 x 13 in"
@@ -2378,7 +2364,7 @@
 
 #: ../src/generic/filedlgg.cpp:981
 msgid "Go to parent directory"
-msgstr "Gehe zum 'Parent'-Verzeichnis"
+msgstr "Gehe zum übergeordneten Verzeichnis"
 
 #: ../src/common/prntbase.cpp:851
 msgid "Goto Page"
@@ -2390,7 +2376,7 @@
 
 #: ../src/common/zstream.cpp:72 ../src/common/zstream.cpp:209
 msgid "Gzip not supported by this version of zlib"
-msgstr "Gzip wird nicht für diese zlib Version unterstützt"
+msgstr "Gzip wird nicht von dieser zlib Version unterstützt"
 
 #: ../src/html/helpfrm.cpp:1574
 msgid "HTML Help Project (*.hhp)|*.hhp|"
@@ -2443,9 +2429,8 @@
 msgstr "Start"
 
 #: ../src/generic/dirctrlg.cpp:654
-#, fuzzy
 msgid "Home directory"
-msgstr "Verzeichnis anlegen"
+msgstr "Home-Verzeichnis"
 
 #: ../include/wx/filefn.h:145
 msgid "I64"
@@ -2492,15 +2477,17 @@
 
 #: ../contrib/src/deprecated/resource.cpp:2673
 #: ../contrib/src/deprecated/resource.cpp:2684
-#, fuzzy, c-format
+#, c-format
 msgid "Icon resource specification %s not found."
-msgstr "XRC Resource '%s' (Klasse '%s') nicht gefunden !"
+msgstr "Icon-Ressource-Spezifikation %s nicht gefunden !"
 
 #: ../src/generic/dbgrptg.cpp:344
 msgid ""
 "If you have any additional information pertaining to this bug\n"
 "report, please enter it here and it will be joined to it:"
 msgstr ""
+"Wenn Sie zusätzliche Informationen zu diesem Fehlerbericht\n"
+"haben, geben Sie sie hier ein und sie werden hinzugefügt:"
 
 #: ../src/generic/dbgrptg.cpp:310
 msgid ""
@@ -2509,15 +2496,18 @@
 "but be warned that it may hinder improving the program, so if\n"
 "at all possible please do continue with the report generation.\n"
 msgstr ""
+"Wenn Sie den Fehlerbericht komplett verwerfen möchten, drücken Sie 'Cancel',\n"
+"aber seien Sie gewarnt: dies verhindert vielleicht die Verbesserung des\n"
+"Programms, also setzen Sie das Erstellen des Fehlerberichts nach Möglichkeit fort.\n"
 
 #: ../src/msw/registry.cpp:1304
 #, c-format
 msgid "Ignoring value \"%s\" of the key \"%s\"."
-msgstr ""
+msgstr "Ignoriere Wert \"%s\" vom Schlüssel \"%s\"."
 
 #: ../contrib/src/deprecated/resource.cpp:271
 msgid "Ill-formed resource file syntax."
-msgstr "Verformter Quelldatei syntax."
+msgstr "Ungültige Syntax der Quelldatei."
 
 #: ../src/common/xtistrm.cpp:260
 msgid "Illegal Object Class (Non-wxEvtHandler) as Event Source"
@@ -2589,7 +2579,7 @@
 
 #: ../src/common/init.cpp:232
 msgid "Initialization failed in post init, aborting."
-msgstr ""
+msgstr "Initialisierung während 'post init' fehlgeschlagen, Abbruch."
 
 #: ../src/common/xtistrm.cpp:704
 msgid "Internal error, illegal wxCustomTypeInfo"
@@ -2607,7 +2597,7 @@
 #: ../src/common/appcmn.cpp:249
 #, c-format
 msgid "Invalid display mode specification '%s'."
-msgstr "Ungültige Angabe '%s' des Displays."
+msgstr "Ungültige Angabe '%s' des Displaymodes."
 
 #: ../src/x11/app.cpp:128
 #, c-format
@@ -2650,55 +2640,55 @@
 
 #: ../src/common/paper.cpp:170
 msgid "Japanese Double Postcard 200 x 148 mm"
-msgstr ""
+msgstr "Japanische Doppel-Postkarte, 200 x 148 mm"
 
 #: ../src/common/paper.cpp:174
 msgid "Japanese Envelope Chou #3"
-msgstr ""
+msgstr "Japanischer Umschlag Chou #3"
 
 #: ../src/common/paper.cpp:187
 msgid "Japanese Envelope Chou #3 Rotated"
-msgstr ""
+msgstr "Japanischer Umschlag Chou #3 gedreht"
 
 #: ../src/common/paper.cpp:175
 msgid "Japanese Envelope Chou #4"
-msgstr ""
+msgstr "Japanischer Umschlag Chou #4"
 
 #: ../src/common/paper.cpp:188
 msgid "Japanese Envelope Chou #4 Rotated"
-msgstr ""
+msgstr "Japanischer Umschlag Chou #4 gedreht"
 
 #: ../src/common/paper.cpp:172
 msgid "Japanese Envelope Kaku #2"
-msgstr ""
+msgstr "Japanischer Umschlag Chou #4"
 
 #: ../src/common/paper.cpp:185
 msgid "Japanese Envelope Kaku #2 Rotated"
-msgstr ""
+msgstr "Japanischer Umschlag Kaku #2 gedreht"
 
 #: ../src/common/paper.cpp:173
 msgid "Japanese Envelope Kaku #3"
-msgstr ""
+msgstr "Japanischer Umschlag Kaku #3"
 
 #: ../src/common/paper.cpp:186
 msgid "Japanese Envelope Kaku #3 Rotated"
-msgstr ""
+msgstr "Japanischer Umschlag Kaku #3 gedreht"
 
 #: ../src/common/paper.cpp:192
 msgid "Japanese Envelope You #4"
-msgstr ""
+msgstr "Japanischer Umschlag You #4"
 
 #: ../src/common/paper.cpp:193
 msgid "Japanese Envelope You #4 Rotated"
-msgstr ""
+msgstr "Japanischer Umschlag You #4 gedreht"
 
 #: ../src/common/paper.cpp:145
 msgid "Japanese Postcard 100 x 148 mm"
-msgstr ""
+msgstr "Japanische Postkarte 100 x 148 mm"
 
 #: ../src/common/paper.cpp:182
 msgid "Japanese Postcard Rotated 148 x 100 mm"
-msgstr ""
+msgstr "Japanische Postkarte gedreht 148 x 100 mm"
 
 #: ../src/common/stockitem.cpp:128
 msgid "Justified"
@@ -2725,41 +2715,36 @@
 msgstr "Linker Rand (mm):"
 
 #: ../src/common/paper.cpp:151
-#, fuzzy
 msgid "Legal Extra 9 1/2 x 15 in"
-msgstr "Legal, 8 1/2 x 14 Zoll"
+msgstr "Legal extra, 9 1/2 x 15 Zoll"
 
 #: ../src/common/paper.cpp:103
 msgid "Legal, 8 1/2 x 14 in"
 msgstr "Legal, 8 1/2 x 14 Zoll"
 
 #: ../src/common/paper.cpp:150
-#, fuzzy
 msgid "Letter Extra 9 1/2 x 12 in"
-msgstr "Letter, 8 1/2 x 11 Zoll"
+msgstr "Letter extra, 9 1/2 x 12 Zoll"
 
 #: ../src/common/paper.cpp:156
 msgid "Letter Extra Transverse 9.275 x 12 in"
-msgstr ""
+msgstr "Letter extra quer, 9,275 x 12 Zoll"
 
 #: ../src/common/paper.cpp:159
-#, fuzzy
 msgid "Letter Plus 8 1/2 x 12.69 in"
-msgstr "Letter, 8 1/2 x 11 Zoll"
+msgstr "Letter plus, 8 1/2 x 12,69 Zoll"
 
 #: ../src/common/paper.cpp:176
-#, fuzzy
 msgid "Letter Rotated 11 x 8 1/2 in"
-msgstr "Letter, 8 1/2 x 11 Zoll"
+msgstr "Letter gedreht, 11 x 8 1/2 Zoll"
 
 #: ../src/common/paper.cpp:108
 msgid "Letter Small, 8 1/2 x 11 in"
 msgstr "Letter Small, 8 1/2 x 11 Zoll"
 
 #: ../src/common/paper.cpp:154
-#, fuzzy
 msgid "Letter Transverse 8 1/2 x 11 in"
-msgstr "Letter, 8 1/2 x 11 Zoll"
+msgstr "Letter quer, 8 1/2 x 11 Zoll"
 
 #: ../src/common/paper.cpp:102
 msgid "Letter, 8 1/2 x 11 in"
@@ -2833,7 +2818,7 @@
 #: ../src/common/fs_mem.cpp:176
 #, c-format
 msgid "Memory VFS already contains file '%s'!"
-msgstr "VFS-Speicher beinhaltet bereits der Datei '%s'!"
+msgstr "VFS-Speicher beinhaltet bereits die Datei '%s'!"
 
 #: ../src/msw/frame.cpp:374
 msgid "Menu"
@@ -2868,11 +2853,11 @@
 #: ../src/common/module.cpp:77
 #, c-format
 msgid "Module \"%s\" initialization failed"
-msgstr ""
+msgstr "Initialisierung des Moduls '%s' fehlgeschlagen"
 
 #: ../src/common/paper.cpp:138
 msgid "Monarch Envelope, 3 7/8 x 7 1/2 in"
-msgstr "Monarch Envelope, 3 7/8 x 7 1/2 Zoll"
+msgstr "Monarch Umschlag, 3 7/8 x 7 1/2 Zoll"
 
 #: ../contrib/src/gizmos/editlbox.cpp:162
 msgid "Move down"
@@ -2880,7 +2865,7 @@
 
 #: ../contrib/src/gizmos/editlbox.cpp:161
 msgid "Move up"
-msgstr "Nach oben"
+msgstr "Aufwärts verschieben"
 
 #: ../src/generic/filedlgg.cpp:431
 msgid "Name"
@@ -3000,7 +2985,7 @@
 
 #: ../src/html/helpfrm.cpp:1218
 msgid "Normal font:"
-msgstr "Normal Font:"
+msgstr "Normale Schrift:"
 
 #: ../src/common/paper.cpp:122
 msgid "Note, 8 1/2 x 11 in"
@@ -3021,12 +3006,12 @@
 
 #: ../src/html/helpfrm.cpp:673 ../src/html/helpfrm.cpp:1579
 msgid "Open HTML document"
-msgstr "Öffne HTLM Dokument"
+msgstr "Öffne HTML-Dokument"
 
 #: ../src/generic/dbgrptg.cpp:158
-#, fuzzy, c-format
+#, c-format
 msgid "Open file \"%s\""
-msgstr "Datei öffnen"
+msgstr "Datei '%s' öffnen"
 
 #: ../src/generic/dirctrlg.cpp:718 ../src/generic/dirdlgg.cpp:342
 #: ../src/generic/filedlgg.cpp:632 ../src/generic/filedlgg.cpp:772
@@ -3036,17 +3021,17 @@
 #: ../src/common/cmdline.cpp:702
 #, c-format
 msgid "Option '%s' requires a value, '=' expected."
-msgstr "Option '%s' erwartet einen Wert, '=' erwartet."
+msgstr "Option '%s' benötigt einen Wert, '=' erwartet."
 
 #: ../src/common/cmdline.cpp:722
 #, c-format
 msgid "Option '%s' requires a value."
-msgstr "Option '%s' erwartet einen Wert."
+msgstr "Option '%s' benötigt einen Wert."
 
 #: ../src/common/cmdline.cpp:784
 #, c-format
 msgid "Option '%s': '%s' cannot be converted to a date."
-msgstr "Option '%s': '%s' kann nicht in eine Datum umgesetzt werden."
+msgstr "Option '%s': '%s' kann nicht in ein Datum umgesetzt werden."
 
 #: ../src/generic/dirdlgg.cpp:116 ../src/generic/prntdlgg.cpp:614
 msgid "Options"
@@ -3095,127 +3080,107 @@
 
 #: ../src/common/paper.cpp:194
 msgid "PRC 16K 146 x 215 mm"
-msgstr ""
+msgstr "PRC 16K, 146 x 215 mm"
 
 #: ../src/common/paper.cpp:207
 msgid "PRC 16K Rotated"
-msgstr ""
+msgstr "PRC 16K gedreht"
 
 #: ../src/common/paper.cpp:195
 msgid "PRC 32K 97 x 151 mm"
-msgstr ""
+msgstr "PRC 32K, 97 x 151 mm"
 
 #: ../src/common/paper.cpp:208
 msgid "PRC 32K Rotated"
-msgstr ""
+msgstr "PRC 32K gedreht"
 
 #: ../src/common/paper.cpp:196
 msgid "PRC 32K(Big) 97 x 151 mm"
-msgstr ""
+msgstr "PRC 32K(Big), 97 x 151 mm"
 
 #: ../src/common/paper.cpp:209
 msgid "PRC 32K(Big) Rotated"
-msgstr ""
+msgstr "PRC 32K(Big) gedreht"
 
 #: ../src/common/paper.cpp:197
-#, fuzzy
 msgid "PRC Envelope #1 102 x 165 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #1, 102 x 165 mm"
 
 #: ../src/common/paper.cpp:210
-#, fuzzy
 msgid "PRC Envelope #1 Rotated 165 x 102 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #1 gedreht, 165 x 102 mm"
 
 #: ../src/common/paper.cpp:206
-#, fuzzy
 msgid "PRC Envelope #10 324 x 458 mm"
-msgstr "C3 Umschlag, 324 x 458 mm"
+msgstr "PRC Umschlag #10, 324 x 458 mm"
 
 #: ../src/common/paper.cpp:219
-#, fuzzy
 msgid "PRC Envelope #10 Rotated 458 x 324 m"
-msgstr "C4 Umschlag, 229 x 324 mm"
+msgstr "PRC Umschlag #10 gedreht, 458 x 324 m"
 
 #: ../src/common/paper.cpp:198
-#, fuzzy
 msgid "PRC Envelope #2 102 x 176 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #2, 102 x 176 mm"
 
 #: ../src/common/paper.cpp:211
-#, fuzzy
 msgid "PRC Envelope #2 Rotated 176 x 102 mm"
-msgstr "B6 Umschlag, 176 x 125 mm"
+msgstr "PRC Umschlag #2 gedreht, 176 x 102 mm"
 
 #: ../src/common/paper.cpp:199
-#, fuzzy
 msgid "PRC Envelope #3 125 x 176 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #3, 125 x 176 mm"
 
 #: ../src/common/paper.cpp:212
-#, fuzzy
 msgid "PRC Envelope #3 Rotated 176 x 125 mm"
-msgstr "B6 Umschlag, 176 x 125 mm"
+msgstr "PRC Umschlag #3 gedreht, 176 x 125 mm"
 
 #: ../src/common/paper.cpp:200
-#, fuzzy
 msgid "PRC Envelope #4 110 x 208 mm"
-msgstr "DL Umschlag, 110 x 220 mm"
+msgstr "PRC Umschlag #4, 110 x 208 mm"
 
 #: ../src/common/paper.cpp:213
-#, fuzzy
 msgid "PRC Envelope #4 Rotated 208 x 110 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #4 gedreht, 208 x 110 mm"
 
 #: ../src/common/paper.cpp:201
-#, fuzzy
 msgid "PRC Envelope #5 110 x 220 mm"
-msgstr "DL Umschlag, 110 x 220 mm"
+msgstr "PRC Umschlag #5, 110 x 220 mm"
 
 #: ../src/common/paper.cpp:214
-#, fuzzy
 msgid "PRC Envelope #5 Rotated 220 x 110 mm"
-msgstr "C4 Umschlag, 229 x 324 mm"
+msgstr "PRC Umschlag #5 gedreht, 220 x 110 mm"
 
 #: ../src/common/paper.cpp:202
-#, fuzzy
 msgid "PRC Envelope #6 120 x 230 mm"
-msgstr "C5 Umschlag, 162 x 229 mm"
+msgstr "PRC Umschlag #6, 120 x 230 mm"
 
 #: ../src/common/paper.cpp:215
-#, fuzzy
 msgid "PRC Envelope #6 Rotated 230 x 120 mm"
-msgstr "C5 Umschlag, 162 x 229 mm"
+msgstr "PRC Umschlag #6 gedreht, 230 x 120 mm"
 
 #: ../src/common/paper.cpp:203
-#, fuzzy
 msgid "PRC Envelope #7 160 x 230 mm"
-msgstr "B5 Umschlag, 176 x 250 mm"
+msgstr "PRC Umschlag #7, 160 x 230 mm"
 
 #: ../src/common/paper.cpp:216
-#, fuzzy
 msgid "PRC Envelope #7 Rotated 230 x 160 mm"
-msgstr "C6 Umschlag, 114 x 162 mm"
+msgstr "PRC Umschlag #7 gedreht, 230 x 160 mm"
 
 #: ../src/common/paper.cpp:204
-#, fuzzy
 msgid "PRC Envelope #8 120 x 309 mm"
-msgstr "C5 Umschlag, 162 x 229 mm"
+msgstr "PRC Umschlag #8, 120 x 309 mm"
 
 #: ../src/common/paper.cpp:217
-#, fuzzy
 msgid "PRC Envelope #8 Rotated 309 x 120 mm"
-msgstr "C4 Umschlag, 229 x 324 mm"
+msgstr "PRC Umschlag #8 gedreht, 309 x 120 mm"
 
 #: ../src/common/paper.cpp:205
-#, fuzzy
 msgid "PRC Envelope #9 229 x 324 mm"
-msgstr "C4 Umschlag, 229 x 324 mm"
+msgstr "PRC Umschlag #9, 229 x 324 mm"
 
 #: ../src/common/paper.cpp:218
-#, fuzzy
 msgid "PRC Envelope #9 Rotated 324 x 229 mm"
-msgstr "C5 Umschlag, 162 x 229 mm"
+msgstr "PRC Umschlag #9 gedreht, 324 x 229 mm"
 
 #: ../src/common/prntbase.cpp:1294
 #, c-format
@@ -3232,7 +3197,6 @@
 msgstr "Seiten-Einstellungen"
 
 #: ../src/common/prntbase.cpp:451 ../src/gtk/gnome/gprint.cpp:540
-#, fuzzy
 msgid "Page setup"
 msgstr "Seiten-Einstellungen"
 
@@ -3260,7 +3224,7 @@
 
 #: ../src/common/xtistrm.cpp:436 ../src/common/xtistrm.cpp:656
 msgid "Passing an unkown object to GetObject"
-msgstr "Ein unbekanntes Objekt wurde an GetObject übergeben\""
+msgstr "Ein unbekanntes Objekt wurde an GetObject übergeben"
 
 #: ../src/generic/filedlgg.cpp:437
 msgid "Permissions"
@@ -3272,7 +3236,7 @@
 
 #: ../src/gtk/fontdlg.cpp:81
 msgid "Please choose a valid font."
-msgstr "Bitte wählen Sie einen gültigen Font."
+msgstr "Bitte wählen Sie eine gültige Schriftart."
 
 #: ../src/generic/filedlgg.cpp:1325
 msgid "Please choose an existing file."
@@ -3295,7 +3259,7 @@
 msgstr ""
 "Bitte installieren Sie eine neuere Version von comctl32.dll\n"
 "(mindestens Version 4.70 wird benötigt, aber Sie haben nur\n"
-"Version %d.%02d)."
+"Version %d.%02d), oder dieses Programm wird nicht korrekt funktionieren."
 
 #: ../src/common/prntbase.cpp:313
 msgid "Please wait while printing\n"
@@ -3348,9 +3312,8 @@
 msgstr "Druck&vorschau"
 
 #: ../src/gtk/gnome/gprint.cpp:785
-#, fuzzy
 msgid "Print preview"
-msgstr "Druck&vorschau"
+msgstr "Druckvorschau"
 
 #: ../src/generic/prntdlgg.cpp:626
 msgid "Print spooling"
@@ -3365,9 +3328,8 @@
 msgstr "In Datei drucken"
 
 #: ../src/generic/prntdlgg.cpp:489
-#, fuzzy
 msgid "Printer"
-msgstr "Drucken"
+msgstr "Drucker"
 
 #: ../src/generic/prntdlgg.cpp:629
 msgid "Printer command:"
@@ -3383,12 +3345,11 @@
 
 #: ../src/generic/prntdlgg.cpp:915
 msgid "Printer..."
-msgstr "Drucker..."
+msgstr "Drucker ..."
 
 #: ../src/generic/prntdlgg.cpp:190
-#, fuzzy
 msgid "Printer:"
-msgstr "Drucker..."
+msgstr "Drucker:"
 
 #: ../src/common/prntbase.cpp:310 ../src/common/prntbase.cpp:531
 msgid "Printing "
@@ -3401,17 +3362,19 @@
 #: ../src/generic/printps.cpp:208
 #, c-format
 msgid "Printing page %d..."
-msgstr "Drucke Seite %d..."
+msgstr "Drucke Seite %d ..."
 
 #: ../src/generic/printps.cpp:168
 msgid "Printing..."
-msgstr "Drucke..."
+msgstr "Drucke ..."
 
 #: ../src/common/debugrpt.cpp:546
 #, c-format
 msgid ""
 "Processing debug report has failed, leaving the files in \"%s\" directory."
 msgstr ""
+"Verarbeitung des Fehlerberichts fehlgeschlagen, lasse die Dateien im "
+"'%s'-Verzeichnis."
 
 #: ../src/common/log.cpp:466
 msgid "Program aborted."
@@ -3431,9 +3394,8 @@
 msgstr "Lesefehler in Datei '%s'"
 
 #: ../src/common/prntbase.cpp:242
-#, fuzzy
 msgid "Ready"
-msgstr "&Wiederholen"
+msgstr "Fertig"
 
 #: ../src/xrc/xmlres.cpp:643
 #, c-format
@@ -3485,7 +3447,7 @@
 
 #: ../src/html/helpfrm.cpp:445
 msgid "Remove current page from bookmarks"
-msgstr "Aktuelle HTLM-Seite als Lesezeichen entfernen"
+msgstr "Aktuelle Seite als Lesezeichen entfernen"
 
 #: ../src/common/rendcmn.cpp:196
 #, c-format
@@ -3512,7 +3474,7 @@
 
 #: ../src/common/stockitem.cpp:144
 msgid "Revert to Saved"
-msgstr ""
+msgstr "Zurück zu Gespeichert"
 
 #: ../src/generic/prntdlgg.cpp:891
 msgid "Right margin (mm):"
@@ -3523,9 +3485,8 @@
 msgstr "Roman"
 
 #: ../src/common/sizer.cpp:1838
-#, fuzzy
 msgid "Save"
-msgstr "&Sichern"
+msgstr "Sichern"
 
 #: ../src/common/fldlgcmn.cpp:259
 #, c-format
@@ -3534,7 +3495,7 @@
 
 #: ../src/common/stockitem.cpp:146
 msgid "Save &As..."
-msgstr "&Speichern unter..."
+msgstr "&Speichern unter ..."
 
 #: ../src/common/docview.cpp:305
 msgid "Save as"
@@ -3572,7 +3533,7 @@
 
 #: ../src/html/helpfrm.cpp:868
 msgid "Searching..."
-msgstr "Suchen..."
+msgstr "Suchen ..."
 
 #: ../src/generic/dirctrlg.cpp:592
 msgid "Sections"
@@ -3586,7 +3547,8 @@
 #: ../src/common/ffile.cpp:212
 #, c-format
 msgid "Seek error on file '%s' (large files not supported by stdio)"
-msgstr ""
+msgstr "Suchfehler in Datei '%s' (grosse Dateien werden von stdio "
+"nicht unterstützt)"
 
 #: ../src/mac/carbon/textctrl.cpp:1078 ../src/msw/textctrl.cpp:2068
 msgid "Select &All"
@@ -3598,16 +3560,15 @@
 
 #: ../src/common/docview.cpp:1776
 msgid "Select a document view"
-msgstr "Dokument-Anzeige ('View') wählen"
+msgstr "Dokumenten-Ansicht wählen"
 
 #: ../src/common/docview.cpp:1579
 msgid "Select a file"
 msgstr "Datei wählen"
 
 #: ../src/motif/filedlg.cpp:226
-#, fuzzy
 msgid "Selection"
-msgstr "Abschnitte"
+msgstr "Auswahl"
 
 #: ../src/common/cmdline.cpp:739
 #, c-format
@@ -3620,7 +3581,7 @@
 
 #: ../src/generic/prntdlgg.cpp:182
 msgid "Setup..."
-msgstr "Einstellungen..."
+msgstr "Einstellungen ..."
 
 #: ../src/msw/dialup.cpp:567
 msgid "Several active dialup connections found, choosing one randomly."
@@ -3656,9 +3617,8 @@
 
 #: ../src/generic/progdlgg.cpp:222 ../src/generic/progdlgg.cpp:240
 #: ../src/generic/progdlgg.cpp:598
-#, fuzzy
 msgid "Skip"
-msgstr "Script"
+msgstr "Ãœberspringen"
 
 #: ../src/generic/fontdlgg.cpp:234
 msgid "Slant"
@@ -3702,9 +3662,8 @@
 msgstr "Statement, 5 1/2 x 8 1/2 Zoll"
 
 #: ../src/generic/prntdlgg.cpp:198
-#, fuzzy
 msgid "Status:"
-msgstr "Status: "
+msgstr "Status:"
 
 #: ../src/generic/logg.cpp:622
 msgid "Status: "
@@ -3734,11 +3693,11 @@
 
 #: ../src/common/paper.cpp:157
 msgid "SuperA/SuperA/A4 227 x 356 mm"
-msgstr ""
+msgstr "SuperA/SuperA/A4, 227 x 356 mm"
 
 #: ../src/common/paper.cpp:158
 msgid "SuperB/SuperB/A3 305 x 487 mm"
-msgstr ""
+msgstr "SuperB/SuperB/A3, 305 x 487 mm"
 
 #: ../src/generic/fontdlgg.cpp:230
 msgid "Swiss"
@@ -3746,11 +3705,11 @@
 
 #: ../src/common/imagtiff.cpp:165
 msgid "TIFF library error."
-msgstr ""
+msgstr "TIFF-Bibliothek-Fehler."
 
 #: ../src/common/imagtiff.cpp:149
 msgid "TIFF library warning."
-msgstr ""
+msgstr "TIFF-Bibliothek-Warnung."
 
 #: ../src/common/imagtiff.cpp:248 ../src/common/imagtiff.cpp:259
 #: ../src/common/imagtiff.cpp:399
@@ -3774,9 +3733,8 @@
 msgstr "TIFF: Schreibfehler beim Sichern."
 
 #: ../src/common/paper.cpp:152
-#, fuzzy
 msgid "Tabloid Extra 11.69 x 18 in"
-msgstr "Tabloid, 11 x 17 Zoll"
+msgstr "Tabloid extra, 11,69 x 18 Zoll"
 
 #: ../src/common/paper.cpp:109
 msgid "Tabloid, 11 x 17 in"
@@ -3859,7 +3817,7 @@
 
 #: ../src/generic/fontdlgg.cpp:288 ../src/generic/fontdlgg.cpp:290
 msgid "The font style."
-msgstr "Die Schriftschitt."
+msgstr "Der Schriftstil."
 
 #: ../src/generic/fontdlgg.cpp:299 ../src/generic/fontdlgg.cpp:301
 msgid "The font weight."
@@ -3876,6 +3834,9 @@
 "private information,\n"
 "please uncheck them and they will be removed from the report.\n"
 msgstr ""
+"Der Fehlerbericht enthält die unten angegebenen Dateien. Falls diese "
+"persönliche Informationen enthält,\n"
+"wählen Sie sie ab und sie werden aus dem Fehlerbericht gelöscht.\n"
 
 #: ../src/common/cmdline.cpp:883
 #, c-format
@@ -3933,7 +3894,7 @@
 "local storage"
 msgstr ""
 "Thread-Modul-Initialisierung gescheitert: Index konnte nicht im lokalen "
-"Speicherbereich des Thread allokiert werden"
+"Speicherbereich des Threads zugewiesen werden"
 
 #: ../src/unix/threadpsx.cpp:1108
 msgid "Thread priority setting is ignored."
@@ -4031,9 +3992,8 @@
 #: ../contrib/src/deprecated/resource.cpp:3084
 #: ../contrib/src/deprecated/resource.cpp:3101
 #: ../contrib/src/deprecated/resource.cpp:3115
-#, fuzzy
 msgid "Unexpected end of file while parsing resource."
-msgstr "Erwarte '=' während der Suche in einer Ressource."
+msgstr "Unerwartetes Dateiende beim Einlesen der Ressource."
 
 #: ../src/common/cmdline.cpp:826
 #, c-format
@@ -4083,7 +4043,7 @@
 
 #: ../src/unix/dlunix.cpp:275
 msgid "Unknown dynamic library error"
-msgstr ""
+msgstr "Unbekannter Fehler mit dynamischer Bibliothek"
 
 #: ../src/common/fmapbase.cpp:695
 #, c-format
@@ -4112,7 +4072,7 @@
 #: ../src/common/xtixml.cpp:324
 #, c-format
 msgid "Unkown Property %s"
-msgstr "Unbekannte Eigenschaften %s"
+msgstr "Unbekannte Eigenschaft %s"
 
 #: ../src/common/mimecmn.cpp:163
 #, c-format
@@ -4125,9 +4085,9 @@
 msgstr "Ungenanntes Kommando"
 
 #: ../contrib/src/deprecated/resource.cpp:2367
-#, fuzzy, c-format
+#, c-format
 msgid "Unrecognized style %s while parsing resource."
-msgstr "Erwarte '*' während der Suche in einer Ressource."
+msgstr "Unerwarter Stil beim Einlesen der Ressource."
 
 #: ../src/mac/carbon/clipbrd.cpp:68 ../src/mac/classic/clipbrd.cpp:64
 #: ../src/msw/clipbrd.cpp:273 ../src/msw/clipbrd.cpp:445
@@ -4217,32 +4177,28 @@
 #: ../src/msw/utils.cpp:1112
 #, c-format
 msgid "Windows 2000 (build %lu"
-msgstr ""
+msgstr "Windows 2000 (Build %lu)"
 
 #: ../src/msw/utils.cpp:1077
-#, fuzzy
 msgid "Windows 95"
-msgstr "Windows 9%c"
+msgstr "Windows 95"
 
 #: ../src/msw/utils.cpp:1073
-#, fuzzy
 msgid "Windows 95 OSR2"
-msgstr "Windows 9%c"
+msgstr "Windows 95 ORS2"
 
 #: ../src/msw/utils.cpp:1088
-#, fuzzy
 msgid "Windows 98"
-msgstr "Windows 9%c"
+msgstr "Windows 98"
 
 #: ../src/msw/utils.cpp:1084
-#, fuzzy
 msgid "Windows 98 SE"
-msgstr "Windows 9%c"
+msgstr "Windows 98 SE"
 
 #: ../src/msw/utils.cpp:1095
-#, fuzzy, c-format
+#, c-format
 msgid "Windows 9x (%d.%d)"
-msgstr "Windows 9%c"
+msgstr "Windows 9x (%d.%d)"
 
 #: ../src/common/fmapbase.cpp:132
 msgid "Windows Arabic (CP 1256)"
@@ -4285,24 +4241,22 @@
 msgstr "Windows Koreanisch (CP 949)"
 
 #: ../src/msw/utils.cpp:1092
-#, fuzzy
 msgid "Windows ME"
-msgstr "Windows 9%c"
+msgstr "Windows ME"
 
 #: ../src/msw/utils.cpp:1127
 #, c-format
 msgid "Windows NT %lu.%lu (build %lu"
-msgstr ""
+msgstr "Windows NT %lu.%lu (Build %lu)"
 
 #: ../src/msw/utils.cpp:1120
 #, c-format
 msgid "Windows Server 2003 (build %lu"
-msgstr ""
+msgstr "Windows Server 2003 (Build %lu)"
 
 #: ../src/common/fmapbase.cpp:121
-#, fuzzy
 msgid "Windows Thai (CP 874)"
-msgstr "Windows Baltisch (CP 1257)"
+msgstr "Windows Thai (CP 874)"
 
 #: ../src/common/fmapbase.cpp:130
 msgid "Windows Turkish (CP 1254)"
@@ -4315,7 +4269,7 @@
 #: ../src/msw/utils.cpp:1116
 #, c-format
 msgid "Windows XP (build %lu"
-msgstr ""
+msgstr "Windows XP (Build %lu)"
 
 #: ../src/common/fmapbase.cpp:134
 msgid "Windows/DOS OEM (CP 437)"
@@ -4392,8 +4346,8 @@
 "or an invalid instance identifier\n"
 "was passed to a DDEML function."
 msgstr ""
-"Eine DDEML-Funktion wurde aufgerufen, ohne vorher die Deinitialisierungs- "
-"Funktion aufzurufen,\n"
+"Eine DDEML-Funktion wurde aufgerufen, ohne vorher die Funktion "
+"'DdeInitialize' aufzurufen,\n"
 "oder ein ungültiger 'instance identifier'\n"
 "wurde an eine DDEML-Funktion übergeben."
 
@@ -4476,7 +4430,7 @@
 
 #: ../src/msw/dde.cpp:1084
 msgid "an internal error has occurred in the DDEML."
-msgstr "Ein interne Fehler ist im DDMEL aufgetreten."
+msgstr "Ein interner Fehler ist im DDEML aufgetreten."
 
 #: ../src/msw/dde.cpp:1090
 msgid ""
@@ -4616,14 +4570,12 @@
 "werden"
 
 #: ../src/common/zipstrm.cpp:436
-#, fuzzy
 msgid "can't re-initialize zlib deflate stream"
-msgstr "Kann das Entkomprimieren der zlib-Daten nicht initialisieren"
+msgstr "zlib-deflate-Stream kann nicht reinitialisiert werden"
 
 #: ../src/common/zipstrm.cpp:461
-#, fuzzy
 msgid "can't re-initialize zlib inflate stream"
-msgstr "Kann das komprimieren der zlib-Daten nicht initialisieren"
+msgstr "zlib-inflate-Stream kann nicht reinitialisiert werden"
 
 #: ../src/common/file.cpp:310
 #, c-format
@@ -4698,7 +4650,7 @@
 
 #: ../src/common/debugrpt.cpp:524
 msgid "dump of the process state (binary)"
-msgstr ""
+msgstr "Abfrage von Prozess-Status (binär)"
 
 #: ../src/common/datetime.cpp:3882
 msgid "eighteenth"
@@ -4727,27 +4679,26 @@
 msgstr "Fehler im Datenformat"
 
 #: ../src/msdos/utilsdos.cpp:407
-#, fuzzy, c-format
+#, c-format
 msgid "error opening '%s'"
-msgstr "Fehler beim Öffnen der Datei"
+msgstr "Fehler beim Öffnen der Datei '%s'"
 
 #: ../src/html/chm.cpp:332
 msgid "error opening file"
 msgstr "Fehler beim Öffnen der Datei"
 
 #: ../src/common/zipstrm.cpp:1442
-#, fuzzy
 msgid "error reading zip central directory"
-msgstr "Fehler beim Anlegen des Verzeichnisses"
+msgstr "Fehler beim Lesen des 'zip-central'-Verzeichnisses"
 
 #: ../src/common/zipstrm.cpp:1520
 msgid "error reading zip local header"
-msgstr ""
+msgstr "Fehler beim Lesen des 'zip-local'-Headers"
 
 #: ../src/common/zipstrm.cpp:2236
 #, c-format
 msgid "error writing zip entry '%s': bad crc or length"
-msgstr ""
+msgstr "Fehler beim Schreiben des zip-Eintrags '%s': crc oder Länge falsch"
 
 #: ../src/msw/dialup.cpp:881
 msgid "establish"
@@ -4829,9 +4780,8 @@
 msgstr "ungültiger 'message box'-Rückgabewert."
 
 #: ../src/common/zipstrm.cpp:1306
-#, fuzzy
 msgid "invalid zip file"
-msgstr "Ungültige Sperr-Datei '%s'."
+msgstr "Ungültige zip-Datei"
 
 #: ../src/common/fontcmn.cpp:586 ../src/common/fontcmn.cpp:650
 msgid "italic"
@@ -4897,7 +4847,7 @@
 
 #: ../src/common/debugrpt.cpp:500
 msgid "process context description"
-msgstr ""
+msgstr "Prozess-Kontext Beschreibung"
 
 #: ../src/html/chm.cpp:334
 msgid "read error"
@@ -4910,12 +4860,12 @@
 #: ../src/common/zipstrm.cpp:1743
 #, c-format
 msgid "reading zip stream (entry %s): bad crc"
-msgstr ""
+msgstr "Lese zip-Stream (Eintrag %s): crc falsch"
 
 #: ../src/common/zipstrm.cpp:1740
 #, c-format
 msgid "reading zip stream (entry %s): bad length"
-msgstr ""
+msgstr "Lese zip-Stream (Eintrag %s): Länge falsch"
 
 #: ../src/msw/dde.cpp:1078
 msgid "reentrancy problem."
@@ -4963,7 +4913,7 @@
 
 #: ../src/common/zipstrm.cpp:1646
 msgid "stored file length not in Zip header"
-msgstr ""
+msgstr "gespeicherte Dateilänge nicht im zip-Header"
 
 #: ../src/common/cmdline.cpp:1086
 msgid "str"
@@ -5061,11 +5011,11 @@
 
 #: ../src/common/zipstrm.cpp:1660 ../src/common/zipstrm.cpp:2030
 msgid "unsupported Zip compression method"
-msgstr ""
+msgstr "Nicht unterstütze zip-Kompressionsmethode"
 
 #: ../src/common/zipstrm.cpp:1142
 msgid "unsupported zip archive"
-msgstr ""
+msgstr "Nicht unterstütztes zip-Archiv"
 
 #: ../src/common/intl.cpp:1115
 #, c-format
diff -ur wxWidgets-2.6.3/Makefile.in wxWidgets-2.6.3.3/Makefile.in
--- wxWidgets-2.6.3/Makefile.in	2006-03-16 09:45:29.000000000 -0500
+++ wxWidgets-2.6.3.3/Makefile.in	2006-05-23 14:13:44.000000000 -0400
@@ -1496,6 +1496,14 @@
 @COND_TOOLKIT_X11@BASE_MACOSX_HDR = $(COND_TOOLKIT_X11_BASE_MACOSX_HDR)
 @COND_PLATFORM_MACOSX_1@BASE_PLATFORM_HDR = $(BASE_MACOSX_HDR)
 @COND_PLATFORM_MSDOS_1@BASE_PLATFORM_HDR = wx/msdos/mimetype.h
+COND_PLATFORM_OS2_1_BASE_PLATFORM_HDR =  \
+	wx/os2/apptbase.h \
+	wx/os2/apptrait.h \
+	wx/os2/mimetype.h \
+	wx/os2/private.h \
+	wx/os2/stdpaths.h \
+	wx/os2/wxrsc.h
+@COND_PLATFORM_OS2_1@BASE_PLATFORM_HDR = $(COND_PLATFORM_OS2_1_BASE_PLATFORM_HDR)
 COND_PLATFORM_UNIX_1_BASE_PLATFORM_HDR =  \
 	wx/unix/apptbase.h \
 	wx/unix/apptrait.h \
@@ -3139,6 +3147,7 @@
 	monodll_stattext.o \
 	monodll_statusbr.o \
 	monodll_textctrl.o \
+	monodll_tglbtn.o \
 	monodll_theme.o \
 	monodll_toolbar.o \
 	monodll_topluniv.o \
@@ -4609,6 +4618,7 @@
 	monolib_stattext.o \
 	monolib_statusbr.o \
 	monolib_textctrl.o \
+	monolib_tglbtn.o \
 	monolib_theme.o \
 	monolib_toolbar.o \
 	monolib_topluniv.o \
@@ -6317,6 +6327,7 @@
 	coredll_stattext.o \
 	coredll_statusbr.o \
 	coredll_textctrl.o \
+	coredll_tglbtn.o \
 	coredll_theme.o \
 	coredll_toolbar.o \
 	coredll_topluniv.o \
@@ -7515,6 +7526,7 @@
 	corelib_stattext.o \
 	corelib_statusbr.o \
 	corelib_textctrl.o \
+	corelib_tglbtn.o \
 	corelib_theme.o \
 	corelib_toolbar.o \
 	corelib_topluniv.o \
@@ -13245,6 +13257,9 @@
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@monodll_tglbtn.o: $(srcdir)/src/os2/tglbtn.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/os2/tglbtn.cpp
 
+@COND_USE_GUI_1_WXUNIV_1@monodll_tglbtn.o: $(srcdir)/src/univ/tglbtn.cpp $(MONODLL_ODEP)
+@COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/univ/tglbtn.cpp
+
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@monodll_menuitem.o: $(srcdir)/src/motif/menuitem.cpp $(MONODLL_ODEP)
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/motif/menuitem.cpp
 
@@ -16716,6 +16731,9 @@
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@monolib_tglbtn.o: $(srcdir)/src/os2/tglbtn.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/os2/tglbtn.cpp
 
+@COND_USE_GUI_1_WXUNIV_1@monolib_tglbtn.o: $(srcdir)/src/univ/tglbtn.cpp $(MONOLIB_ODEP)
+@COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/univ/tglbtn.cpp
+
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@monolib_menuitem.o: $(srcdir)/src/motif/menuitem.cpp $(MONOLIB_ODEP)
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/motif/menuitem.cpp
 
@@ -20616,6 +20634,9 @@
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@coredll_tglbtn.o: $(srcdir)/src/os2/tglbtn.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/os2/tglbtn.cpp
 
+@COND_USE_GUI_1_WXUNIV_1@coredll_tglbtn.o: $(srcdir)/src/univ/tglbtn.cpp $(COREDLL_ODEP)
+@COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/univ/tglbtn.cpp
+
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@coredll_menuitem.o: $(srcdir)/src/motif/menuitem.cpp $(COREDLL_ODEP)
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/motif/menuitem.cpp
 
@@ -23127,6 +23148,9 @@
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@corelib_tglbtn.o: $(srcdir)/src/os2/tglbtn.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_PM_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/os2/tglbtn.cpp
 
+@COND_USE_GUI_1_WXUNIV_1@corelib_tglbtn.o: $(srcdir)/src/univ/tglbtn.cpp $(CORELIB_ODEP)
+@COND_USE_GUI_1_WXUNIV_1@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/univ/tglbtn.cpp
+
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@corelib_menuitem.o: $(srcdir)/src/motif/menuitem.cpp $(CORELIB_ODEP)
 @COND_TOOLKIT_MOTIF_USE_GUI_1_WXUNIV_0@	$(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/motif/menuitem.cpp
 
@@ -25612,6 +25636,11 @@
 	rm -rf $(DISTDIR)/wxPython/contrib/iewin
 	find $(DISTDIR)/wxPython \( -name "mac" -o -name "msw" \) -print0 | xargs -0 rm -rf
 
+	@# copy the bakefiles goop that make install doesn't handle robustly
+	mkdir -p $(DISTDIR)/build/bakefiles/wxpresets/presets
+	cp $(WXDIR)/build/bakefiles/wxpresets/presets/*.bkl	\
+	   $(DISTDIR)/build/bakefiles/wxpresets/presets
+
 	rm -rf $(DEBIAN_SOURCE_DIR)
 	mv $(DISTDIR) $(DEBIAN_SOURCE_DIR)
 
diff -ur wxWidgets-2.6.3/samples/controls/controls.cpp wxWidgets-2.6.3.3/samples/controls/controls.cpp
--- wxWidgets-2.6.3/samples/controls/controls.cpp	2005-08-17 09:13:42.000000000 -0400
+++ wxWidgets-2.6.3.3/samples/controls/controls.cpp	2006-06-18 07:52:25.000000000 -0400
@@ -3,7 +3,7 @@
 // Purpose:     Controls wxWidgets sample
 // Author:      Robert Roebling
 // Modified by:
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Robert Roebling, Julian Smart
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -1370,15 +1370,17 @@
 
 void MyPanel::OnComboTextChanged(wxCommandEvent& event)
 {
-    wxLogMessage(wxT("EVT_TEXT for the combobox: \"%s\" (event) or \"%s\" (control)."),
-                 event.GetString().c_str(),
-                 m_combo->GetValue().c_str());
+    if (m_combo)
+        wxLogMessage(wxT("EVT_TEXT for the combobox: \"%s\" (event) or \"%s\" (control)."),
+                     event.GetString().c_str(),
+                     m_combo->GetValue().c_str());
 }
 
 void MyPanel::OnComboTextEnter(wxCommandEvent& WXUNUSED(event))
 {
-    wxLogMessage(_T("Enter pressed in the combobox: value is '%s'."),
-                 m_combo->GetValue().c_str());
+    if (m_combo)
+        wxLogMessage(_T("Enter pressed in the combobox: value is '%s'."),
+                     m_combo->GetValue().c_str());
 }
 
 void MyPanel::OnComboButtons( wxCommandEvent &event )
diff -ur wxWidgets-2.6.3/samples/listctrl/listtest.cpp wxWidgets-2.6.3.3/samples/listctrl/listtest.cpp
--- wxWidgets-2.6.3/samples/listctrl/listtest.cpp	2006-03-18 11:57:18.000000000 -0500
+++ wxWidgets-2.6.3.3/samples/listctrl/listtest.cpp	2006-04-02 11:51:15.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -1053,10 +1053,10 @@
     SetItemData(tmp, i);
 
     buf.Printf(_T("Col 1, item %d"), i);
-    SetItem(i, 1, buf);
+    SetItem(tmp, 1, buf);
 
     buf.Printf(_T("Item %d in column 2"), i);
-    SetItem(i, 2, buf);
+    SetItem(tmp, 2, buf);
 }
 
 #if USE_CONTEXT_MENU
diff -ur wxWidgets-2.6.3/setup.h.in wxWidgets-2.6.3.3/setup.h.in
--- wxWidgets-2.6.3/setup.h.in	2006-01-18 05:24:54.000000000 -0500
+++ wxWidgets-2.6.3.3/setup.h.in	2006-04-19 10:36:46.000000000 -0400
@@ -156,6 +156,8 @@
 
 #define WXWIN_COMPATIBILITY_2_4 0
 
+#define WX_USE_RESERVED_VIRTUALS 0
+
 #define wxDIALOG_UNIT_COMPATIBILITY   0
 
 
diff -ur wxWidgets-2.6.3/src/common/dobjcmn.cpp wxWidgets-2.6.3.3/src/common/dobjcmn.cpp
--- wxWidgets-2.6.3/src/common/dobjcmn.cpp	2006-03-24 18:51:30.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/dobjcmn.cpp	2006-03-30 04:52:54.000000000 -0500
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin, Robert Roebling
 // Modified by:
 // Created:     19.10.99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets Team
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -253,11 +253,15 @@
 
 bool wxTextDataObject::GetDataHere(const wxDataFormat& format, void *buf) const
 {
+    if ( !buf )
+        return false;
+        
     wxCharBuffer buffer = GetConv(format).cWX2MB( GetText().c_str() );
     if ( !buffer )
         return false;
 
-    strcpy( (char*) buf, buffer );
+    memcpy( (char*) buf, buffer, GetDataSize(format) );
+    // strcpy( (char*) buf, buffer );
 
     return true;
 }
diff -ur wxWidgets-2.6.3/src/common/event.cpp wxWidgets-2.6.3.3/src/common/event.cpp
--- wxWidgets-2.6.3/src/common/event.cpp	2005-06-29 20:52:05.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/event.cpp	2006-05-29 13:34:47.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -1154,7 +1154,7 @@
 
         wxENTER_CRIT_SECT( Lock() );
 
-        if ( !--n )
+        if ( --n == 0 )
             break;
     }
 
diff -ur wxWidgets-2.6.3/src/common/filefn.cpp wxWidgets-2.6.3.3/src/common/filefn.cpp
--- wxWidgets-2.6.3/src/common/filefn.cpp	2006-02-27 10:16:37.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/filefn.cpp	2006-06-15 17:42:21.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -304,16 +304,19 @@
 
     return (ret != (DWORD)-1) && !(ret & FILE_ATTRIBUTE_DIRECTORY);
 #else // !__WIN32__
+    #ifndef S_ISREG
+        #define S_ISREG(mode) ((mode) & S_IFREG)
+    #endif
     wxStructStat st;
 #ifndef wxNEED_WX_UNISTD_H
-    return (wxStat( filename.fn_str() , &st) == 0 && (st.st_mode & S_IFREG))
+    return (wxStat( filename.fn_str() , &st) == 0 && S_ISREG(st.st_mode))
 #ifdef __OS2__
       || (errno == EACCES) // if access is denied something with that name
                             // exists and is opened in exclusive mode.
 #endif
       ;
 #else
-    return wxStat( filename , &st) == 0 && (st.st_mode & S_IFREG);
+    return wxStat( filename , &st) == 0 && S_ISREG(st.st_mode);
 #endif
 #endif // __WIN32__/!__WIN32__
 }
diff -ur wxWidgets-2.6.3/src/common/gifdecod.cpp wxWidgets-2.6.3.3/src/common/gifdecod.cpp
--- wxWidgets-2.6.3/src/common/gifdecod.cpp	2006-01-23 02:18:36.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/gifdecod.cpp	2006-04-01 20:21:53.000000000 -0500
@@ -3,7 +3,7 @@
 // Purpose:     wxGIFDecoder, GIF reader for wxImage and wxAnimation
 // Author:      Guillermo Rodriguez Garcia <guille@iies.es>
 // Version:     3.04
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Guillermo Rodriguez Garcia
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -474,6 +474,25 @@
         /* make new entry in alphabet (only if NOT just cleared) */
         if (lastcode != -1)
         {
+            // Normally, after the alphabet is full and can't grow any
+            // further (ab_free == 4096), encoder should (must?) emit CLEAR
+            // to reset it. This checks whether we really got it, otherwise
+            // the GIF is damaged.
+            if (ab_free > ab_max)
+            {
+                delete[] ab_prefix;
+                delete[] ab_tail;
+                delete[] stack;
+                return wxGIF_INVFORMAT;
+            }
+
+            // This assert seems unnecessary since the condition above
+            // eliminates the only case in which it went false. But I really
+            // don't like being forced to ask "Who in .text could have
+            // written there?!" And I wouldn't have been forced to ask if
+            // this line had already been here.
+            wxASSERT(ab_free < allocSize);
+
             ab_prefix[ab_free] = lastcode;
             ab_tail[ab_free]   = code;
             ab_free++;
diff -ur wxWidgets-2.6.3/src/common/imagjpeg.cpp wxWidgets-2.6.3.3/src/common/imagjpeg.cpp
--- wxWidgets-2.6.3/src/common/imagjpeg.cpp	2005-03-04 14:23:28.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/imagjpeg.cpp	2006-04-01 20:27:36.000000000 -0500
@@ -2,7 +2,7 @@
 // Name:        imagjpeg.cpp
 // Purpose:     wxImage JPEG handler
 // Author:      Vaclav Slavik
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vaclav Slavik
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -167,12 +167,22 @@
 
   /* Always display the message. */
   /* We could postpone this until after returning, if we chose. */
-  if (cinfo->err->output_message) (*cinfo->err->output_message) (cinfo);
+  (*cinfo->err->output_message) (cinfo);
 
   /* Return control to the setjmp point */
   longjmp(myerr->setjmp_buffer, 1);
 }
 
+/*
+ * This will replace the standard output_message method when the user
+ * wants us to be silent (verbose==false). We must have such method instead of
+ * simply using NULL for cinfo->err->output_message because it's called
+ * unconditionally from within libjpeg when there's "garbage input".
+ */
+CPP_METHODDEF(void) wx_ignore_message (j_common_ptr WXUNUSED(cinfo))
+{
+}
+
 void wx_jpeg_io_src( j_decompress_ptr cinfo, wxInputStream& infile )
 {
     wx_src_ptr src;
@@ -214,7 +224,8 @@
     cinfo.err = jpeg_std_error( &jerr.pub );
     jerr.pub.error_exit = wx_error_exit;
 
-    if (!verbose) cinfo.err->output_message=NULL;
+    if (!verbose)
+        cinfo.err->output_message = wx_ignore_message;
 
     /* Establish the setjmp return context for wx_error_exit to use. */
     if (setjmp(jerr.setjmp_buffer)) {
@@ -327,7 +338,8 @@
     cinfo.err = jpeg_std_error(&jerr.pub);
     jerr.pub.error_exit = wx_error_exit;
 
-    if (!verbose) cinfo.err->output_message=NULL;
+    if (!verbose)
+        cinfo.err->output_message = wx_ignore_message;
 
     /* Establish the setjmp return context for wx_error_exit to use. */
     if (setjmp(jerr.setjmp_buffer))
diff -ur wxWidgets-2.6.3/src/common/imagtiff.cpp wxWidgets-2.6.3.3/src/common/imagtiff.cpp
--- wxWidgets-2.6.3/src/common/imagtiff.cpp	2005-10-18 10:33:30.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/imagtiff.cpp	2006-06-27 17:47:27.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        imagtiff.cpp
 // Purpose:     wxImage TIFF handler
 // Author:      Robert Roebling
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -374,7 +374,7 @@
 
     int compression = image->GetOptionInt(wxIMAGE_OPTION_COMPRESSION);
     if ( !compression )
-        compression=COMPRESSION_LZW;
+        compression=COMPRESSION_NONE;
 
     TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, spp);
     TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, bpp);
diff -ur wxWidgets-2.6.3/src/common/init.cpp wxWidgets-2.6.3.3/src/common/init.cpp
--- wxWidgets-2.6.3/src/common/init.cpp	2005-06-13 08:19:20.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/init.cpp	2006-06-06 07:01:29.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     04.10.99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -37,6 +37,9 @@
 #include "wx/ptr_scpd.h"
 #include "wx/module.h"
 #include "wx/except.h"
+#if wxUSE_FONTMAP
+#include "wx/fontmap.h"
+#endif
 
 #if defined(__WXMSW__) && defined(__WXDEBUG__)
     #include "wx/msw/msvcrt.h"
@@ -448,6 +451,13 @@
 {
     ConvertArgsToUnicode(argc, argv);
 
+#if wxUSE_FONTMAP
+    // If we created a font mapper during the above call,
+    // it will only be the base class, so delete it to allow
+    // app traits to create mapper.
+    delete (wxFontMapperBase*) wxFontMapperBase::Set(NULL);
+#endif
+    
     return wxEntry(argc, gs_initData.argv);
 }
 
@@ -474,7 +484,7 @@
 {
     wxCRIT_SECT_LOCKER(lockInit, gs_initData.csInit);
 
-    if ( !--gs_initData.nInitCount )
+    if ( --gs_initData.nInitCount == 0 )
     {
         wxEntryCleanup();
     }
diff -ur wxWidgets-2.6.3/src/common/mimecmn.cpp wxWidgets-2.6.3.3/src/common/mimecmn.cpp
--- wxWidgets-2.6.3/src/common/mimecmn.cpp	2005-07-21 12:19:40.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/mimecmn.cpp	2006-06-19 03:16:37.000000000 -0400
@@ -5,7 +5,7 @@
 // Modified by:
 //  Chris Elliott (biol75@york.ac.uk) 5 Dec 00: write support for Win32
 // Created:     23.09.98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Licence:     wxWindows licence (part of wxExtra library)
 /////////////////////////////////////////////////////////////////////////////
@@ -494,6 +494,8 @@
 
 bool wxMimeTypesManager::Unassociate(wxFileType *ft)
 {
+    EnsureImpl();
+
 #if defined(__UNIX__) && !defined(__CYGWIN__) && !defined(__WINE__)
     return m_impl->Unassociate(ft);
 #else
diff -ur wxWidgets-2.6.3/src/common/object.cpp wxWidgets-2.6.3.3/src/common/object.cpp
--- wxWidgets-2.6.3/src/common/object.cpp	2005-09-17 16:58:55.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/object.cpp	2006-05-29 13:34:48.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by: Ron Lee
 // Created:     04/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Julian Smart
 //              (c) 2001 Ron Lee <ron@debian.org>
 // Licence:     wxWindows licence
@@ -323,7 +323,7 @@
     {
         wxASSERT_MSG( m_refData->m_count > 0, _T("invalid ref data count") );
 
-        if ( !--m_refData->m_count )
+        if ( --m_refData->m_count == 0 )
             delete m_refData;
         m_refData = NULL;
     }
diff -ur wxWidgets-2.6.3/src/common/prntbase.cpp wxWidgets-2.6.3.3/src/common/prntbase.cpp
--- wxWidgets-2.6.3/src/common/prntbase.cpp	2005-07-28 18:20:03.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/prntbase.cpp	2006-06-28 08:56:05.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -1483,6 +1483,11 @@
     m_pimpl->SetZoom( percent );
 }
 
+int wxPrintPreview::GetZoom() const
+{
+    return m_pimpl->GetZoom();
+}
+
 wxPrintDialogData& wxPrintPreview::GetPrintDialogData()
 {
     return m_pimpl->GetPrintDialogData();
diff -ur wxWidgets-2.6.3/src/common/socket.cpp wxWidgets-2.6.3.3/src/common/socket.cpp
--- wxWidgets-2.6.3/src/common/socket.cpp	2006-02-16 03:53:35.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/socket.cpp	2006-05-29 13:34:48.000000000 -0400
@@ -5,7 +5,7 @@
 // Created:    April 1997
 // Copyright:  (C) 1999-1997, Guilhem Lavaux
 //             (C) 2000-1999, Guillermo Rodriguez Garcia
-// RCS_ID:     $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS_ID:     $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // License:    see wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
@@ -163,7 +163,7 @@
 {
     // we should be initialized
     wxASSERT_MSG( m_countInit, _T("extra call to Shutdown()") );
-    if ( !--m_countInit )
+    if ( --m_countInit == 0 )
     {
         GSocket_Cleanup();
     }
@@ -331,11 +331,9 @@
 
   // Return now in one of the following cases:
   // - the socket is invalid,
-  // - we got all the data,
-  // - we got *some* data and we are not using wxSOCKET_WAITALL.
+  // - we got all the data
   if ( !m_socket ||
-       !nbytes ||
-       ((total != 0) && !(m_flags & wxSOCKET_WAITALL)) )
+       !nbytes )
     return total;
 
   // Possible combinations (they are checked in this order)
@@ -698,7 +696,7 @@
   else
     timeout = m_timeout * 1000;
 
-  bool has_event_loop = wxTheApp ? (wxTheApp->GetTraits() ? true : false) : false;
+  bool has_event_loop = wxTheApp->GetTraits() ? (wxTheApp->GetTraits()->GetSocketGUIFunctionsTable() ? true : false) : false;
 
   // Wait in an active polling loop.
   //
diff -ur wxWidgets-2.6.3/src/common/strconv.cpp wxWidgets-2.6.3.3/src/common/strconv.cpp
--- wxWidgets-2.6.3/src/common/strconv.cpp	2006-01-18 11:32:46.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/strconv.cpp	2006-04-21 22:14:00.000000000 -0400
@@ -5,7 +5,7 @@
 //              Ryan Norton, Fredrik Roubert (UTF7)
 // Modified by:
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1999 Ove Kaaven, Robert Roebling, Vaclav Slavik
 //              (c) 2000-2003 Vadim Zeitlin
 //              (c) 2004 Ryan Norton, Fredrik Roubert
@@ -1637,14 +1637,27 @@
         // wouldn't work if reading an incomplete MB char didn't result in an
         // error
         //
-        // note however that using MB_ERR_INVALID_CHARS with CP_UTF7 results in
-        // an error (tested under Windows Server 2003) and apparently it is
-        // done on purpose, i.e. the function accepts any input in this case
-        // and although I'd prefer to return error on ill-formed output, our
-        // own wxMBConvUTF7 doesn't detect errors (e.g. lone "+" which is
-        // explicitly ill-formed according to RFC 2152) neither so we don't
-        // even have any fallback here...
-        int flags = m_CodePage == CP_UTF7 ? 0 : MB_ERR_INVALID_CHARS;
+        // Moreover, MB_ERR_INVALID_CHARS is only supported on Win 2K SP4 or
+        // Win XP or newer and it is not supported for UTF-[78] so we always
+        // use our own conversions in this case. See
+        //     http://blogs.msdn.com/michkap/archive/2005/04/19/409566.aspx
+        //     http://msdn.microsoft.com/library/en-us/intl/unicode_17si.asp
+        if ( m_CodePage == CP_UTF8 )
+        {
+            return wxConvUTF8.MB2WC(buf, psz, n);
+        }
+
+        if ( m_CodePage == CP_UTF7 )
+        {
+            return wxConvUTF7.MB2WC(buf, psz, n);
+        }
+
+        int flags = 0;
+        if ( (m_CodePage < 50000 && m_CodePage != CP_SYMBOL) &&
+                IsAtLeastWin2kSP4() )
+        {
+            flags = MB_ERR_INVALID_CHARS;
+        }
 
         const size_t len = ::MultiByteToWideChar
                              (
@@ -1656,10 +1669,41 @@
                                 buf ? n : 0     // size of output buffer
                              );
 
+        if ( !len )
+        {
+            // function totally failed
+            return (size_t)-1;
+        }
+
+        // if we were really converting and didn't use MB_ERR_INVALID_CHARS,
+        // check if we succeeded, by doing a double trip:
+        if ( !flags && buf )
+        {
+            const size_t mbLen = strlen(psz);
+            wxCharBuffer mbBuf(mbLen);
+            if ( ::WideCharToMultiByte
+                   (
+                      m_CodePage,
+                      0,
+                      buf,
+                      -1,
+                      mbBuf.data(),
+                      mbLen + 1,        // size in bytes, not length
+                      NULL,
+                      NULL
+                   ) == 0 ||
+                  strcmp(mbBuf, psz) != 0 )
+            {
+                // we didn't obtain the same thing we started from, hence
+                // the conversion was lossy and we consider that it failed
+                return (size_t)-1;
+            }
+        }
+
         // note that it returns count of written chars for buf != NULL and size
         // of the needed buffer for buf == NULL so in either case the length of
         // the string (which never includes the terminating NUL) is one less
-        return len ? len - 1 : (size_t)-1;
+        return len - 1;
     }
 
     size_t WC2MB(char *buf, const wchar_t *pwz, size_t n) const
@@ -1774,6 +1818,33 @@
         return s_isWin98Or2k == 1;
     }
 
+    static bool IsAtLeastWin2kSP4()
+    {
+#ifdef __WXWINCE__
+        return false;
+#else
+        static int s_isAtLeastWin2kSP4 = -1;
+
+        if ( s_isAtLeastWin2kSP4 == -1 )
+        {
+            OSVERSIONINFOEX ver;
+
+            memset(&ver, 0, sizeof(ver));
+            ver.dwOSVersionInfoSize = sizeof(ver);
+            GetVersionEx((OSVERSIONINFO*)&ver);
+
+            s_isAtLeastWin2kSP4 =
+              ((ver.dwMajorVersion > 5) || // Vista+
+               (ver.dwMajorVersion == 5 && ver.dwMinorVersion > 0) || // XP/2003
+               (ver.dwMajorVersion == 5 && ver.dwMinorVersion == 0 &&
+               ver.wServicePackMajor >= 4)) // 2000 SP4+
+              ? 1 : 0;
+        }
+
+        return s_isAtLeastWin2kSP4 == 1;
+#endif
+    }
+
     long m_CodePage;
 };
 
diff -ur wxWidgets-2.6.3/src/common/string.cpp wxWidgets-2.6.3.3/src/common/string.cpp
--- wxWidgets-2.6.3/src/common/string.cpp	2005-11-30 08:30:08.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/string.cpp	2006-07-06 06:30:37.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin, Ryan Norton
 // Modified by:
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 //              (c) 2004 Ryan Norton <wxprojects@comcast.net>
 // Licence:     wxWindows licence
@@ -1642,38 +1642,37 @@
 // trims spaces (in the sense of isspace) from left or right side
 wxString& wxString::Trim(bool bFromRight)
 {
-  // first check if we're going to modify the string at all
-  if ( !empty() &&
-       (
-        (bFromRight && wxSafeIsspace(GetChar(Len() - 1))) ||
-        (!bFromRight && wxSafeIsspace(GetChar(0u)))
+    // first check if we're going to modify the string at all
+    if ( !empty() &&
+         (
+          (bFromRight && wxSafeIsspace(GetChar(length() - 1))) ||
+          (!bFromRight && wxSafeIsspace(GetChar(0u)))
+         )
        )
-     )
-  {
-    if ( bFromRight )
-    {
-      // find last non-space character
-      iterator psz = begin() + length() - 1;
-      while ( wxSafeIsspace(*psz) && (psz >= begin()) )
-        psz--;
-
-      // truncate at trailing space start
-      *++psz = wxT('\0');
-      erase(psz, end());
-    }
-    else
     {
-      // find first non-space character
-      iterator psz = begin();
-      while ( wxSafeIsspace(*psz) )
-        psz++;
+        if ( bFromRight )
+        {
+            // find last non-space character
+            reverse_iterator psz = rbegin();
+            while ( (psz != rend()) && wxSafeIsspace(*psz) )
+                psz++;
 
-      // fix up data and length
-      erase(begin(), psz);
+            // truncate at trailing space start
+            erase(psz.base(), end());
+        }
+        else
+        {
+            // find first non-space character
+            iterator psz = begin();
+            while ( (psz != end()) && wxSafeIsspace(*psz) )
+                psz++;
+
+            // fix up data and length
+            erase(begin(), psz);
+        }
     }
-  }
 
-  return *this;
+    return *this;
 }
 
 // adds nCount characters chPad to the string from either side
diff -ur wxWidgets-2.6.3/src/common/url.cpp wxWidgets-2.6.3.3/src/common/url.cpp
--- wxWidgets-2.6.3/src/common/url.cpp	2005-07-28 17:52:50.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/url.cpp	2006-06-11 14:52:42.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Guilhem Lavaux
 // Modified by:
 // Created:     20/07/1997
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1997, 1998 Guilhem Lavaux
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -185,7 +185,9 @@
 #if wxUSE_PROTOCOL_HTTP
     if (!m_useProxy)
 #endif // wxUSE_PROTOCOL_HTTP
-        delete m_protocol;
+        if (m_protocol)
+            // Need to safely delete the socket (pending events)
+            m_protocol->Destroy();
 }
 
 wxURL::~wxURL()
diff -ur wxWidgets-2.6.3/src/common/utilscmn.cpp wxWidgets-2.6.3.3/src/common/utilscmn.cpp
--- wxWidgets-2.6.3/src/common/utilscmn.cpp	2005-10-06 09:29:33.000000000 -0400
+++ wxWidgets-2.6.3.3/src/common/utilscmn.cpp	2006-06-25 20:01:03.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     29/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -93,6 +93,13 @@
 #include "wx/msw/wince/time.h"
 #endif
 
+#ifdef __WXMAC__
+#include "wx/mac/private.h"
+#ifndef __DARWIN__
+#include "InternetConfig.h"
+#endif
+#endif
+
 #if !defined(__MWERKS__) && !defined(__WXWINCE__)
     #include <sys/types.h>
     #include <sys/stat.h>
@@ -100,6 +107,8 @@
 
 #if defined(__WXMSW__)
     #include "wx/msw/private.h"
+    #include "wx/msw/registry.h"
+    #include <shellapi.h> // needed for SHELLEXECUTEINFO
 #endif
 
 #if wxUSE_BASE
@@ -531,189 +540,99 @@
 // Launch default browser
 // ----------------------------------------------------------------------------
 
-bool wxLaunchDefaultBrowser(const wxString& url)
+bool wxLaunchDefaultBrowser(const wxString& urlOrig)
 {
-    bool success = true;
-
-    wxString finalurl = url;
-
-    //if it isn't a full url, try appending http:// to it
-    if(wxURI(url).IsReference())
-        finalurl = wxString(wxT("http://")) + url;
-
-#if defined(__WXMSW__) && wxUSE_CONFIG_NATIVE
-
-    wxString command;
+    // set the scheme of url to http if it does not have one
+    wxString url(urlOrig);
+    if ( !wxURI(url).HasScheme() )
+        url.Prepend(wxT("http://"));
 
-    // ShellExecute() always opens in the same window,
-    // so do it manually for new window (from Mahogany)
-    wxRegKey key(wxRegKey::HKCR, url.BeforeFirst(':') + wxT("\\shell\\open"));
-    if ( key.Exists() )
+#if defined(__WXMSW__)
+    WinStruct<SHELLEXECUTEINFO> sei;
+    sei.lpFile = url.c_str();
+    sei.lpVerb = _T("open");
+    sei.nShow = SW_SHOWNORMAL;
+
+    ::ShellExecuteEx(&sei);
+
+    const int nResult = (int) sei.hInstApp;
+
+    // Firefox returns file not found for some reason, so make an exception
+    // for it
+    if ( nResult > 32 || nResult == SE_ERR_FNF )
     {
-        wxRegKey keyDDE(key, wxT("DDEExec"));
-        if ( keyDDE.Exists() )
-        {
-            wxRegKey keyTopic(keyDDE, wxT("topic"));
-            wxString ddeTopic = keyTopic.QueryDefaultValue();
-
-            // we only know the syntax of WWW_OpenURL DDE request
-            if ( ddeTopic == wxT("WWW_OpenURL") )
-            {
-                wxString ddeCmd = keyDDE.QueryDefaultValue();
-
-                // this is a bit naive but should work as -1 can't appear
-                // elsewhere in the DDE topic, normally
-                if ( ddeCmd.Replace(wxT("-1"), wxT("0"),
-                                    false /* only first occurence */) == 1 )
-                {
-                    // and also replace the parameters
-                    if ( ddeCmd.Replace(wxT("%1"), url, false) == 1 )
-                    {
-                        // magic incantation understood by wxMSW
-                        command << wxT("WX_DDE#")
-                                << wxRegKey(key, wxT("command")).QueryDefaultValue() << wxT('#')
-                                << wxRegKey(keyDDE, wxT("application")).QueryDefaultValue()
-                                << wxT('#') << ddeTopic << wxT('#')
-                                << ddeCmd;
-                    }
-                }
-            }
-        }
-    }
-
-    //Try wxExecute - if it doesn't work or the regkey stuff
-    //above failed, fallback to opening the file in the same
-    //browser window
-    if ( command.empty() || !wxExecute(command) )
-    {
-        int nResult; //HINSTANCE error code
-
-#if !defined(__WXWINCE__)
-        // CYGWIN and MINGW may have problems - so load ShellExecute
-        // dynamically
-        typedef HINSTANCE (WINAPI *LPShellExecute)(HWND hwnd, const wxChar* lpOperation,
-                                            const wxChar* lpFile,
-                                            const wxChar* lpParameters,
-                                            const wxChar* lpDirectory,
-                                            INT nShowCmd);
-
-        HINSTANCE hShellDll = ::LoadLibrary(wxT("shell32.dll"));
-        if(hShellDll == NULL)
-            return false;
-
-        LPShellExecute lpShellExecute =
-            (LPShellExecute) ::GetProcAddress(hShellDll,
-            wxString::Format(wxT("ShellExecute%s"),
-
-#if wxUSE_UNICODE
-            wxT("W")
-#else
-            wxT("A")
-#endif
-#ifdef __WXWINCE__
-                             )
-#else
-                             ).mb_str(wxConvLocal)
-#endif
-                             );
-        if(lpShellExecute == NULL)
-            return false;
-
-        // Windows sometimes doesn't open the browser correctly when using mime
-        // types, so do ShellExecute - i.e. start <url> (from James Carroll)
-        nResult = (int) (*lpShellExecute)(NULL, NULL, finalurl.c_str(),
-                                          NULL, wxT(""), SW_SHOWNORMAL);
-        // Unload Shell32.dll
-        ::FreeLibrary(hShellDll);
-#else
-        //Windows CE does not have normal ShellExecute - but it has
-        //ShellExecuteEx all the way back to version 1.0
-
-
-        //Set up the SHELLEXECUTEINFO structure to pass to ShellExecuteEx
-        SHELLEXECUTEINFO sei;
-        sei.cbSize = sizeof(SHELLEXECUTEINFO);
-        sei.dwHotKey = 0;
-        sei.fMask = 0;
-        sei.hIcon = NULL;
-        sei.hInstApp = NULL;
-        sei.hkeyClass = NULL;
-        // Not in WinCE
-#if 0
-        sei.hMonitor = NULL;
-#endif
-        sei.hProcess = NULL;
-        sei.hwnd = NULL;
-        sei.lpClass = NULL;
-        sei.lpDirectory = NULL;
-        sei.lpFile = finalurl.c_str();
-        sei.lpIDList = NULL;
-        sei.lpParameters = NULL;
-        sei.lpVerb = TEXT("open");
-        sei.nShow = SW_SHOWNORMAL;
-
-        //Call ShellExecuteEx
-        ShellExecuteEx(&sei);
-
-        //Get error code
-        nResult = (int) sei.hInstApp;
-#endif
-
-        // Hack for Firefox (returns file not found for some reason)
-        // from Angelo Mandato's wxHyperlinksCtrl
-        // HINSTANCE_ERROR == 32 (HINSTANCE_ERROR does not exist on Windows CE)
-        if (nResult <= 32 && nResult != SE_ERR_FNF)
-            return false;
-
 #ifdef __WXDEBUG__
         // Log something if SE_ERR_FNF happens
-        if(nResult == SE_ERR_FNF)
-            wxLogDebug(wxT("Got SE_ERR_FNF from ShellExecute - maybe FireFox"));
+        if ( nResult == SE_ERR_FNF )
+            wxLogDebug(wxT("SE_ERR_FNF from ShellExecute -- maybe FireFox?"));
+#endif // __WXDEBUG__
+        return true;
+    }
+#elif defined(__WXMAC__)
+    OSStatus err;
+    ICInstance inst;
+    SInt32 startSel;
+    SInt32 endSel;
+
+    err = ICStart(&inst, 'STKA'); // put your app creator code here
+    if (err == noErr)
+    {
+#if !TARGET_CARBON
+        err = ICFindConfigFile(inst, 0, NULL);
 #endif
+        if (err == noErr)
+        {
+            ConstStr255Param hint = 0;
+            startSel = 0;
+            endSel = url.Length();
+            err = ICLaunchURL(inst, hint, url.fn_str(), endSel, &startSel, &endSel);
+            if (err != noErr)
+                wxLogDebug(wxT("ICLaunchURL error %d"), (int) err);
+        }
+        ICStop(inst);
+        return true;
     }
-
-#elif wxUSE_MIMETYPE
-
-    // Non-windows way
-    wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension (_T("html"));
-    if (!ft)
+    else
     {
-        wxLogError(_T("No default application can open .html extension"));
+        wxLogDebug(wxT("ICStart error %d"), (int) err);
         return false;
     }
-
-    wxString mt;
-    ft->GetMimeType(&mt);
-
+#elif wxUSE_MIMETYPE
+    // Non-windows way
+    bool ok = false;
     wxString cmd;
-    bool ok = ft->GetOpenCommand (&cmd, wxFileType::MessageParameters(finalurl));
-    delete ft;
 
-    if (ok)
+    wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(_T("html"));
+    if ( ft )
     {
-        if ( !wxExecute(cmd) )
-        {
-            wxLogError(_T("Failed to launch application for wxLaunchDefaultBrowser"));
-            return false;
-        }
+        wxString mt;
+        ft->GetMimeType(&mt);
+
+        ok = ft->GetOpenCommand(&cmd, wxFileType::MessageParameters(url));
+        delete ft;
     }
-    else
+
+    if ( !ok || cmd.empty() )
     {
         // fallback to checking for the BROWSER environment variable
         cmd = wxGetenv(wxT("BROWSER"));
-        if ( cmd.empty() || !wxExecute(cmd + wxT(" ") + finalurl) )
-            return false;
+        if ( !cmd.empty() )
+            cmd << _T(' ') << url;
     }
 
+    ok = ( !cmd.empty() && wxExecute(cmd) );
+    if (ok)
+        return ok;
 
-#else // !wxUSE_MIMETYPE && !(WXMSW && wxUSE_NATIVE_CONFIG)
+    // no file type for HTML extension
+    wxLogError(_T("No default application configured for HTML files."));
 
-    success = false;
+#endif // !wxUSE_MIMETYPE && !__WXMSW__
 
-#endif
+    wxLogSysError(_T("Failed to open URL \"%s\" in default browser."),
+                  url.c_str());
 
-    //success - hopefully
-    return success;
+    return false;
 }
 
 // ----------------------------------------------------------------------------
diff -ur wxWidgets-2.6.3/src/common/wincmn.cpp wxWidgets-2.6.3.3/src/common/wincmn.cpp
--- wxWidgets-2.6.3/src/common/wincmn.cpp	2006-03-04 15:52:21.000000000 -0500
+++ wxWidgets-2.6.3.3/src/common/wincmn.cpp	2006-05-29 13:34:49.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart, Vadim Zeitlin
 // Modified by:
 // Created:     13/07/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -217,8 +217,10 @@
     // VZ: this one shouldn't exist...
     m_isBeingDeleted = false;
 
+#if WX_USE_RESERVED_VIRTUALS
     // Reserved for future use
     m_windowReserved = NULL;
+#endif
 }
 
 // common part of window creation process
@@ -1830,7 +1832,7 @@
     // If there is a sizer, use it instead of the constraints
     if ( GetSizer() )
     {
-        int w, h;
+        int w = 0, h = 0;
         GetVirtualSize(&w, &h);
         GetSizer()->SetDimension( 0, 0, w, h );
     }
diff -ur wxWidgets-2.6.3/src/generic/calctrl.cpp wxWidgets-2.6.3.3/src/generic/calctrl.cpp
--- wxWidgets-2.6.3/src/generic/calctrl.cpp	2006-01-18 05:38:54.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/calctrl.cpp	2006-06-14 07:41:42.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     29.12.99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -788,16 +788,27 @@
         wxSize sizeCombo = m_comboMonth->GetSize();
         wxSize sizeStatic = m_staticMonth->GetSize();
         wxSize sizeSpin = m_spinYear->GetSize();
-        int dy = (sizeCombo.y - sizeStatic.y) / 2;
+
+        // wxMSW sometimes reports the wrong combo height,
+        // so on this platform we'll use the spin control
+        // height instead.
+#ifdef __WXMSW__
+        int maxHeight = sizeSpin.y;
+        int requiredSpinHeight = -1;
+#else
+        int maxHeight = sizeCombo.y;
+        int requiredSpinHeight = sizeCombo.y;
+#endif
+        int dy = (maxHeight - sizeStatic.y) / 2;
         m_comboMonth->Move(x, y);
-        m_staticMonth->SetSize(x, y + dy, sizeCombo.x, sizeStatic.y);
+        m_staticMonth->SetSize(x, y + dy, sizeCombo.x, -1, sizeStatic.y);
 
         int xDiff = sizeCombo.x + HORZ_MARGIN;
 
-        m_spinYear->SetSize(x + xDiff, y, width - xDiff, sizeCombo.y);
+        m_spinYear->SetSize(x + xDiff, y, width - xDiff, requiredSpinHeight);
         m_staticYear->SetSize(x + xDiff, y + dy, width - xDiff, sizeStatic.y);
 
-        yDiff = wxMax(sizeSpin.y, sizeCombo.y) + VERT_MARGIN;
+        yDiff = wxMax(sizeSpin.y, maxHeight) + VERT_MARGIN;
     }
     else // no controls on the top
     {
diff -ur wxWidgets-2.6.3/src/generic/dirctrlg.cpp wxWidgets-2.6.3.3/src/generic/dirctrlg.cpp
--- wxWidgets-2.6.3/src/generic/dirctrlg.cpp	2006-03-05 15:50:25.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/dirctrlg.cpp	2006-06-27 03:55:15.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Harm van der Heijden, Robert Roebling, Julian Smart
 // Modified by:
 // Created:     12/12/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Harm van der Heijden, Robert Roebling and Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -121,13 +121,8 @@
         path.Printf(wxT("%c:\\"), driveBuffer[i]);
         name.Printf(wxT("%c:"), driveBuffer[i]);
 
-#if !defined(__WXWINCE__)
-        wxChar pname[52];
-        if (GetVolumeInformation( path.c_str(), pname, 52, NULL, NULL, NULL, NULL, 0 ))
-        {
-            name << _T(' ') << pname;
-        }
-#endif // __WXWINCE__
+        // Do not use GetVolumeInformation to further decorate the
+        // name, since it can cause severe delays on network drives.
 
         int imageId;
         int driveType = ::GetDriveType(path);
diff -ur wxWidgets-2.6.3/src/generic/dragimgg.cpp wxWidgets-2.6.3.3/src/generic/dragimgg.cpp
--- wxWidgets-2.6.3/src/generic/dragimgg.cpp	2006-01-21 11:46:38.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/dragimgg.cpp	2006-05-29 13:34:52.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     29/2/2000
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -128,7 +128,7 @@
 {
     wxFont font(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
 
-    long w, h;
+    long w = 0, h = 0;
     wxScreenDC dc;
     dc.SetFont(font);
     dc.GetTextExtent(str, & w, & h);
diff -ur wxWidgets-2.6.3/src/generic/filedlgg.cpp wxWidgets-2.6.3.3/src/generic/filedlgg.cpp
--- wxWidgets-2.6.3/src/generic/filedlgg.cpp	2006-03-06 05:44:48.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/filedlgg.cpp	2006-05-23 06:33:47.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Modified by:
 // Created:     12/12/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -1307,13 +1307,21 @@
     // No double-click on most WinCE devices, so do action immediately.
     HandleAction( filename );
 #else
-    if (filename == wxT("..")) return;
+    if (filename == wxT(".."))
+    {
+        inSelected = false;
+        return;
+    }
 
     wxString dir = m_list->GetDir();
     if (!IsTopMostDir(dir))
         dir += wxFILE_SEP_PATH;
     dir += filename;
-    if (wxDirExists(dir)) return;
+    if (wxDirExists(dir))
+    {
+        inSelected = false;
+        return;
+    }
 
     ignoreChanges = true;
     m_text->SetValue( filename );
diff -ur wxWidgets-2.6.3/src/generic/fontdlgg.cpp wxWidgets-2.6.3.3/src/generic/fontdlgg.cpp
--- wxWidgets-2.6.3/src/generic/fontdlgg.cpp	2006-03-02 07:57:19.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/fontdlgg.cpp	2006-05-29 13:34:52.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     04/01/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -84,7 +84,7 @@
     {
         dc.SetFont(font);
         // Calculate vertical centre
-        long w, h;
+        long w = 0, h = 0;
         dc.GetTextExtent( wxT("X"), &w, &h);
         dc.SetTextForeground(GetForegroundColour());
         dc.SetClippingRegion(2, 2, size.x-4, size.y-4);
diff -ur wxWidgets-2.6.3/src/generic/grid.cpp wxWidgets-2.6.3.3/src/generic/grid.cpp
--- wxWidgets-2.6.3/src/generic/grid.cpp	2006-03-07 09:50:50.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/grid.cpp	2006-07-08 12:34:29.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Michael Bedward (based on code by Julian Smart, Robin Dunn)
 // Modified by: Robin Dunn, Vadim Zeitlin
 // Created:     1/08/1999
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Michael Bedward (mbedward@ozemail.com.au)
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -6200,6 +6200,32 @@
        claimed = GetEventHandler()->ProcessEvent(gridEvt);
        vetoed = !gridEvt.IsAllowed();
    }
+   else if ( type == wxEVT_GRID_LABEL_LEFT_CLICK ||
+             type == wxEVT_GRID_LABEL_LEFT_DCLICK ||
+             type == wxEVT_GRID_LABEL_RIGHT_CLICK ||
+             type == wxEVT_GRID_LABEL_RIGHT_DCLICK )
+   {
+       wxPoint pos = mouseEv.GetPosition();
+
+       if ( mouseEv.GetEventObject() == GetGridRowLabelWindow() )
+           pos.y += GetColLabelSize();
+       if ( mouseEv.GetEventObject() == GetGridColLabelWindow() )
+           pos.x += GetRowLabelSize();
+       
+       wxGridEvent gridEvt( GetId(),
+               type,
+               this,
+               row, col,
+               pos.x,
+               pos.y,
+               false,
+               mouseEv.ControlDown(),
+               mouseEv.ShiftDown(),
+               mouseEv.AltDown(),
+               mouseEv.MetaDown() );
+       claimed = GetEventHandler()->ProcessEvent(gridEvt);
+       vetoed = !gridEvt.IsAllowed();
+   }
    else
    {
        wxGridEvent gridEvt( GetId(),
@@ -7455,8 +7481,8 @@
                                int vertAlign,
                                int textOrientation )
 {
-    long textWidth, textHeight;
-    long lineWidth, lineHeight;
+    long textWidth = 0, textHeight = 0;
+    long lineWidth = 0, lineHeight = 0;
     int nLines;
 
     dc.SetClippingRegion( rect );
@@ -7583,7 +7609,7 @@
 {
     long w = 0;
     long h = 0;
-    long lineW, lineH;
+    long lineW = 0, lineH = 0;
 
     size_t i;
     for ( i = 0;  i < lines.GetCount();  i++ )
diff -ur wxWidgets-2.6.3/src/generic/listctrl.cpp wxWidgets-2.6.3.3/src/generic/listctrl.cpp
--- wxWidgets-2.6.3/src/generic/listctrl.cpp	2006-03-10 16:37:20.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/listctrl.cpp	2006-04-02 09:39:01.000000000 -0400
@@ -3,7 +3,7 @@
 // Purpose:     generic implementation of wxListCtrl
 // Author:      Robert Roebling
 //              Vadim Zeitlin (virtual list control support)
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -2914,6 +2914,7 @@
 
 void wxListMainWindow::OnMouse( wxMouseEvent &event )
 {
+
 #ifdef __WXMAC__
     // On wxMac we can't depend on the EVT_KILL_FOCUS event to properly
     // shutdown the edit control when the mouse is clicked elsewhere on the
@@ -2937,7 +2938,15 @@
     }
 
     if ( !HasCurrent() || IsEmpty() )
+    {
+        if (event.RightDown())
+        {
+            SendNotify( (size_t)-1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() );
+            // Allow generation of context menu event
+            event.Skip();
+		}
         return;
+	}
 
     if (m_dirty)
         return;
@@ -3005,11 +3014,17 @@
         m_dragCount = 0;
     }
 
-    if ( !hitResult )
+	if ( !hitResult )
     {
-        // outside of any item
-        return;
-    }
+        if (event.RightDown())
+        {
+            SendNotify( (size_t) -1, wxEVT_COMMAND_LIST_ITEM_RIGHT_CLICK, event.GetPosition() );
+            // Allow generation of context menu event
+            event.Skip();
+        }
+
+		return;
+	}
 
     bool forceClick = false;
     if (event.ButtonDClick())
@@ -3319,6 +3334,10 @@
 
         case WXK_PRIOR:
             {
+                // avoid floating point exception
+                if (m_linesPerPage == 0)
+                    m_linesPerPage = 1;
+                    
                 int steps = InReportView() ? m_linesPerPage - 1 : m_current % m_linesPerPage;
 
                 int index = m_current - steps;
@@ -3331,6 +3350,10 @@
 
         case WXK_NEXT:
             {
+                // avoid floating point exception
+                if (m_linesPerPage == 0)
+                    m_linesPerPage = 1;
+                    
                 int steps = InReportView()
                                ? m_linesPerPage - 1
                                : m_linesPerPage - (m_current % m_linesPerPage) - 1;
@@ -4667,7 +4690,13 @@
 
 void wxListMainWindow::OnScroll(wxScrollWinEvent& event)
 {
-    // update our idea of which lines are shown when we redraw the window the
+    int cw, ch, vw, vh;
+    GetVirtualSize(&vw, &vh);  
+    GetClientSize(&cw, &ch);
+    if (event.GetOrientation() == wxVERTICAL && ch >= vh)
+        return;
+        
+	// update our idea of which lines are shown when we redraw the window the
     // next time
     ResetVisibleLinesRange();
 
@@ -5575,12 +5604,12 @@
 #if wxABI_VERSION >= 20603
 void wxGenericListCtrl::DoClientToScreen( int *x, int *y ) const
 {
-    return m_mainWin->DoClientToScreen(x, y);
+    m_mainWin->DoClientToScreen(x, y);
 }
 
 void wxGenericListCtrl::DoScreenToClient( int *x, int *y ) const
 {
-    return m_mainWin->DoScreenToClient(x, y);
+    m_mainWin->DoScreenToClient(x, y);
 }
 #endif // 2.6.3
 
diff -ur wxWidgets-2.6.3/src/generic/notebook.cpp wxWidgets-2.6.3.3/src/generic/notebook.cpp
--- wxWidgets-2.6.3/src/generic/notebook.cpp	2005-09-17 17:00:47.000000000 -0400
+++ wxWidgets-2.6.3.3/src/generic/notebook.cpp	2006-05-29 16:37:07.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     17/09/98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
@@ -76,6 +76,12 @@
 // Private class
 // ============================================================================
 
+WX_DECLARE_HASH_MAP(int, wxNotebookPage*, wxIntegerHash, wxIntegerEqual,
+                    wxIntToNotebookPageHashMap);
+
+WX_DECLARE_HASH_MAP(wxNotebookPage*, int, wxPointerHash, wxPointerEqual,
+                    wxNotebookPageToIntHashMap);
+
 // This reuses wxTabView to draw the tabs.
 class WXDLLEXPORT wxNotebookTabView: public wxTabView
 {
@@ -89,10 +95,24 @@
   // Allows vetoing
   virtual bool OnTabPreActivate(int activateId, int deactivateId);
 
+  // map integer ids used by wxTabView to wxNotebookPage pointers
+  int GetId(wxNotebookPage *page);
+  wxNotebookPage *GetPage(int id) { return m_idToPage[id]; }
+
 protected:
-   wxNotebook*      m_notebook;
+  wxNotebook* m_notebook;
+
+private:
+  wxIntToNotebookPageHashMap m_idToPage;
+  wxNotebookPageToIntHashMap m_pageToId;
+  int m_nextid;
 };
 
+static int GetPageId(wxTabView *tabview, wxNotebookPage *page)
+{
+    return wx_static_cast(wxNotebookTabView*, tabview)->GetId(page);
+}
+
 // ----------------------------------------------------------------------------
 // wxNotebook construction
 // ----------------------------------------------------------------------------
@@ -167,7 +187,7 @@
 
     wxNotebookPage* pPage = GetPage(nPage);
 
-    m_tabView->SetTabSelection((int) (long) pPage);
+    m_tabView->SetTabSelection(GetPageId(m_tabView, pPage));
 
     // TODO
     return 0;
@@ -192,7 +212,7 @@
     wxNotebookPage* page = GetPage(nPage);
     if (page)
     {
-        m_tabView->SetTabText((int) (long) page, strText);
+        m_tabView->SetTabText(GetPageId(m_tabView, page), strText);
         Refresh();
         return true;
     }
@@ -206,7 +226,7 @@
 
     wxNotebookPage* page = ((wxNotebook*)this)->GetPage(nPage);
     if (page)
-        return m_tabView->GetTabText((int) (long) page);
+        return m_tabView->GetTabText(GetPageId(m_tabView, page));
     else
         return wxEmptyString;
 }
@@ -262,7 +282,7 @@
 
     wxNotebookPage* pPage = GetPage(nPage);
 
-    m_tabView->RemoveTab((int) (long) pPage);
+    m_tabView->RemoveTab(GetPageId(m_tabView, pPage));
 
     m_pages.Remove(pPage);
     delete pPage;
@@ -276,7 +296,7 @@
     {
       m_nSelection = -1;
 
-      m_tabView->SetTabSelection((int) (long) GetPage(0), false);
+      m_tabView->SetTabSelection(GetPageId(m_tabView, GetPage(0)), false);
 
       if (m_nSelection != 0)
         ChangePage(-1, 0);
@@ -311,7 +331,7 @@
 
     wxNotebookPage* pPage = GetPage(nPage);
 
-    m_tabView->RemoveTab((int) (long) pPage);
+    m_tabView->RemoveTab(GetPageId(m_tabView, pPage));
 
     m_pages.Remove(pPage);
 
@@ -390,7 +410,7 @@
     wxASSERT( pPage != NULL );
     wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), false );
 
-    m_tabView->AddTab((int) (long) pPage, strText);
+    m_tabView->AddTab(GetPageId(m_tabView, pPage), strText);
 
     if (!bSelect)
       pPage->Show(false);
@@ -402,7 +422,7 @@
     {
         // This will cause ChangePage to be called, via OnSelPage
 
-        m_tabView->SetTabSelection((int) (long) pPage, true);
+        m_tabView->SetTabSelection(GetPageId(m_tabView, pPage), true);
     }
 
     // some page must be selected: either this one or the first one if there is
@@ -656,7 +676,8 @@
 
 IMPLEMENT_CLASS(wxNotebookTabView, wxTabView)
 
-wxNotebookTabView::wxNotebookTabView(wxNotebook *notebook, long style): wxTabView(style)
+wxNotebookTabView::wxNotebookTabView(wxNotebook *notebook, long style)
+    : wxTabView(style), m_nextid(1)
 {
   m_notebook = notebook;
 
@@ -669,6 +690,19 @@
 {
 }
 
+int wxNotebookTabView::GetId(wxNotebookPage *page)
+{
+  int& id = m_pageToId[page];
+
+  if (!id)
+  {
+    id = m_nextid++;
+    m_idToPage[id] = page;
+  }
+
+  return id;
+}
+
 // Called when a tab is activated
 void wxNotebookTabView::OnTabActivate(int activateId, int deactivateId)
 {
@@ -679,8 +713,8 @@
 
   // Translate from wxTabView's ids (which aren't position-dependent)
   // to wxNotebook's (which are).
-  wxNotebookPage* pActive = (wxNotebookPage*) activateId;
-  wxNotebookPage* pDeactive = (wxNotebookPage*) deactivateId;
+  wxNotebookPage* pActive = GetPage(activateId);
+  wxNotebookPage* pDeactive = GetPage(deactivateId);
 
   int activatePos = m_notebook->FindPagePosition(pActive);
   int deactivatePos = m_notebook->FindPagePosition(pDeactive);
@@ -702,8 +736,8 @@
 
     // Translate from wxTabView's ids (which aren't position-dependent)
     // to wxNotebook's (which are).
-    wxNotebookPage* pActive = (wxNotebookPage*) activateId;
-    wxNotebookPage* pDeactive = (wxNotebookPage*) deactivateId;
+    wxNotebookPage* pActive = GetPage(activateId);
+    wxNotebookPage* pDeactive = GetPage(deactivateId);
 
     int activatePos = m_notebook->FindPagePosition(pActive);
     int deactivatePos = m_notebook->FindPagePosition(pDeactive);
diff -ur wxWidgets-2.6.3/src/generic/progdlgg.cpp wxWidgets-2.6.3.3/src/generic/progdlgg.cpp
--- wxWidgets-2.6.3/src/generic/progdlgg.cpp	2005-04-07 10:52:22.000000000 -0400
+++ wxWidgets-2.6.3.3/src/generic/progdlgg.cpp	2006-05-29 13:34:54.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Karsten Ballüder
 // Modified by:
 // Created:     09.05.1999
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Karsten Ballüder
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -145,7 +145,7 @@
 
     wxClientDC dc(this);
     dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
-    long widthText;
+    long widthText = 0;
     dc.GetTextExtent(message, &widthText, NULL, NULL, NULL, NULL);
 
     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
diff -ur wxWidgets-2.6.3/src/generic/sashwin.cpp wxWidgets-2.6.3.3/src/generic/sashwin.cpp
--- wxWidgets-2.6.3/src/generic/sashwin.cpp	2004-12-14 15:41:53.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/sashwin.cpp	2006-05-29 13:34:55.000000000 -0400
@@ -6,7 +6,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -98,7 +98,7 @@
 
 void wxSashWindow::OnMouseEvent(wxMouseEvent& event)
 {
-    wxCoord x, y;
+    wxCoord x = 0, y = 0;
     event.GetPosition(&x, &y);
 
     wxSashEdgePosition sashHit = SashHitTest(x, y);
diff -ur wxWidgets-2.6.3/src/generic/scrlwing.cpp wxWidgets-2.6.3.3/src/generic/scrlwing.cpp
--- wxWidgets-2.6.3/src/generic/scrlwing.cpp	2006-03-13 10:10:38.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/scrlwing.cpp	2006-06-09 10:04:57.000000000 -0400
@@ -5,7 +5,7 @@
 // Modified by: Vadim Zeitlin on 31.08.00: wxScrollHelper allows to implement.
 //              Ron Lee on 10.4.02:  virtual size / auto scrollbars et al.
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) wxWidgets team
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -882,7 +882,7 @@
     if (((x_pos == -1) || (x_pos == m_xScrollPosition)) &&
         ((y_pos == -1) || (y_pos == m_yScrollPosition))) return;
 
-    int w, h;
+    int w = 0, h = 0;
     GetTargetSize(&w, &h);
 
     if ((x_pos != -1) && (m_xScrollPixelsPerLine))
@@ -1278,7 +1278,7 @@
         // If we're the scroll target, take into account the
         // virtual size and scrolled position of the window.
 
-        int x, y, w, h;
+        int x = 0, y = 0, w = 0, h = 0;
         CalcScrolledPosition(0,0, &x,&y);
         GetVirtualSize(&w, &h);
         GetSizer()->SetDimension(x, y, w, h);
@@ -1319,6 +1319,7 @@
 {
     wxSize best;
 
+    bool addClientSizeDiff = true;
     if ( GetSizer() )
     {
         wxSize b = GetSizer()->GetMinSize();
@@ -1333,7 +1334,14 @@
         if ( GetMinSize().IsFullySpecified() )
             minSize = GetMinSize();
         else
+        {
             minSize = GetSize();
+            
+            // If we're using the overall size, we don't want to then
+            // add to it, or we'll successively grow the window over
+            // multiple layouts.
+            addClientSizeDiff = false;
+        }
 
         if (ppuX > 0)
             b.x = minSize.x;
@@ -1345,9 +1353,12 @@
         return wxWindow::DoGetBestSize();
 
     // Add any difference between size and client size
-    wxSize diff = GetSize() - GetClientSize();
-    best.x += wxMax(0, diff.x);
-    best.y += wxMax(0, diff.y);
+    if (addClientSizeDiff)
+    {
+        wxSize diff = GetSize() - GetClientSize();
+        best.x += wxMax(0, diff.x);
+        best.y += wxMax(0, diff.y);
+    }
 
     return best;
 }
diff -ur wxWidgets-2.6.3/src/generic/statusbr.cpp wxWidgets-2.6.3.3/src/generic/statusbr.cpp
--- wxWidgets-2.6.3/src/generic/statusbr.cpp	2005-06-07 15:01:45.000000000 -0400
+++ wxWidgets-2.6.3.3/src/generic/statusbr.cpp	2006-05-29 13:34:55.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Julian Smart
 // Modified by:
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -237,7 +237,7 @@
 
     wxString text(GetStatusText(i));
 
-    long x, y;
+    long x = 0, y = 0;
 
     dc.GetTextExtent(text, &x, &y);
 
diff -ur wxWidgets-2.6.3/src/generic/treectlg.cpp wxWidgets-2.6.3.3/src/generic/treectlg.cpp
--- wxWidgets-2.6.3/src/generic/treectlg.cpp	2006-02-27 16:49:48.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/treectlg.cpp	2006-05-29 13:34:56.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Created:     01/02/97
 // Modified:    22/10/98 - almost total rewrite, simpler interface (VZ)
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling and Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -3557,7 +3557,7 @@
 {
     wxCHECK_RET( m_freezeCount > 0, _T("thawing unfrozen tree control?") );
 
-    if ( !--m_freezeCount )
+    if ( --m_freezeCount == 0 )
     {
         Refresh();
     }
diff -ur wxWidgets-2.6.3/src/generic/vlbox.cpp wxWidgets-2.6.3.3/src/generic/vlbox.cpp
--- wxWidgets-2.6.3/src/generic/vlbox.cpp	2006-01-18 04:50:37.000000000 -0500
+++ wxWidgets-2.6.3.3/src/generic/vlbox.cpp	2006-04-14 11:24:13.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     31.05.03
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2003 Vadim Zeitlin <vadim@wxwindows.org>
 // License:     wxWindows license
 ///////////////////////////////////////////////////////////////////////////////
@@ -378,8 +378,8 @@
     // the update rectangle
     wxRect rectUpdate = GetUpdateClientRect();
 
-    // Fill it with background colour
-    dc.SetBrush(GetBackgroundColour());
+    // fill it with background colour
+    dc.SetBackground(GetBackgroundColour());
     dc.Clear();
 
     // the bounding rectangle of the current line
diff -ur wxWidgets-2.6.3/src/gtk/clipbrd.cpp wxWidgets-2.6.3.3/src/gtk/clipbrd.cpp
--- wxWidgets-2.6.3/src/gtk/clipbrd.cpp	2006-03-24 18:51:29.000000000 -0500
+++ wxWidgets-2.6.3.3/src/gtk/clipbrd.cpp	2006-04-15 05:57:41.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        gtk/clipbrd.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -265,7 +265,7 @@
     // It shall return the time which was used to set the data.
     if (selection_data->target == g_timestampAtom)
     {
-        uint timestamp = GPOINTER_TO_UINT (signal_data);
+        guint timestamp = GPOINTER_TO_UINT (signal_data);
         gtk_selection_data_set(selection_data,
                                GDK_SELECTION_TYPE_INTEGER,
                                32,
@@ -493,17 +493,22 @@
     }
 
     delete[] array;
-
+    
+#ifdef __WXGTK20__
     gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
                         "selection_get",
                         GTK_SIGNAL_FUNC(selection_handler),
                         GUINT_TO_POINTER(
-#ifdef __WXGTK20__
                                 gtk_get_current_event_time()
+                            ) );
 #else
+    gtk_signal_connect( GTK_OBJECT(m_clipboardWidget),
+                        "selection_get",
+                        GTK_SIGNAL_FUNC(selection_handler),
+                        GUINT_TO_POINTER(
                                 gdk_event_get_time(gtk_get_current_event())
+                            ) );
 #endif
-                                        ) );
 
 #if wxUSE_THREADS
     /* disable GUI threads */
diff -ur wxWidgets-2.6.3/src/gtk/colour.cpp wxWidgets-2.6.3.3/src/gtk/colour.cpp
--- wxWidgets-2.6.3/src/gtk/colour.cpp	2005-07-22 14:01:45.000000000 -0400
+++ wxWidgets-2.6.3.3/src/gtk/colour.cpp	2006-06-15 15:35:34.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        colour.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -154,9 +154,9 @@
 wxColour::wxColour( unsigned char red, unsigned char green, unsigned char blue )
 {
     m_refData = new wxColourRefData();
-    M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT;
-    M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT;
-    M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT;
+    M_COLDATA->m_color.red = (((unsigned short)red) << SHIFT) + red;
+    M_COLDATA->m_color.green = (((unsigned short)green) << SHIFT) + green;
+    M_COLDATA->m_color.blue = (((unsigned short)blue) << SHIFT) + blue;
     M_COLDATA->m_color.pixel = 0;
 }
 
@@ -234,9 +234,9 @@
 {
     AllocExclusive();
 
-    M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT;
-    M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT;
-    M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT;
+    M_COLDATA->m_color.red = (((unsigned short)red) << SHIFT) + red;
+    M_COLDATA->m_color.green = (((unsigned short)green) << SHIFT) + green;
+    M_COLDATA->m_color.blue = (((unsigned short)blue) << SHIFT) + blue;
     M_COLDATA->m_color.pixel = 0;
 
     M_COLDATA->m_colormap = (GdkColormap*) NULL;
diff -ur wxWidgets-2.6.3/src/gtk/combobox.cpp wxWidgets-2.6.3.3/src/gtk/combobox.cpp
--- wxWidgets-2.6.3/src/gtk/combobox.cpp	2006-03-17 11:00:51.000000000 -0500
+++ wxWidgets-2.6.3.3/src/gtk/combobox.cpp	2006-06-26 08:32:42.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        combobox.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -80,11 +80,15 @@
     // when the popup is hidden, throw a SELECTED event only if the combobox
     // selection changed.
     int curSelection = combo->GetCurrentSelection();
-    
-    // reset the selection flag to value meaning that it is hidden
+
+    const bool hasChanged = curSelection != g_SelectionBeforePopup;
+
+    // reset the selection flag to value meaning that it is hidden and do it
+    // now, before generating the events, so that GetSelection() returns the
+    // new value from the event handler
     g_SelectionBeforePopup = wxID_NONE;
-    
-    if (g_SelectionBeforePopup != curSelection)
+
+    if ( hasChanged )
     {
         wxCommandEvent event( wxEVT_COMMAND_COMBOBOX_SELECTED, combo->GetId() );
         event.SetInt( curSelection );
diff -ur wxWidgets-2.6.3/src/gtk/dcclient.cpp wxWidgets-2.6.3.3/src/gtk/dcclient.cpp
--- wxWidgets-2.6.3/src/gtk/dcclient.cpp	2005-08-17 17:40:44.000000000 -0400
+++ wxWidgets-2.6.3.3/src/gtk/dcclient.cpp	2006-05-24 22:40:41.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        gtk/dcclient.cpp
 // Purpose:
 // Author:      Robert Roebling
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling, Chris Breeze
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -1610,15 +1610,16 @@
 
 void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y, double angle )
 {
-    if (angle == 0.0)
-    {
-        DrawText(text, x, y);
+    if (!m_window || text.empty())
         return;
-    }
 
     wxCHECK_RET( Ok(), wxT("invalid window dc") );
 
-    if (!m_window) return;
+    if (wxIsNullDouble(angle))
+    {
+        DrawText(text, x, y);
+        return;
+    }
 
     wxCoord w;
     wxCoord h;
diff -ur wxWidgets-2.6.3/src/gtk/filedlg.cpp wxWidgets-2.6.3.3/src/gtk/filedlg.cpp
--- wxWidgets-2.6.3/src/gtk/filedlg.cpp	2005-11-14 18:02:03.000000000 -0500
+++ wxWidgets-2.6.3.3/src/gtk/filedlg.cpp	2006-05-18 22:39:24.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        gtk/filedlg.cpp
 // Purpose:     native implementation of wxFileDialog
 // Author:      Robert Roebling, Zbigniew Zagorski, Mart Raudsepp
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling, 2004 Zbigniew Zagorski, 2005 Mart Raudsepp
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -181,6 +181,8 @@
                        ok_btn_stock, GTK_RESPONSE_ACCEPT,
                        NULL);
 
+        gtk_dialog_set_default_response(GTK_DIALOG(m_widget), GTK_RESPONSE_ACCEPT);
+
         if ( style & wxMULTIPLE )
             gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(m_widget), true);
 
@@ -206,7 +208,7 @@
                 wxConvFileName->cWX2MB(defaultFileName));
 
 #if GTK_CHECK_VERSION(2,7,3)
-            if (!gtk_check_version(2,7,3))
+            if ((style & wxOVERWRITE_PROMPT) && !gtk_check_version(2,7,3))
                 gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(m_widget), TRUE);
 #endif
         }
diff -ur wxWidgets-2.6.3/src/gtk/scrolwin.cpp wxWidgets-2.6.3.3/src/gtk/scrolwin.cpp
--- wxWidgets-2.6.3/src/gtk/scrolwin.cpp	2005-11-02 10:57:38.000000000 -0500
+++ wxWidgets-2.6.3.3/src/gtk/scrolwin.cpp	2006-06-10 15:52:49.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Robert Roebling
 // Modified by: Ron Lee
 // Created:     01/02/97
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Robert Roebling
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -58,8 +58,8 @@
 // data
 //-----------------------------------------------------------------------------
 
-extern bool       g_blockEventsOnDrag;
 extern bool       g_blockEventsOnScroll;
+extern bool g_mouseButtonDown;
 
 //-----------------------------------------------------------------------------
 // idle system
@@ -69,68 +69,63 @@
 extern bool g_isIdle;
 
 //-----------------------------------------------------------------------------
-// "value_changed" from m_vAdjust
+// "value_changed" from m_[hv]Adjust
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static void gtk_scrolled_window_vscroll_callback( GtkAdjustment *adjust,
+static void gtk_scrolled_window_scroll_callback( GtkAdjustment *adjust,
                                                   SCROLLBAR_CBACK_ARG
                                                   wxScrolledWindow *win )
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    if (g_blockEventsOnDrag) return;
-
-    if (!win->m_hasVMT) return;
-    
-    win->GtkVScroll( adjust->value,
-            GET_SCROLL_TYPE(GTK_SCROLLED_WINDOW(win->m_widget)->vscrollbar) );
+    win->HandleScrollEvent(adjust);
 }
 }
 
 //-----------------------------------------------------------------------------
-// "value_changed" from m_hAdjust
+// "button_press_event" from scrollbar
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static void gtk_scrolled_window_hscroll_callback( GtkAdjustment *adjust,
-                                                  SCROLLBAR_CBACK_ARG
-                                                  wxScrolledWindow *win )
+static gint gtk_scrollbar_button_press_callback( GtkRange *widget,
+                                                 GdkEventButton *gdk_event,
+                                                 wxWindowGTK *win)
 {
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    if (g_blockEventsOnDrag) return;
-    if (!win->m_hasVMT) return;
+    g_blockEventsOnScroll = TRUE;
+    g_mouseButtonDown = true;
 
-    win->GtkHScroll( adjust->value,
-            GET_SCROLL_TYPE(GTK_SCROLLED_WINDOW(win->m_widget)->hscrollbar) );
+    return FALSE;
 }
 }
 
+#ifdef __WXGTK20__
 //-----------------------------------------------------------------------------
-// "button_press_event" from scrollbar
+// "event_after" from scrollbar
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static gint gtk_scrollbar_button_press_callback( GtkRange *widget,
-                                                 GdkEventButton *gdk_event,
-                                                 wxWindowGTK *win)
+static void
+gtk_scrollbar_event_after(GtkRange* range, GdkEvent* event, wxWindow* win)
 {
-    if (g_isIdle)
-        wxapp_install_idle_handler();
-
-    g_blockEventsOnScroll = TRUE;
-
-    // FIXME: there is no slider field any more, what was meant here?
-#ifndef __WXGTK20__
-    win->m_isScrolling = (gdk_event->window == widget->slider);
-#endif
+    if (event->type == GDK_BUTTON_RELEASE)
+    {
+        g_signal_handlers_block_by_func(range, (void*)gtk_scrollbar_event_after, win);
 
-    return FALSE;
+        GtkAdjustment* adj = range->adjustment;
+        wxASSERT(adj == win->m_hAdjust || adj == win->m_vAdjust);
+        const int orient = adj == win->m_hAdjust ? wxHORIZONTAL : wxVERTICAL;
+        wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBRELEASE, win->GetScrollPos(orient), orient);
+        event.SetEventObject(win);
+        win->GetEventHandler()->ProcessEvent(event);
+    }
 }
 }
+#endif // __WXGTK20__
 
 //-----------------------------------------------------------------------------
 // "button_release_event" from scrollbar
@@ -141,38 +136,24 @@
                                                    GdkEventButton *WXUNUSED(gdk_event),
                                                    wxWindowGTK *win)
 {
-//  don't test here as we can release the mouse while being over
-//  a different window than the slider
-//
-//    if (gdk_event->window != widget->slider) return FALSE;
-
     g_blockEventsOnScroll = FALSE;
+    g_mouseButtonDown = false;
 
     if (win->m_isScrolling)
     {
-        wxEventType command = wxEVT_SCROLLWIN_THUMBRELEASE;
-        int value = -1;
-        int dir = -1;
-
-        GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
-        if (widget == GTK_RANGE(scrolledWindow->hscrollbar))
-        {
-            value = (int)(win->m_hAdjust->value+0.5);
-            dir = wxHORIZONTAL;
-        }
-        if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
-        {
-            value = (int)(win->m_vAdjust->value+0.5);
-            dir = wxVERTICAL;
-        }
-
-        wxScrollWinEvent event( command, value, dir );
-        event.SetEventObject( win );
-        win->GetEventHandler()->ProcessEvent( event );
+        win->m_isScrolling = false;
+#ifdef __WXGTK20__
+        g_signal_handlers_unblock_by_func(widget, (void*)gtk_scrollbar_event_after, win);
+#else
+        GtkAdjustment* adj = widget->adjustment;
+        wxASSERT(adj == win->m_hAdjust || adj == win->m_vAdjust);
+        const int orient = adj == win->m_hAdjust ? wxHORIZONTAL : wxVERTICAL;
+        wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBRELEASE, win->GetScrollPos(orient), orient);
+        event.SetEventObject(win);
+        win->GetEventHandler()->ProcessEvent(event);
+#endif
     }
 
-    win->m_isScrolling = FALSE;
-
     return FALSE;
 }
 }
@@ -282,17 +263,19 @@
     m_vAdjust->value = 0.0;
     m_vAdjust->step_increment = 1.0;
     m_vAdjust->page_increment = 2.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
+    gtk_adjustment_changed(m_vAdjust);
     m_hAdjust->lower = 0.0;
     m_hAdjust->upper = 1.0;
     m_hAdjust->value = 0.0;
     m_hAdjust->step_increment = 1.0;
     m_hAdjust->page_increment = 2.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
+    gtk_adjustment_changed(m_hAdjust);
 
     // Handlers for new scrollbar values
-    GtkVConnectEvent();
-    GtkHConnectEvent();
+    gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
+          (GtkSignalFunc) gtk_scrolled_window_scroll_callback, (gpointer) this );
+    gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
+          (GtkSignalFunc) gtk_scrolled_window_scroll_callback, (gpointer) this );
 
     // these handlers block mouse events to any window during scrolling such as
     // motion events and prevent GTK and wxWidgets from fighting over where the
@@ -310,6 +293,16 @@
     gtk_signal_connect( GTK_OBJECT(scrolledWindow->hscrollbar), "button_release_event",
           (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
 
+#ifdef __WXGTK20__
+    gulong handler_id;
+    handler_id = g_signal_connect(
+        scrolledWindow->vscrollbar, "event_after", G_CALLBACK(gtk_scrollbar_event_after), this);
+    g_signal_handler_block(scrolledWindow->vscrollbar, handler_id);
+    handler_id = g_signal_connect(
+        scrolledWindow->hscrollbar, "event_after", G_CALLBACK(gtk_scrollbar_event_after), this);
+    g_signal_handler_block(scrolledWindow->hscrollbar, handler_id);
+#endif
+
     gtk_widget_show( m_wxwindow );
 
     if (m_parent)
@@ -358,6 +351,7 @@
 {
     wxSize best;
 
+    bool addClientSizeDiff = true;
     if ( GetSizer() )
     {
         wxSize b = GetSizer()->GetMinSize();
@@ -372,7 +366,14 @@
         if ( GetMinSize().IsFullySpecified() )
             minSize = GetMinSize();
         else
+        {
             minSize = GetSize();
+            
+            // If we're using the overall size, we don't want to then
+            // add to it, or we'll successively grow the window over
+            // multiple layouts.
+            addClientSizeDiff = false;
+        }
 
         if (ppuX > 0)
             b.x = minSize.x;
@@ -383,10 +384,13 @@
     else
         return wxWindow::DoGetBestSize();
 
-    // Add any difference between size and client size
-    wxSize diff = GetSize() - GetClientSize();
-    best.x += wxMax(0, diff.x);
-    best.y += wxMax(0, diff.y);
+    if (addClientSizeDiff)
+    {
+        // Add any difference between size and client size
+        wxSize diff = GetSize() - GetClientSize();
+        best.x += wxMax(0, diff.x);
+        best.y += wxMax(0, diff.y);
+    }
 
     return best;
 }
@@ -420,6 +424,14 @@
     m_targetWindow->SetVirtualSize( w ? w : wxDefaultCoord,
                                     h ? h : wxDefaultCoord);
 
+    // If the target is not the same as the window with the scrollbars,
+    // then we need to update the scrollbars here, since they won't have
+    // been updated by SetVirtualSize().
+    if (m_targetWindow != this)
+    {
+        AdjustScrollbars();
+    }
+
     if (!noRefresh)
     {
         int new_x = m_xScrollPixelsPerLine * m_xScrollPosition;
@@ -437,73 +449,40 @@
     m_targetWindow->GetClientSize( &w, &h );
     m_targetWindow->GetVirtualSize( &vw, &vh );
     
-    if (m_xScrollPixelsPerLine == 0)
-    {
-        m_hAdjust->upper = 1.0;
-        m_hAdjust->page_increment = 1.0;
-        m_hAdjust->page_size = 1.0;
-    }
-    else
-    {
-        m_hAdjust->upper = (vw+m_xScrollPixelsPerLine-1) / m_xScrollPixelsPerLine;
-        m_hAdjust->page_size = w / m_xScrollPixelsPerLine;
-        m_hAdjust->page_increment = w / m_xScrollPixelsPerLine;
-
-        // Special case. When client and virtual size are very close but
-        // the client is big enough, kill scrollbar.
-        
-        if ((m_hAdjust->page_size < m_hAdjust->upper) && (w >= vw)) 
-            m_hAdjust->page_size += 1.0;
-        
-        // If the scrollbar hits the right side, move the window
-        // right to keep it from over extending.
-
-        if ((m_hAdjust->value != 0.0) && (m_hAdjust->value + m_hAdjust->page_size > m_hAdjust->upper))
-        {
-            m_hAdjust->value = m_hAdjust->upper - m_hAdjust->page_size;
-            if (m_hAdjust->value < 0.0)
-                m_hAdjust->value = 0.0;
-                
-            if (GetChildren().GetCount() == 0)
-                m_xScrollPosition = (int)m_hAdjust->value; // This is enough without child windows
-            else
-                gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" ); // Actually scroll window
-        }
-    }
-
-    if (m_yScrollPixelsPerLine == 0)
-    {
-        m_vAdjust->upper = 1.0;
-        m_vAdjust->page_increment = 1.0;
-        m_vAdjust->page_size = 1.0;
-    }
-    else
-    {
-        m_vAdjust->upper = (vh+m_yScrollPixelsPerLine-1) / m_yScrollPixelsPerLine;
-        m_vAdjust->page_size = h / m_yScrollPixelsPerLine;
-        m_vAdjust->page_increment = h / m_yScrollPixelsPerLine;
-        
-        if ((m_vAdjust->page_size < m_vAdjust->upper) && (h >= vh)) 
-            m_vAdjust->page_size += 1.0;
-
-        if ((m_vAdjust->value != 0.0) && (m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper))
-        {
-            m_vAdjust->value = m_vAdjust->upper - m_vAdjust->page_size;
-            if (m_vAdjust->value < 0.0)
-                m_vAdjust->value = 0.0;
-                
-            if (GetChildren().GetCount() == 0)
-                m_yScrollPosition = (int)m_vAdjust->value;  
-            else
-                gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-        }
-    }
-
-    m_xScrollLinesPerPage = (int)(m_hAdjust->page_increment + 0.5);
-    m_yScrollLinesPerPage = (int)(m_vAdjust->page_increment + 0.5);
+    DoAdjustScrollbars(m_hAdjust, m_xScrollPixelsPerLine, w, vw, &m_xScrollLinesPerPage);
+    DoAdjustScrollbars(m_vAdjust, m_yScrollPixelsPerLine, h, vh, &m_yScrollLinesPerPage);
+}
 
-    gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
-    gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
+void wxScrolledWindow::DoAdjustScrollbars(GtkAdjustment* adj,
+                                          int pixelsPerLine,
+                                          int winSize,
+                                          int virtSize,
+                                          int *linesPerPage)
+{
+    int upper = 1;
+    int page_size = 1;
+    if (pixelsPerLine > 0 && winSize < virtSize)
+    {
+        upper = (virtSize + pixelsPerLine - 1) / pixelsPerLine;
+        page_size = winSize / pixelsPerLine;
+    }
+
+    *linesPerPage = page_size;
+
+    adj->step_increment = 1;
+    adj->page_increment =
+    adj->page_size = page_size;
+    adj->lower = 0;
+    adj->upper = upper;
+
+    const double value = adj->value;
+    if (adj->value > adj->upper - adj->page_size)
+        adj->value = adj->upper - adj->page_size;
+    if (adj->value < 0)
+        adj->value = 0;
+    if (!wxIsSameDouble(value, adj->value))
+        gtk_adjustment_value_changed(adj);
+    gtk_adjustment_changed(adj);
 }
 
 
@@ -580,33 +559,17 @@
 
     if (orient == wxHORIZONTAL)
     {
-        int newPos = m_xScrollPosition + nScrollInc;
-        SetScrollPos(wxHORIZONTAL, newPos, TRUE );
-    }
-    else
-    {
-        int newPos = m_yScrollPosition + nScrollInc;
-        SetScrollPos(wxVERTICAL, newPos, TRUE );
-    }
-
-    if (orient == wxHORIZONTAL)
-    {
         m_xScrollPosition += nScrollInc;
-    }
-    else
-    {
-        m_yScrollPosition += nScrollInc;
-    }
-
-    if (orient == wxHORIZONTAL)
-    {
-       if (m_xScrollingEnabled)
+        SetScrollPos(wxHORIZONTAL, m_xScrollPosition);
+        if (m_xScrollingEnabled)
             m_targetWindow->ScrollWindow(-m_xScrollPixelsPerLine * nScrollInc, 0, (const wxRect *) NULL);
-       else
+        else
             m_targetWindow->Refresh();
     }
     else
     {
+        m_yScrollPosition += nScrollInc;
+        SetScrollPos(wxVERTICAL, m_yScrollPosition);
         if (m_yScrollingEnabled)
             m_targetWindow->ScrollWindow(0, -m_yScrollPixelsPerLine * nScrollInc, (const wxRect *) NULL);
         else
@@ -618,86 +581,24 @@
 {
     wxASSERT_MSG( m_targetWindow != 0, _T("No target window") );
 
-    if (((x_pos == -1) || (x_pos == m_xScrollPosition)) &&
-        ((y_pos == -1) || (y_pos == m_yScrollPosition))) return;
-
-    if ((x_pos != -1) && (m_xScrollPixelsPerLine))
-    {
-        int max = (int)(m_hAdjust->upper - m_hAdjust->page_size + 0.5);
-        if (max < 0) max = 0;
-        if (x_pos > max) x_pos = max;
-        if (x_pos < 0) x_pos = 0;
-
-        int old_x = m_xScrollPosition;
-        m_xScrollPosition = x_pos;
-        m_hAdjust->value = x_pos;
-
-        m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 );
-
-        // Just update the scrollbar, don't send any wxWidgets event
-        GtkHDisconnectEvent();
-        gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
-        GtkHConnectEvent();
-    }
-
-    if ((y_pos != -1) && (m_yScrollPixelsPerLine))
-    {
-        int max = (int)(m_vAdjust->upper - m_vAdjust->page_size + 0.5);
-        if (max < 0) max = 0;
-        if (y_pos > max) y_pos = max;
-        if (y_pos < 0) y_pos = 0;
-
-        int old_y = m_yScrollPosition;
-        m_yScrollPosition = y_pos;
-        m_vAdjust->value = y_pos;
-
-        m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine );
-
-        // Just update the scrollbar, don't send any wxWidgets event
-        GtkVDisconnectEvent();
-        gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-        GtkVConnectEvent();
-    }
-}
-
-// TODO: [VH]Scroll functions should be combined
-
-void wxScrolledWindow::GtkVScroll( float value, unsigned int scroll_type )
-{
-    wxASSERT_MSG( m_targetWindow != 0, _T("No target window") );
-
-    if (m_yScrollPixelsPerLine == 0)
-        return;
-
-    int y_pos = (int)(value+0.5);
-
-    if (y_pos == m_yScrollPosition)
-        return;
-
-    wxEventType command = GtkScrollWinTypeToWx(scroll_type);
-
-    wxScrollWinEvent event( command, y_pos, wxVERTICAL );
-    event.SetEventObject( this );
-    GetEventHandler()->ProcessEvent( event );
+    DoScroll(wxHORIZONTAL, x_pos, &m_xScrollPosition, m_xScrollPixelsPerLine);
+    DoScroll(wxVERTICAL, y_pos, &m_yScrollPosition, m_yScrollPixelsPerLine);
 }
 
-void wxScrolledWindow::GtkHScroll( float value, unsigned int scroll_type )
+void wxScrolledWindow::DoScroll(int orient, int pos, int* posOld, int pixelsPerLine)
 {
-    wxASSERT_MSG( m_targetWindow != 0, _T("No target window") );
-
-    if (m_xScrollPixelsPerLine == 0)
-        return;
-
-    int x_pos = (int)(value+0.5);
-
-    if (x_pos == m_xScrollPosition)
-        return;
+    if (pos != -1 && pos != *posOld && pixelsPerLine > 0)
+    {
+        SetScrollPos(orient, pos);
+        pos = GetScrollPos(orient);
 
-    wxEventType command = GtkScrollWinTypeToWx(scroll_type);
+        const int diff = (*posOld - pos) * pixelsPerLine;
+        m_targetWindow->ScrollWindow(
+            orient == wxHORIZONTAL ? diff : 0,
+            orient == wxHORIZONTAL ? 0 : diff);
 
-    wxScrollWinEvent event( command, x_pos, wxHORIZONTAL );
-    event.SetEventObject( this );
-    GetEventHandler()->ProcessEvent( event );
+        *posOld = pos;
+    }
 }
 
 void wxScrolledWindow::EnableScrolling (bool x_scroll, bool y_scroll)
@@ -824,74 +725,7 @@
 
 void wxScrolledWindow::SetScrollPos( int orient, int pos, bool refresh )
 {
-    wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
-
-    wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") );
-
-    if (orient == wxHORIZONTAL)
-    {
-        int max = (int)(m_hAdjust->upper - m_hAdjust->page_size + 0.5);
-        if (max < 0) max = 0;
-
-        if (pos > max) pos = 0;
-        if (pos < 0) pos = 0;
-
-        if (pos == (int)(m_hAdjust->value+0.5)) return;
-        m_hAdjust->value = pos;
-    }
-    else
-    {
-        int max = (int)(m_vAdjust->upper - m_vAdjust->page_size + 0.5);
-        if (max < 0) max = 0;
-
-        if (pos > max) pos = 0;
-        if (pos < 0) pos = 0;
-
-        if (pos == (int)(m_vAdjust->value+0.5)) return;
-        m_vAdjust->value = pos;
-    }
-
-    if (m_wxwindow->window)
-    {
-        if (orient == wxHORIZONTAL)
-        {
-            // Just update the scrollbar, don't send any wxWidgets event
-            GtkHDisconnectEvent();
-            gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
-            GtkHConnectEvent();
-        }
-        else
-        {
-            // Just update the scrollbar, don't send any wxWidgets event
-            GtkVDisconnectEvent();
-            gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-            GtkVConnectEvent();
-        }
-    }
-}
-
-void wxScrolledWindow::GtkVConnectEvent()
-{
-    gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
-          (GtkSignalFunc) gtk_scrolled_window_vscroll_callback, (gpointer) this );
-}
-
-void wxScrolledWindow::GtkHConnectEvent()
-{
-    gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
-          (GtkSignalFunc) gtk_scrolled_window_hscroll_callback, (gpointer) this );
-}
-
-void wxScrolledWindow::GtkHDisconnectEvent()
-{
-    gtk_signal_disconnect_by_func( GTK_OBJECT(m_hAdjust),
-        (GtkSignalFunc) gtk_scrolled_window_hscroll_callback, (gpointer) this );
-}
-
-void wxScrolledWindow::GtkVDisconnectEvent()
-{
-    gtk_signal_disconnect_by_func( GTK_OBJECT(m_vAdjust),
-        (GtkSignalFunc) gtk_scrolled_window_vscroll_callback, (gpointer) this );
+    wxPanel::SetScrollPos(orient, pos, refresh);
 }
 
 bool wxScrolledWindow::Layout()
diff -ur wxWidgets-2.6.3/src/gtk/textctrl.cpp wxWidgets-2.6.3.3/src/gtk/textctrl.cpp
--- wxWidgets-2.6.3/src/gtk/textctrl.cpp	2005-08-08 04:53:44.000000000 -0400
+++ wxWidgets-2.6.3.3/src/gtk/textctrl.cpp	2006-07-14 00:21:47.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        textctrl.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling, Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -96,6 +96,19 @@
                                               NULL );
         gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
         g_free (font_string);
+
+        if (attr.GetFont().GetUnderlined())
+        {
+            g_snprintf(buf, sizeof(buf), "WXFONTUNDERLINE");
+            tag = gtk_text_tag_table_lookup( gtk_text_buffer_get_tag_table( text_buffer ),
+                                             buf );
+            if (!tag)
+                tag = gtk_text_buffer_create_tag( text_buffer, buf,
+                                                  "underline-set", TRUE,
+                                                  "underline", PANGO_UNDERLINE_SINGLE,
+                                                  NULL );
+            gtk_text_buffer_apply_tag (text_buffer, tag, start, end);
+        }
     }
 
     if (attr.HasTextColour())
@@ -1158,12 +1171,16 @@
     {
 #ifdef __WXGTK20__
         GtkTextIter iter;
-        gtk_text_buffer_get_iter_at_offset(m_buffer, &iter, pos);
-        if (gtk_text_iter_is_end(&iter))
+
+        if (pos > GetLastPosition())
             return false;
 
-        *y = gtk_text_iter_get_line(&iter);
-        *x = gtk_text_iter_get_line_offset(&iter);
+        gtk_text_buffer_get_iter_at_offset(m_buffer, &iter, pos);
+
+        if ( y )
+            *y = gtk_text_iter_get_line(&iter);
+        if ( x )
+            *x = gtk_text_iter_get_line_offset(&iter);
 #else
         wxString text = GetValue();
 
@@ -1191,8 +1208,10 @@
     {
         if ( pos <= GTK_ENTRY(m_text)->text_length )
         {
-            *y = 0;
-            *x = pos;
+            if ( y )
+                *y = 0;
+            if ( x )
+                *x = pos;
         }
         else
         {
diff -ur wxWidgets-2.6.3/src/gtk/window.cpp wxWidgets-2.6.3.3/src/gtk/window.cpp
--- wxWidgets-2.6.3/src/gtk/window.cpp	2006-03-18 16:58:19.000000000 -0500
+++ wxWidgets-2.6.3.3/src/gtk/window.cpp	2006-06-13 14:52:28.000000000 -0400
@@ -2,7 +2,7 @@
 // Name:        gtk/window.cpp
 // Purpose:
 // Author:      Robert Roebling
-// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// Id:          $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Robert Roebling, Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -248,6 +248,9 @@
 
 extern bool g_mainThreadLocked;
 
+bool g_mouseButtonDown;
+bool gs_blockValueChanged;
+
 //-----------------------------------------------------------------------------
 // debug
 //-----------------------------------------------------------------------------
@@ -710,6 +713,18 @@
 // "key_press_event" from any window
 //-----------------------------------------------------------------------------
 
+// These are used when transforming Ctrl-alpha to ascii values 1-26
+inline bool wxIsLowerChar(int code)
+{
+    return (code >= 'a' && code <= 'z' );
+}
+
+inline bool wxIsUpperChar(int code)
+{
+    return (code >= 'A' && code <= 'Z' );
+}
+
+
 // set WXTRACE to this to see the key event codes on the console
 #define TRACE_KEYS  _T("keyevent")
 
@@ -1014,9 +1029,6 @@
     event.m_scanCode = gdk_event->keyval;
     event.m_rawCode = (wxUint32) gdk_event->keyval;
     event.m_rawFlags = 0;
-#if wxUSE_UNICODE
-    event.m_uniChar = gdk_keyval_to_unicode(gdk_event->keyval);
-#endif
     wxGetMousePosition( &x, &y );
     win->ScreenToClient( &x, &y );
     event.m_x = x;
@@ -1324,13 +1336,17 @@
 
             // To conform to the docs we need to translate Ctrl-alpha
             // characters to values in the range 1-26.
-            if (event.ControlDown() && key_code >= 'a' && key_code <= 'z' )
+            if ( event.ControlDown() &&
+                 ( wxIsLowerChar(key_code) || wxIsUpperChar(key_code) ))
             {
-                event.m_keyCode = key_code - 'a' + 1;
+                if ( wxIsLowerChar(key_code) )
+                    event.m_keyCode = key_code - 'a' + 1;
+                if ( wxIsUpperChar(key_code) )
+                    event.m_keyCode = key_code - 'A' + 1;
 #if wxUSE_UNICODE
                 event.m_uniChar = event.m_keyCode;
 #endif
-            }               
+            }
 
             // Implement OnCharHook by checking ancesteror top level windows
             wxWindow *parent = win;
@@ -1470,8 +1486,14 @@
 
         // To conform to the docs we need to translate Ctrl-alpha
         // characters to values in the range 1-26.
-        if (event.ControlDown() && *pstr >= 'a' && *pstr <= 'z' )
+        if ( event.ControlDown() &&
+             ( wxIsLowerChar(*pstr) || wxIsUpperChar(*pstr) ))
         {
+            if ( wxIsLowerChar(*pstr) )
+                event.m_keyCode = *pstr - 'a' + 1;
+            if ( wxIsUpperChar(*pstr) )
+                event.m_keyCode = *pstr - 'A' + 1;
+
             event.m_keyCode = *pstr - 'a' + 1;
 #if wxUSE_UNICODE
             event.m_uniChar = event.m_keyCode;
@@ -1831,6 +1853,10 @@
     if ( !g_captureWindow )
         win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
 
+    // reset the event object and id in case win changed.
+    event.SetEventObject( win );
+    event.SetId( win->GetId() );
+    
     gs_timeLastClick = gdk_event->time;
 
 #ifndef __WXGTK20__
@@ -1926,6 +1952,10 @@
     if ( !g_captureWindow )
         win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
 
+    // reset the event object and id in case win changed.
+    event.SetEventObject( win );
+    event.SetId( win->GetId() );
+    
     if (win->GetEventHandler()->ProcessEvent( event ))
     {
         gtk_signal_emit_stop_by_name( GTK_OBJECT(widget), "button_release_event" );
@@ -2000,6 +2030,10 @@
     else // no capture
     {
         win = FindWindowForMouseEvent(win, event.m_x, event.m_y);
+
+        // reset the event object and id in case win changed.
+        event.SetEventObject( win );
+        event.SetId( win->GetId() );
     }
     
     if ( !g_captureWindow )
@@ -2344,11 +2378,11 @@
 }
 
 //-----------------------------------------------------------------------------
-// "value_changed" from m_vAdjust
+// "value_changed" from m_[hv]Adjust
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static void gtk_window_vscroll_callback( GtkAdjustment *adjust,
+static void gtk_window_scroll_callback( GtkAdjustment *adjust,
                                          SCROLLBAR_CBACK_ARG
                                          wxWindowGTK *win )
 {
@@ -2357,88 +2391,54 @@
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    if (g_blockEventsOnDrag) return;
-
-    if (!win->m_hasVMT) return;
-
-    float diff = adjust->value - win->m_oldVerticalPos;
-    if (fabs(diff) < 0.2) return;
-
-    win->m_oldVerticalPos = adjust->value;
-
-#ifndef __WXGTK20__
-    GtkScrolledWindow   *sw = GTK_SCROLLED_WINDOW(win->m_widget);
-#endif
-    wxEventType         command = GtkScrollWinTypeToWx(GET_SCROLL_TYPE(sw->vscrollbar));
-
-    int value = (int)(adjust->value+0.5);
-
-    wxScrollWinEvent event( command, value, wxVERTICAL );
-    event.SetEventObject( win );
-    win->GetEventHandler()->ProcessEvent( event );
+    win->HandleScrollEvent(adjust);
 }
 }
 
 //-----------------------------------------------------------------------------
-// "value_changed" from m_hAdjust
+// "button_press_event" from scrollbar
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static void gtk_window_hscroll_callback( GtkAdjustment *adjust,
-                                         SCROLLBAR_CBACK_ARG
-                                         wxWindowGTK *win )
+static gint gtk_scrollbar_button_press_callback( GtkRange *widget,
+                                                 GdkEventButton *gdk_event,
+                                                 wxWindowGTK *win)
 {
     DEBUG_MAIN_THREAD
 
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    if (g_blockEventsOnDrag) return;
-    if (!win->m_hasVMT) return;
-
-    float diff = adjust->value - win->m_oldHorizontalPos;
-    if (fabs(diff) < 0.2) return;
-
-#ifndef __WXGTK20__
-    GtkScrolledWindow   *sw = GTK_SCROLLED_WINDOW(win->m_widget);
-#endif
-    wxEventType         command = GtkScrollWinTypeToWx(GET_SCROLL_TYPE(sw->hscrollbar));
-
-    win->m_oldHorizontalPos = adjust->value;
-
-    int value = (int)(adjust->value+0.5);
+    g_blockEventsOnScroll = true;
+    g_mouseButtonDown = true;
 
-    wxScrollWinEvent event( command, value, wxHORIZONTAL );
-    event.SetEventObject( win );
-    win->GetEventHandler()->ProcessEvent( event );
+    return FALSE;
 }
 }
 
+#ifdef __WXGTK20__
 //-----------------------------------------------------------------------------
-// "button_press_event" from scrollbar
+// "event_after" from scrollbar
 //-----------------------------------------------------------------------------
 
 extern "C" {
-static gint gtk_scrollbar_button_press_callback( GtkRange *widget,
-                                                 GdkEventButton *gdk_event,
-                                                 wxWindowGTK *win)
+static void
+gtk_scrollbar_event_after(GtkRange* range, GdkEvent* event, wxWindow* win)
 {
-    DEBUG_MAIN_THREAD
-
-    if (g_isIdle)
-        wxapp_install_idle_handler();
-
-
-    g_blockEventsOnScroll = true;
-
-    // FIXME: there is no 'slider' field in GTK+ 2.0 any more
-#ifndef __WXGTK20__
-    win->m_isScrolling = (gdk_event->window == widget->slider);
-#endif
+    if (event->type == GDK_BUTTON_RELEASE)
+    {
+        g_signal_handlers_block_by_func(range, (void*)gtk_scrollbar_event_after, win);
 
-    return FALSE;
+        GtkAdjustment* adj = range->adjustment;
+        wxASSERT(adj == win->m_hAdjust || adj == win->m_vAdjust);
+        const int orient = adj == win->m_hAdjust ? wxHORIZONTAL : wxVERTICAL;
+        wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBRELEASE, win->GetScrollPos(orient), orient);
+        event.SetEventObject(win);
+        win->GetEventHandler()->ProcessEvent(event);
+    }
 }
 }
+#endif // __WXGTK20__
 
 //-----------------------------------------------------------------------------
 // "button_release_event" from scrollbar
@@ -2451,38 +2451,24 @@
 {
     DEBUG_MAIN_THREAD
 
-//  don't test here as we can release the mouse while being over
-//  a different window than the slider
-//
-//    if (gdk_event->window != widget->slider) return FALSE;
-
     g_blockEventsOnScroll = false;
+    g_mouseButtonDown = false;
 
     if (win->m_isScrolling)
     {
-        wxEventType command = wxEVT_SCROLLWIN_THUMBRELEASE;
-        int value = -1;
-        int dir = -1;
-
-        GtkScrolledWindow *scrolledWindow = GTK_SCROLLED_WINDOW(win->m_widget);
-        if (widget == GTK_RANGE(scrolledWindow->hscrollbar))
-        {
-            value = (int)(win->m_hAdjust->value+0.5);
-            dir = wxHORIZONTAL;
-        }
-        if (widget == GTK_RANGE(scrolledWindow->vscrollbar))
-        {
-            value = (int)(win->m_vAdjust->value+0.5);
-            dir = wxVERTICAL;
-        }
-
-        wxScrollWinEvent event( command, value, dir );
-        event.SetEventObject( win );
-        win->GetEventHandler()->ProcessEvent( event );
+        win->m_isScrolling = false;
+#ifdef __WXGTK20__
+        g_signal_handlers_unblock_by_func(widget, (void*)gtk_scrollbar_event_after, win);
+#else
+        GtkAdjustment* adj = widget->adjustment;
+        wxASSERT(adj == win->m_hAdjust || adj == win->m_vAdjust);
+        const int orient = adj == win->m_hAdjust ? wxHORIZONTAL : wxVERTICAL;
+        wxScrollWinEvent event(wxEVT_SCROLLWIN_THUMBRELEASE, win->GetScrollPos(orient), orient);
+        event.SetEventObject(win);
+        win->GetEventHandler()->ProcessEvent(event);
+#endif
     }
 
-    win->m_isScrolling = false;
-
     return FALSE;
 }
 }
@@ -2544,8 +2530,6 @@
     if (g_isIdle)
         wxapp_install_idle_handler();
 
-    if (!win->m_hasScrolling) return;
-
     int client_width = 0;
     int client_height = 0;
     win->GetClientSize( &client_width, &client_height );
@@ -2904,14 +2888,14 @@
     m_vAdjust->step_increment = 1.0;
     m_vAdjust->page_increment = 1.0;
     m_vAdjust->page_size = 5.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
+    gtk_adjustment_changed(m_vAdjust);
     m_hAdjust->lower = 0.0;
     m_hAdjust->upper = 1.0;
     m_hAdjust->value = 0.0;
     m_hAdjust->step_increment = 1.0;
     m_hAdjust->page_increment = 1.0;
     m_hAdjust->page_size = 5.0;
-    gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
+    gtk_adjustment_changed(m_hAdjust);
 
     // these handlers block mouse events to any window during scrolling such as
     // motion events and prevent GTK and wxWidgets from fighting over where the
@@ -2929,14 +2913,24 @@
     gtk_signal_connect( GTK_OBJECT(scrolledWindow->hscrollbar), "button_release_event",
           (GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
 
+#ifdef __WXGTK20__
+    gulong handler_id;
+    handler_id = g_signal_connect(
+        scrolledWindow->vscrollbar, "event_after", G_CALLBACK(gtk_scrollbar_event_after), this);
+    g_signal_handler_block(scrolledWindow->vscrollbar, handler_id);
+    handler_id = g_signal_connect(
+        scrolledWindow->hscrollbar, "event_after", G_CALLBACK(gtk_scrollbar_event_after), this);
+    g_signal_handler_block(scrolledWindow->hscrollbar, handler_id);
+#endif
+
     // these handlers get notified when screen updates are required either when
     // scrolling or when the window size (and therefore scrollbar configuration)
     // has changed
 
     gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
-          (GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this );
+          (GtkSignalFunc) gtk_window_scroll_callback, (gpointer) this );
     gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
-          (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this );
+          (GtkSignalFunc) gtk_window_scroll_callback, (gpointer) this );
 
     gtk_widget_show( m_wxwindow );
 
@@ -4745,118 +4739,97 @@
     return false;
 }
 
-void wxWindowGTK::SetScrollbar( int orient, int pos, int thumbVisible,
-      int range, bool refresh )
+static inline bool IsScrollIncrement(double increment, double x)
 {
-    wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
+    wxASSERT(increment > 0);
+    const double tolerance = 1.0 / 1024;
+    return fabs(increment - fabs(x)) < tolerance;
+}
 
-    wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") );
+void wxWindowGTK::HandleScrollEvent(GtkAdjustment* adj)
+{
+    wxASSERT(adj == m_hAdjust || adj == m_vAdjust);
+    float* oldPos = adj == m_hAdjust ? &m_oldHorizontalPos : &m_oldVerticalPos;
+    const double posPrev = *oldPos;
+    *oldPos = float(adj->value);
+    const int pos = int(adj->value + 0.5);
 
-    m_hasScrolling = true;
+    if (g_blockEventsOnDrag || !m_hasVMT || pos == int(posPrev + 0.5))
+        return;
 
-    if (orient == wxHORIZONTAL)
+    wxEventType eventType = wxEVT_SCROLLWIN_THUMBTRACK;
+    if (!m_isScrolling)
     {
-        float fpos = (float)pos;
-        float frange = (float)range;
-        float fthumb = (float)thumbVisible;
-        if (fpos > frange-fthumb) fpos = frange-fthumb;
-        if (fpos < 0.0) fpos = 0.0;
+        // Difference from last change event
+        const double diff = adj->value - posPrev;
+        const bool isDown = diff > 0;
 
-        if ((fabs(frange-m_hAdjust->upper) < 0.2) &&
-            (fabs(fthumb-m_hAdjust->page_size) < 0.2))
+        if (IsScrollIncrement(adj->step_increment, diff))
         {
-            SetScrollPos( orient, pos, refresh );
-            return;
+            eventType = isDown ? wxEVT_SCROLLWIN_LINEDOWN : wxEVT_SCROLLWIN_LINEUP;
         }
-
-        m_oldHorizontalPos = fpos;
-
-        m_hAdjust->lower = 0.0;
-        m_hAdjust->upper = frange;
-        m_hAdjust->value = fpos;
-        m_hAdjust->step_increment = 1.0;
-        m_hAdjust->page_increment = (float)(wxMax(fthumb,0));
-        m_hAdjust->page_size = fthumb;
-    }
-    else
-    {
-        float fpos = (float)pos;
-        float frange = (float)range;
-        float fthumb = (float)thumbVisible;
-        if (fpos > frange-fthumb) fpos = frange-fthumb;
-        if (fpos < 0.0) fpos = 0.0;
-
-        if ((fabs(frange-m_vAdjust->upper) < 0.2) &&
-            (fabs(fthumb-m_vAdjust->page_size) < 0.2))
+        else if (IsScrollIncrement(adj->page_increment, diff))
         {
-            SetScrollPos( orient, pos, refresh );
-            return;
+            eventType = isDown ? wxEVT_SCROLLWIN_PAGEDOWN : wxEVT_SCROLLWIN_PAGEUP;
+        }
+        else if (g_mouseButtonDown)
+        {
+            // Assume track event
+            m_isScrolling = true;
         }
-
-        m_oldVerticalPos = fpos;
-
-        m_vAdjust->lower = 0.0;
-        m_vAdjust->upper = frange;
-        m_vAdjust->value = fpos;
-        m_vAdjust->step_increment = 1.0;
-        m_vAdjust->page_increment = (float)(wxMax(fthumb,0));
-        m_vAdjust->page_size = fthumb;
     }
-
-    if (orient == wxHORIZONTAL)
-        gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
-    else
-        gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
+    const int orient = adj == m_hAdjust ? wxHORIZONTAL : wxVERTICAL;
+    wxScrollWinEvent event(eventType, pos, orient);
+    event.SetEventObject(this);
+    gs_blockValueChanged = true;
+    GetEventHandler()->ProcessEvent(event);
+    gs_blockValueChanged = false;
 }
 
-void wxWindowGTK::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
+void wxWindowGTK::SetScrollbar( int orient, int pos, int thumbVisible,
+      int range, bool refresh )
 {
     wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
 
     wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") );
 
-    if (orient == wxHORIZONTAL)
-    {
-        float fpos = (float)pos;
-        if (fpos > m_hAdjust->upper - m_hAdjust->page_size) fpos = m_hAdjust->upper - m_hAdjust->page_size;
-        if (fpos < 0.0) fpos = 0.0;
-        m_oldHorizontalPos = fpos;
+    m_hasScrolling = true;
 
-        if (fabs(fpos-m_hAdjust->value) < 0.2) return;
-        m_hAdjust->value = fpos;
-    }
-    else
-    {
-        float fpos = (float)pos;
-        if (fpos > m_vAdjust->upper - m_vAdjust->page_size) fpos = m_vAdjust->upper - m_vAdjust->page_size;
-        if (fpos < 0.0) fpos = 0.0;
-        m_oldVerticalPos = fpos;
+    if (pos > range - thumbVisible)
+        pos = range - thumbVisible;
+    if (pos < 0)
+        pos = 0;
+    GtkAdjustment* adj = orient == wxHORIZONTAL ? m_hAdjust : m_vAdjust;
+    adj->step_increment = 1;
+    adj->page_increment =
+    adj->page_size = thumbVisible;
+    adj->upper = range;
+    SetScrollPos(orient, pos);
+    gtk_adjustment_changed(adj);
+}
 
-        if (fabs(fpos-m_vAdjust->value) < 0.2) return;
-        m_vAdjust->value = fpos;
-    }
+void wxWindowGTK::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
+{
+    wxCHECK_RET( m_widget != NULL, wxT("invalid window") );
 
-    if (m_wxwindow->window)
-    {
-        if (orient == wxHORIZONTAL)
-        {
-            gtk_signal_disconnect_by_func( GTK_OBJECT(m_hAdjust),
-                (GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this );
+    wxCHECK_RET( m_wxwindow != NULL, wxT("window needs client area for scrolling") );
 
-            gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
+    if (GetScrollPos(orient) != pos)
+    {
+        GtkAdjustment* adj = orient == wxHORIZONTAL ? m_hAdjust : m_vAdjust;
+        const int max = int(adj->upper - adj->page_size);
+        if (pos > max)
+            pos = max;
+        if (pos < 0)
+            pos = 0;
+        float* oldPos = orient == wxHORIZONTAL ? &m_oldHorizontalPos : &m_oldVerticalPos;
+        *oldPos = pos;
+        adj->value = pos;
 
-            gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
-                (GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this );
-        }
-        else
+        // If a "value_changed" signal emission is not already in progress
+        if (!gs_blockValueChanged)
         {
-            gtk_signal_disconnect_by_func( GTK_OBJECT(m_vAdjust),
-                (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this );
-
-            gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
-
-            gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
-                (GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this );
+            gtk_adjustment_value_changed(adj);
         }
     }
 }
diff -ur wxWidgets-2.6.3/src/mac/corefoundation/cfstring.cpp wxWidgets-2.6.3.3/src/mac/corefoundation/cfstring.cpp
--- wxWidgets-2.6.3/src/mac/corefoundation/cfstring.cpp	2005-06-08 19:31:13.000000000 -0400
+++ wxWidgets-2.6.3.3/src/mac/corefoundation/cfstring.cpp	2006-06-11 02:32:45.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     2004-10-29 (from code in src/mac/carbon/utils.cpp)
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -666,6 +666,9 @@
 
 wxString wxMacCFStringHolder::AsString(wxFontEncoding encoding)
 {
+    if ( m_cfs == NULL )
+        return wxEmptyString ;
+
     Size cflen = CFStringGetLength( m_cfs )  ;
     size_t noChars ;
     wxChar* buf = NULL ;
diff -ur wxWidgets-2.6.3/src/mac/corefoundation/utilsexc_cf.cpp wxWidgets-2.6.3.3/src/mac/corefoundation/utilsexc_cf.cpp
--- wxWidgets-2.6.3/src/mac/corefoundation/utilsexc_cf.cpp	2005-04-22 11:19:11.000000000 -0400
+++ wxWidgets-2.6.3.3/src/mac/corefoundation/utilsexc_cf.cpp	2006-06-08 05:09:59.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      David Elliott, Ryan Norton (wxMacExecute)
 // Modified by: Stefan Csomor (added necessary wxT for unicode builds)
 // Created:     2004-11-04
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) David Elliott, Ryan Norton
 // Licence:     wxWindows licence
 // Notes:       This code comes from src/mac/carbon/utilsexc.cpp,1.11
@@ -18,8 +18,104 @@
 #include "wx/unix/execute.h"
 #include "wx/stdpaths.h"
 #include "wx/apptrait.h"
+#include "wx/process.h"
 
+// Use polling instead of Mach ports, which doesn't work on Intel
+// due to task_for_pid security issues.
 
+// What's a better test for Intel vs PPC?
+#ifdef WORDS_BIGENDIAN
+#define USE_POLLING 0
+#else
+#define USE_POLLING 1
+#endif
+
+#if USE_POLLING
+
+class wxProcessTerminationEventHandler: public wxEvtHandler
+{
+  public:
+    wxProcessTerminationEventHandler(wxEndProcessData* data)
+    {
+        m_data = data;
+        Connect(-1, wxEVT_END_PROCESS, wxProcessEventHandler(wxProcessTerminationEventHandler::OnTerminate));
+    }
+
+    void OnTerminate(wxProcessEvent& event)
+    {
+        Disconnect(-1, wxEVT_END_PROCESS, wxProcessEventHandler(wxProcessTerminationEventHandler::OnTerminate));
+        wxHandleProcessTermination(m_data);
+        delete this;
+    }
+
+    wxEndProcessData* m_data;
+};
+
+class wxProcessTerminationThread: public wxThread
+{
+  public:
+    wxProcessTerminationThread(wxEndProcessData* data, wxProcessTerminationEventHandler* handler): wxThread(wxTHREAD_DETACHED)
+    {
+        m_data = data;
+        m_handler = handler;
+    }
+
+    virtual void* Entry();
+
+    wxProcessTerminationEventHandler* m_handler;
+    wxEndProcessData* m_data;
+};
+
+// The problem with this is that we may be examining the
+// process e.g. in OnIdle at the point this cleans up the process,
+// so we need to delay until it's safe.
+
+void* wxProcessTerminationThread::Entry()
+{
+    while (true)
+    {
+        usleep(100);
+        int status = 0;
+        int rc = waitpid(abs(m_data->pid), & status, WNOHANG);
+        if (rc != 0)
+        {
+            if ((rc != -1) && WIFEXITED(status))
+                m_data->exitcode = WEXITSTATUS(status);
+            else
+                m_data->exitcode = -1;
+
+            wxProcessEvent event;
+            wxPostEvent(m_handler, event);
+
+            break;
+        }
+    }
+    
+    return NULL;
+}
+
+int wxAddProcessCallbackForPid(wxEndProcessData *proc_data, int pid)
+{
+    if (pid < 1)
+        return -1;
+
+    wxProcessTerminationEventHandler* handler = new wxProcessTerminationEventHandler(proc_data);    
+    wxProcessTerminationThread* thread = new wxProcessTerminationThread(proc_data, handler);
+    
+    if (thread->Create() != wxTHREAD_NO_ERROR)
+    {
+        wxLogDebug(wxT("Could not create termination detection thread."));
+        delete thread;
+        delete handler;
+        return -1;
+    }
+
+    thread->Run();
+    
+    return 0;
+}
+
+#else
 
 #include <CoreFoundation/CFMachPort.h>
 #include <sys/wait.h>
@@ -113,6 +209,9 @@
     return 0;
 }
 
+#endif
+  // USE_POLLING
+
 // NOTE: This doens't really belong here but this was a handy file to
 // put it in because it's already compiled for wxCocoa and wxMac GUI lib.
 static wxStandardPathsCF gs_stdPaths;
diff -ur wxWidgets-2.6.3/src/unix/fontutil.cpp wxWidgets-2.6.3.3/src/unix/fontutil.cpp
--- wxWidgets-2.6.3/src/unix/fontutil.cpp	2006-02-12 19:24:55.000000000 -0500
+++ wxWidgets-2.6.3.3/src/unix/fontutil.cpp	2006-04-18 18:59:06.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     05.11.99
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Vadim Zeitlin
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -337,8 +337,9 @@
             info->encoding = wxFONTENCODING_SYSTEM;
             return true;
 
+        case wxFONTENCODING_ISO8859_1:
         case wxFONTENCODING_UTF8:
-            info->encoding = wxFONTENCODING_UTF8;
+            info->encoding = encoding;
             return true;
 
         default:
diff -ur wxWidgets-2.6.3/src/unix/mimetype.cpp wxWidgets-2.6.3.3/src/unix/mimetype.cpp
--- wxWidgets-2.6.3/src/unix/mimetype.cpp	2006-03-17 10:05:03.000000000 -0500
+++ wxWidgets-2.6.3.3/src/unix/mimetype.cpp	2006-06-18 17:38:11.000000000 -0400
@@ -4,7 +4,7 @@
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     23.09.98
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Licence:     wxWindows licence (part of wxExtra library)
 /////////////////////////////////////////////////////////////////////////////
@@ -395,7 +395,7 @@
 
             wxLogTrace(TRACE_MIME, wxT("--- Reading from Gnome file %s '%s' ---"),
                     filename.c_str(), pc);
-            
+
             // trim trailing space and tab
             while ((*pc == wxT(' ')) || (*pc == wxT('\t')))
                 pc++;
@@ -406,18 +406,18 @@
             {
                 wxString left_of_equal = sTmp.Left( equal_pos );
                 const wxChar *right_of_equal = pc;
-                right_of_equal += equal_pos+1; 
-                
+                right_of_equal += equal_pos+1;
+
                 if (left_of_equal == wxT("icon_filename"))
                 {
                     // GNOME 2:
                     curIconFile = right_of_equal;
-                    
+
                     wxFileName newFile( curIconFile );
                     if (newFile.IsRelative() || newFile.FileExists())
                     {
                         size_t nDirs = search_dirs.GetCount();
-                        
+
                         for (size_t nDir = 0; nDir < nDirs; nDir++)
                         {
                             newFile.SetPath( search_dirs[nDir] );
@@ -2641,6 +2641,8 @@
 
 bool wxMimeTypesManagerImpl::Unassociate(wxFileType *ft)
 {
+    InitIfNeeded();
+
     wxArrayString sMimeTypes;
     ft->GetMimeTypes (sMimeTypes);
 
diff -ur wxWidgets-2.6.3/utils/helpview/src/helpview.cpp wxWidgets-2.6.3.3/utils/helpview/src/helpview.cpp
--- wxWidgets-2.6.3/utils/helpview/src/helpview.cpp	2005-05-30 05:24:08.000000000 -0400
+++ wxWidgets-2.6.3.3/utils/helpview/src/helpview.cpp	2006-03-30 06:35:12.000000000 -0500
@@ -5,7 +5,7 @@
 // Author:      Vaclav Slavik, Julian Smart
 // Modified by:
 // Created:     2002-07-09
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) 2002 Vaclav Slavik, Julian Smart and others
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -63,7 +63,7 @@
 
 #ifdef __WXMAC__
     wxApp::s_macAboutMenuItemId = wxID_ABOUT;
-    wxFileName::MacRegisterDefaultTypeAndCreator( "htb" , 'HTBD' , 'HTBA' ) ;
+    wxFileName::MacRegisterDefaultTypeAndCreator( wxT("htb") , 'HTBD' , 'HTBA' ) ;
 #endif
 
     int istyle = wxHF_DEFAULT_STYLE;
diff -ur wxWidgets-2.6.3/utils/tex2rtf/src/tex2rtf.cpp wxWidgets-2.6.3.3/utils/tex2rtf/src/tex2rtf.cpp
--- wxWidgets-2.6.3/utils/tex2rtf/src/tex2rtf.cpp	2006-01-23 10:09:03.000000000 -0500
+++ wxWidgets-2.6.3.3/utils/tex2rtf/src/tex2rtf.cpp	2006-06-13 06:36:42.000000000 -0400
@@ -5,7 +5,7 @@
 // Modified by: Wlodzimiez ABX Skiba 2003/2004 Unicode support
 //              Ron Lee
 // Created:     7.9.93
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -186,6 +186,8 @@
       }
   }
 
+  TexPathList.Add(::wxGetCwd());
+
 #ifdef NO_GUI
   if (InputFile.empty() || OutputFile.empty())
   {
diff -ur wxWidgets-2.6.3/utils/tex2rtf/src/texutils.cpp wxWidgets-2.6.3.3/utils/tex2rtf/src/texutils.cpp
--- wxWidgets-2.6.3/utils/tex2rtf/src/texutils.cpp	2006-01-26 22:08:36.000000000 -0500
+++ wxWidgets-2.6.3.3/utils/tex2rtf/src/texutils.cpp	2006-06-13 06:34:58.000000000 -0400
@@ -5,7 +5,7 @@
 // Modified by: Wlodzimiez ABX Skiba 2003/2004 Unicode support
 //              Ron Lee
 // Created:     7.9.93
-// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+// RCS-ID:      $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 // Copyright:   (c) Julian Smart
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -1204,6 +1204,7 @@
     up.MakeUpper();
 
     if (up.IsSameAs(_T("YES")) ||
+        up.IsSameAs(_T("TRUE")) ||
         up.IsSameAs(_T("ON")) ||
         up.IsSameAs(_T("OK")) |
         up.IsSameAs(_T("1")))
diff -ur wxWidgets-2.6.3/version-script.in wxWidgets-2.6.3.3/version-script.in
--- wxWidgets-2.6.3/version-script.in	2006-03-18 09:25:50.000000000 -0500
+++ wxWidgets-2.6.3.3/version-script.in	2006-07-06 06:40:39.000000000 -0400
@@ -1,11 +1,21 @@
 #
-# $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
+# $Id: wxGTK-2.6.3.3-cvs.patch,v 1.1 2006/07/21 14:46:04 mattdm Exp $
 #
 
 # Note: Remove all of the tags below except for the last one when creating
 #       new development branch.
 
 
+# public symbols added in release 2.6.4 (please keep in alphabetical order):
+
+@WX_VERSION_TAG@.4 {
+    global:
+        *wxString*const_reverse_iterator*;
+        *wxString*rbegin*;
+        *wxString*rend*;
+        *wxString*reverse_iterator*;
+};
+
 # public symbols added in release 2.6.3 (please keep in alphabetical order):
 
 @WX_VERSION_TAG@.3 {