diff --git a/wxGTK-2.6.3.3-cvs.patch b/wxGTK-2.6.3.3-cvs.patch
new file mode 100644
index 0000000..1444bee
--- /dev/null
+++ b/wxGTK-2.6.3.3-cvs.patch
@@ -0,0 +1,6251 @@
+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: configure.in,v 1.1063.2.15 2006/03/21 19:33:57 KO Exp $)dnl
++AC_REVISION($Id: configure.in,v 1.1063.2.23 2006/07/12 08:59:50 SN Exp $)dnl
+ 
+ dnl ---------------------------------------------------------------------------
+ dnl
+@@ -8,7 +8,7 @@
+ dnl
+ dnl This script is under the wxWidgets licence.
+ dnl
+-dnl Version: $Id: configure.in,v 1.1063.2.15 2006/03/21 19:33:57 KO Exp $
++dnl Version: $Id: configure.in,v 1.1063.2.23 2006/07/12 08:59:50 SN 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: editlbox.cpp,v 1.21 2005/01/14 13:06:52 ABX Exp $
++// RCS-ID:      $Id: editlbox.cpp,v 1.21.2.1 2006/05/23 19:30:03 ABX 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: ScintillaWX.cpp,v 1.85.2.1 2006/03/12 06:03:52 RD Exp $
++// RCS-ID:      $Id: ScintillaWX.cpp,v 1.85.2.3 2006/06/28 19:32:18 RD 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: stc.cpp,v 1.97.2.1 2006/03/12 06:03:51 RD Exp $
++// RCS-ID:      $Id: stc.cpp,v 1.97.2.2 2006/06/28 19:32:18 RD 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: stc.cpp.in,v 1.66.2.1 2006/03/12 06:03:51 RD Exp $
++// RCS-ID:      $Id: stc.cpp.in,v 1.66.2.2 2006/06/28 19:32:17 RD 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: control.h,v 1.45 2005/06/26 15:46:07 RR Exp $
++// RCS-ID:      $Id: control.h,v 1.45.2.1 2006/04/19 09:33:32 RL 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: dc.h,v 1.69 2005/06/26 15:46:07 RR Exp $
++// RCS-ID:      $Id: dc.h,v 1.69.2.1 2006/04/19 09:33:32 RL 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: defs.h,v 1.513.2.4 2006/01/26 13:15:47 JS Exp $
++*  RCS-ID:      $Id: defs.h,v 1.513.2.5 2006/05/29 17:34:40 MW 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: dlimpexp.h,v 1.13 2005/06/22 20:58:47 MW Exp $
++ * RCS-ID:      $Id: dlimpexp.h,v 1.13.2.1 2006/06/26 00:03:33 VZ 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: fontdlgg.h,v 1.18.2.1 2006/03/02 12:57:18 JS Exp $
++// RCS-ID:      $Id: fontdlgg.h,v 1.18.2.2 2006/05/23 11:16:34 JS 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: grid.h,v 1.147.2.1 2005/09/25 20:46:22 MW Exp $
++// RCS-ID:      $Id: grid.h,v 1.147.2.2 2006/05/29 17:34:45 MW 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: scrolwin.h,v 1.22 2005/03/17 21:21:42 JS Exp $
++// RCS-ID:      $Id: scrolwin.h,v 1.22.2.2 2006/06/04 17:00:09 PC 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: window.h,v 1.128.2.1 2006/03/18 13:59:33 RR Exp $
++// Id:          $Id: window.h,v 1.128.2.2 2006/05/29 07:31:23 PC 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: list.h,v 1.93.2.2 2006/01/18 08:33:59 JS Exp $
++// RCS-ID:      $Id: list.h,v 1.93.2.3 2006/07/02 01:27:37 VZ 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: metafile.h,v 1.14 2005/08/19 13:48:19 MW Exp $
++// RCS-ID:      $Id: metafile.h,v 1.14.2.1 2006/06/26 14:37:34 VZ 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: notebook.h,v 1.53 2005/06/26 15:46:08 RR Exp $
++// RCS-ID:      $Id: notebook.h,v 1.53.2.1 2006/04/19 09:33:32 RL 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: object.h,v 1.119 2005/07/22 16:56:23 ABX Exp $
++// RCS-ID:      $Id: object.h,v 1.119.2.1 2006/04/19 09:33:33 RL 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: platform.h,v 1.81.2.3 2006/01/18 10:25:00 JS Exp $
++* RCS-ID:      $Id: platform.h,v 1.81.2.4 2006/05/19 16:57:07 PC 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: prntbase.h,v 1.45 2005/07/28 22:20:05 VZ Exp $
++// RCS-ID:      $Id: prntbase.h,v 1.45.2.1 2006/06/28 12:56:04 JS 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: rawbmp.h,v 1.30.2.1 2006/01/26 12:26:37 RR Exp $
++// RCS-ID:      $Id: rawbmp.h,v 1.30.2.2 2006/05/29 17:54:54 MW 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: setup_inc.h,v 1.24 2005/07/30 00:36:30 VZ Exp $
++// RCS-ID:      $Id: setup_inc.h,v 1.24.2.1 2006/04/19 14:36:49 RL 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: stream.h,v 1.71 2005/06/26 15:46:08 RR Exp $
++// RCS-ID:      $Id: stream.h,v 1.71.2.1 2006/04/19 09:33:33 RL 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: string.h,v 1.206.2.3 2005/12/15 19:26:27 VZ Exp $
++// RCS-ID:      $Id: string.h,v 1.206.2.4 2006/07/06 10:29:58 ABX 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: tglbtn.h,v 1.11 2005/05/04 18:52:05 JS Exp $
++// RCS-ID:      $Id: tglbtn.h,v 1.11.2.1 2006/05/23 17:53:50 JS 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: toplevel.h,v 1.53 2005/06/26 15:46:08 RR Exp $
++// RCS-ID:      $Id: toplevel.h,v 1.53.2.1 2006/04/19 09:33:33 RL 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: version.h,v 1.69.2.2 2006/01/18 10:25:00 JS Exp $
++*  RCS-ID:      $Id: version.h,v 1.69.2.4 2006/05/03 02:25:43 RD 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: window.h,v 1.189.2.2 2006/01/31 04:02:41 RD Exp $
++// RCS-ID:      $Id: window.h,v 1.189.2.3 2006/04/19 09:33:34 RL 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: wx_cw_cm.h,v 1.22.2.1 2006/01/18 14:12:23 JS Exp $
++ RCS-ID:      $Id: wx_cw_cm.h,v 1.22.2.2 2006/05/09 14:30:49 VZ 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: controls.cpp,v 1.233 2005/08/17 13:13:42 VZ Exp $
++// RCS-ID:      $Id: controls.cpp,v 1.233.2.1 2006/06/18 11:52:25 SN 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: listtest.cpp,v 1.83.2.4 2006/03/18 16:57:18 VZ Exp $
++// RCS-ID:      $Id: listtest.cpp,v 1.83.2.5 2006/04/02 15:51:15 JS 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: dobjcmn.cpp,v 1.35.2.1 2006/03/24 23:51:30 RD Exp $
++// RCS-ID:      $Id: dobjcmn.cpp,v 1.35.2.2 2006/03/30 09:52:54 RR 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: event.cpp,v 1.166 2005/06/30 00:52:05 MW Exp $
++// RCS-ID:      $Id: event.cpp,v 1.166.2.1 2006/05/29 17:34:47 MW 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: filefn.cpp,v 1.249.2.5 2006/02/27 15:16:37 VZ Exp $
++// RCS-ID:      $Id: filefn.cpp,v 1.249.2.6 2006/06/15 21:42:21 MW 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: gifdecod.cpp,v 1.37.2.1 2006/01/23 07:18:36 vell Exp $
++// RCS-ID:      $Id: gifdecod.cpp,v 1.37.2.2 2006/04/02 01:21:53 VZ 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: imagjpeg.cpp,v 1.47 2005/03/04 19:23:28 ABX Exp $
++// RCS-ID:      $Id: imagjpeg.cpp,v 1.47.2.1 2006/04/02 01:27:36 VZ 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: imagtiff.cpp,v 1.37.2.1 2005/10/18 14:33:30 MW Exp $
++// RCS-ID:      $Id: imagtiff.cpp,v 1.37.2.2 2006/06/27 21:47:27 VZ 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: init.cpp,v 1.58 2005/06/13 12:19:20 ABX Exp $
++// RCS-ID:      $Id: init.cpp,v 1.58.2.2 2006/06/06 11:01:29 JS 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: mimecmn.cpp,v 1.40 2005/07/21 16:19:40 ABX Exp $
++// RCS-ID:      $Id: mimecmn.cpp,v 1.40.2.2 2006/06/19 07:16:37 VZ 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: object.cpp,v 1.95 2005/09/17 20:58:55 VZ Exp $
++// RCS-ID:      $Id: object.cpp,v 1.95.2.1 2006/05/29 17:34:48 MW 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: prntbase.cpp,v 1.89 2005/07/28 22:20:03 VZ Exp $
++// RCS-ID:      $Id: prntbase.cpp,v 1.89.2.1 2006/06/28 12:56:05 JS 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: socket.cpp,v 1.133.2.2 2006/02/16 08:53:35 JS Exp $
++// RCS_ID:     $Id: socket.cpp,v 1.133.2.5 2006/05/29 17:34:48 MW 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: strconv.cpp,v 1.160.2.2 2006/01/18 16:32:46 JS Exp $
++// RCS-ID:      $Id: strconv.cpp,v 1.160.2.3 2006/04/22 02:14:00 VZ 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: string.cpp,v 1.258.2.1 2005/11/30 13:30:08 VZ Exp $
++// RCS-ID:      $Id: string.cpp,v 1.258.2.4 2006/07/06 10:30:37 ABX 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: url.cpp,v 1.54 2005/07/28 21:52:50 VZ Exp $
++// RCS-ID:      $Id: url.cpp,v 1.54.2.1 2006/06/11 18:52:42 KH 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: utilscmn.cpp,v 1.145.2.1 2005/10/06 13:29:33 VZ Exp $
++// RCS-ID:      $Id: utilscmn.cpp,v 1.145.2.4 2006/06/26 00:01:03 VZ 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: wincmn.cpp,v 1.237.2.5 2006/03/04 20:52:21 ABX Exp $
++// RCS-ID:      $Id: wincmn.cpp,v 1.237.2.7 2006/05/29 17:34:49 MW 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: calctrl.cpp,v 1.70.2.3 2006/01/18 10:38:54 JS Exp $
++// RCS-ID:      $Id: calctrl.cpp,v 1.70.2.4 2006/06/14 11:41:42 JS 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: dirctrlg.cpp,v 1.129.2.5 2006/03/05 20:50:25 VZ Exp $
++// RCS-ID:      $Id: dirctrlg.cpp,v 1.129.2.6 2006/06/27 07:55:15 JS 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: dragimgg.cpp,v 1.17.2.1 2006/01/21 16:46:38 JS Exp $
++// RCS-ID:      $Id: dragimgg.cpp,v 1.17.2.2 2006/05/29 17:34:52 MW 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: filedlgg.cpp,v 1.143.2.2 2006/03/06 10:44:48 JS Exp $
++// RCS-ID:      $Id: filedlgg.cpp,v 1.143.2.3 2006/05/23 10:33:47 JS 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: fontdlgg.cpp,v 1.51.2.2 2006/03/02 12:57:19 JS Exp $
++// RCS-ID:      $Id: fontdlgg.cpp,v 1.51.2.3 2006/05/29 17:34:52 MW 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: grid.cpp,v 1.345.2.3 2006/03/07 14:50:50 JS Exp $
++// RCS-ID:      $Id: grid.cpp,v 1.345.2.5 2006/07/08 16:34:29 RD 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: listctrl.cpp,v 1.378.2.7 2006/03/10 21:37:20 RD Exp $
++// Id:          $Id: listctrl.cpp,v 1.378.2.9 2006/04/02 13:39:01 VZ 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: notebook.cpp,v 1.36 2005/09/17 21:00:47 VZ Exp $
++// RCS-ID:      $Id: notebook.cpp,v 1.36.2.1 2006/05/29 20:37:07 MW 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: progdlgg.cpp,v 1.93 2005/04/07 14:52:22 ABX Exp $
++// RCS-ID:      $Id: progdlgg.cpp,v 1.93.2.1 2006/05/29 17:34:54 MW 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: sashwin.cpp,v 1.46 2004/12/14 20:41:53 ABX Exp $
++// RCS-ID:      $Id: sashwin.cpp,v 1.46.2.1 2006/05/29 17:34:55 MW 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: scrlwing.cpp,v 1.69.2.1 2006/03/13 15:10:38 JS Exp $
++// RCS-ID:      $Id: scrlwing.cpp,v 1.69.2.3 2006/06/09 14:04:57 JS 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: statusbr.cpp,v 1.68 2005/06/07 19:01:45 ABX Exp $
++// RCS-ID:      $Id: statusbr.cpp,v 1.68.2.1 2006/05/29 17:34:55 MW 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: treectlg.cpp,v 1.173.2.4 2006/02/27 21:49:48 RR Exp $
++// Id:          $Id: treectlg.cpp,v 1.173.2.5 2006/05/29 17:34:56 MW 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: vlbox.cpp,v 1.22.2.1 2006/01/18 09:50:37 JS Exp $
++// RCS-ID:      $Id: vlbox.cpp,v 1.22.2.2 2006/04/14 15:24:13 VZ 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: clipbrd.cpp,v 1.60.2.3 2006/03/24 23:51:29 RD Exp $
++// Id:          $Id: clipbrd.cpp,v 1.60.2.5 2006/04/15 09:57:41 SN 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: colour.cpp,v 1.49 2005/07/22 18:01:45 ABX Exp $
++// Id:          $Id: colour.cpp,v 1.49.2.1 2006/06/15 19:35:34 PC 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: combobox.cpp,v 1.131.2.2 2006/03/17 16:00:51 RR Exp $
++// Id:          $Id: combobox.cpp,v 1.131.2.3 2006/06/26 12:32:42 VZ 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: dcclient.cpp,v 1.204 2005/08/17 21:40:44 MR Exp $
++// RCS-ID:      $Id: dcclient.cpp,v 1.204.2.1 2006/05/25 02:40:41 PC 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: filedlg.cpp,v 1.67.2.1 2005/11/14 23:02:03 RR Exp $
++// Id:          $Id: filedlg.cpp,v 1.67.2.3 2006/05/19 02:39:24 MR 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: scrolwin.cpp,v 1.44.2.1 2005/11/02 15:57:38 JS Exp $
++// RCS-ID:      $Id: scrolwin.cpp,v 1.44.2.5 2006/06/10 19:52:49 PC 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: textctrl.cpp,v 1.217 2005/08/08 08:53:44 MR Exp $
++// Id:          $Id: textctrl.cpp,v 1.217.2.3 2006/07/14 04:21:47 MR 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: window.cpp,v 1.548.2.13 2006/03/18 21:58:19 VZ Exp $
++// Id:          $Id: window.cpp,v 1.548.2.20 2006/06/13 18:52:28 RD 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: cfstring.cpp,v 1.4 2005/06/08 23:31:13 SC Exp $
++// RCS-ID:      $Id: cfstring.cpp,v 1.4.2.1 2006/06/11 06:32:45 SC 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: utilsexc_cf.cpp,v 1.7 2005/04/22 15:19:11 RN Exp $
++// RCS-ID:      $Id: utilsexc_cf.cpp,v 1.7.2.1 2006/06/08 09:09:59 JS 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: fontutil.cpp,v 1.62.2.1 2006/02/13 00:24:55 VZ Exp $
++// RCS-ID:      $Id: fontutil.cpp,v 1.62.2.2 2006/04/18 22:59:06 VZ 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: mimetype.cpp,v 1.53.2.3 2006/03/17 15:05:03 RR Exp $
++// RCS-ID:      $Id: mimetype.cpp,v 1.53.2.4 2006/06/18 21:38:11 VZ 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: helpview.cpp,v 1.14 2005/05/30 09:24:08 ABX Exp $
++// RCS-ID:      $Id: helpview.cpp,v 1.14.2.1 2006/03/30 11:35:12 JS 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: tex2rtf.cpp,v 1.53.2.1 2006/01/23 15:09:03 ABX Exp $
++// RCS-ID:      $Id: tex2rtf.cpp,v 1.53.2.2 2006/06/13 10:36:42 ABX 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: texutils.cpp,v 1.32.2.2 2006/01/27 03:08:36 MW Exp $
++// RCS-ID:      $Id: texutils.cpp,v 1.32.2.3 2006/06/13 10:34:58 ABX 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: version-script.in,v 1.23.2.5 2006/03/18 14:25:50 RR Exp $
++# $Id: version-script.in,v 1.23.2.7 2006/07/06 10:40:39 ABX 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 {