From e0279b5d4e194be1446d0f96697207258a8285c1 Mon Sep 17 00:00:00 2001 From: Matthew Miller Date: Jul 21 2006 14:46:04 +0000 Subject: add patch to update to 2.6.3.3 from CVS (for corresponding wxPython release) --- 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 + * 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 + // 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 + // Licence: wxWindows licence + /////////////////////////////////////////////////////////////////////////////// +@@ -71,7 +71,7 @@ + } + */ + +-#ifdef __VISUALC__ ++#if defined __VISUALC__ && __VISUALC__ >= 1200 + // VC++ gives an absolutely harmless warning for wxPixelData 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 + // 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 + // Vaclav Slavik + // 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 ++ #endif ++ ++ #include + // 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 + // 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 + // 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 + // 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 + // (c) 2004 Ryan Norton + // 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 + #include +@@ -100,6 +107,8 @@ + + #if defined(__WXMSW__) + #include "wx/msw/private.h" ++ #include "wx/msw/registry.h" ++ #include // 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 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 (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 + // 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 + // 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 + #include +@@ -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 + // 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 {