diff --git a/docs/doxygen/overviews/changes_since28.h b/docs/doxygen/overviews/changes_since28.h
index 4a0320db19..72fadf3df7 100644
--- a/docs/doxygen/overviews/changes_since28.h
+++ b/docs/doxygen/overviews/changes_since28.h
@@ -11,7 +11,12 @@
@page overview_changes_since28 Changes Since wxWidgets 2.8
This topic describes backwards-incompatible changes in wxWidgets 3.0 compared
-to the last stable release.
+to the last stable release and is very important to read if you are updating
+from the 2.8 or an older version. And even if you hadn't used any previous
+version of wxWidgets and are starting directly with 3.0, it can still be useful
+to have at least a quick look at it just to know that some of the older
+examples and tutorials may not be applicable any more to wxWidgets 3.0.
+
The incompatible changes can be grouped into the following categories:
diff --git a/docs/doxygen/overviews/xrc.h b/docs/doxygen/overviews/xrc.h
index c1d7c07fdb..82502dac57 100644
--- a/docs/doxygen/overviews/xrc.h
+++ b/docs/doxygen/overviews/xrc.h
@@ -464,7 +464,7 @@ IMPLEMENT_DYNAMIC_CLASS(MyControlXmlHandler, wxXmlResourceHandler)
MyControlXmlHandler::MyControlXmlHandler()
{
- // this call adds support for all wxWindows class styles
+ // this call adds support for all wxWidgets class styles
// (e.g. wxBORDER_SIMPLE, wxBORDER_SUNKEN, wxWS_EX_* etc etc)
AddWindowStyles();
diff --git a/docs/doxygen/regen.bat b/docs/doxygen/regen.bat
index 57550b5242..c73a04c9d1 100644
--- a/docs/doxygen/regen.bat
+++ b/docs/doxygen/regen.bat
@@ -66,6 +66,23 @@ IF "%1" == "all" (
)
)
+REM Check for Graphviz (its location should be in %PATH%).
+REM
+REM NB: Always do this check because it looks like errorlevel is not set
+REM when the test is done inside the IF block.
+dot NUL 2>&1
+IF %GENERATE_HTML%==YES (
+ IF NOT %errorlevel%==0 (
+ IF %errorlevel%==9009 (
+ echo Error: dot was not found in PATH, please install Graphviz!
+ ) ELSE (
+ echo Error: %errorlevel% error code when running dot, please check Graphviz installation.
+ )
+
+ EXIT /B
+ )
+)
+
REM
REM NOW RUN DOXYGEN
REM
@@ -75,3 +92,14 @@ REM not included!
REM
set PATH=%PATH%;%HHC_PATH%
doxygen Doxyfile
+
+REM Check that class inheritance diagram images are present for html/chm docs.
+REM
+REM NB: Set the file to check outside the IF block,
+REM otherwise the second check does not always pick its value.
+set filetofind=out\html\classwx_app_console__inherit__graph.png
+IF %GENERATE_HTML%==YES (
+ IF NOT EXIST %~dp0%filetofind% (
+ echo Warning: Class inheritance diagram images are missing, please check Graphviz installation.
+ )
+)
diff --git a/docs/gtk/wxGNOME/wxGNOME.html b/docs/gtk/wxGNOME/wxGNOME.html
index bb230bf4a3..2b9df2577a 100644
--- a/docs/gtk/wxGNOME/wxGNOME.html
+++ b/docs/gtk/wxGNOME/wxGNOME.html
@@ -22,7 +22,7 @@ and another one, which only uses X11 calls and which draws its
widgets entirely itself, without using any outside library. This port
is called wxX11 or sometimes more generally wxUniv (short for
wxUniversal), since this widget set (implemented entirely within
-wxWidgets) is available whereever wxWidgets is available. Since this
+wxWidgets) is available wherever wxWidgets is available. Since this
short overview is mainly about how to write wxWidgets applications
for the GNOME[3]
desktop, I will focus on the GTK+ port, which is generally referred
@@ -43,11 +43,11 @@ most aspects of GUI and non-GUI application programming. Sometimes,
various aspects of these design goals contradict each other and this
holds true especially for the Linux platform which – from the
point of view of the desktop environment integration – is
-lagging behind the other two major desktops (Windows and MacOS X)
+lagging behind the other two major desktops (Windows and OS X)
mostly because of the schism between the GTK+ based GNOME desktop and
the Qt[5] based
KDE[6] desktop. So far,
-the typical wxWidgets user targeted Windows, maybe MacOS X and Linux
+the typical wxWidgets user targeted Windows, maybe OS X and Linux
in general, so the aim was to make wxGTK applications run as
well as possible on as many versions of Linux as possible, including
those using the KDE environment. Luckily, most of these distributions
diff --git a/docs/msw/install.txt b/docs/msw/install.txt
index b216291e25..6d24e72035 100644
--- a/docs/msw/install.txt
+++ b/docs/msw/install.txt
@@ -1,27 +1,9 @@
-Installing wxWidgets for Windows
------------------------------------------------------------
+ Installing wxWidgets for Windows
+ --------------------------------
This is wxWidgets for Microsoft Windows 9x/ME, Windows NT
-and later (2000, XP, Vista, 7, etc) and Windows CE.
-
-These installation notes can be found in docs/msw/install.txt
-in your wxWidgets distribution.
-
-IMPORTANT NOTE: If you experience problems installing, please
-re-read these instructions and other related files (changes.txt,
-readme.txt, FAQ) carefully before posting to wx-users list.
-
-If you are sure that you found a bug, please report it at
-wxWidgets Trac:
-
- http://trac.wxwidgets.org/newticket
-
-Please notice that often trying to correct the bug yourself is the
-quickest way to fix it. Even if you fail to do it, you may
-discover valuable information allowing us to fix it while doing
-it. We also give much higher priority to bug reports with patches
-fixing the problems so this ensures that your report will be
-addressed sooner.
+and later (2000, XP, Vista, 7, 8, etc) including both 32 bit and 64
+bit versions.
Table of Contents:
@@ -34,27 +16,37 @@ Table of Contents:
Installation
============
-Please simply uncompress the .zip file manually into any directory.
-However we advise avoiding using directories with spaces in their
-names (notably "C:\Program Files") as this risks creating problems
+If you are using one of the supported compilers, you can download the
+pre-built in binaries from
+
+ https://sourceforge.net/projects/wxwindows/files/3.0.0/binaries/
+
+or
+
+ ftp://ftp.wxwidgets.org/pub/3.0.0/binaries/
+
+In this case, just uncompress the binaries archive under any directory
+and skip to "Building Applications Using wxWidgets" part.
+
+Otherwise, or if you want to build a configuration of the library
+different from the default one, you need to build the library from
+sources before using it.
+
+The first step, which you may have already performed, unless you are
+reading this file online, is to download the source archive and
+uncompress it in any directory. It is strongly advised to avoid using
+spaces in the name of this directory, i.e. notably do *not* choose a
+location under "C:\Program Files", as this risks creating problems
with makefiles and other command-line tools.
-
-In the majority of cases, you don't need to change the default
-library build configuration. If you wish to change some of the build
-options you need to edit the include/wx/msw/setup.h file enabling or
-disabling the features you would like to compile wxWidgets with[out].
+After choosing the directory location, please define WXWIN environment
+variable containing the full path to this directory. While this is not
+actually required, this makes using the library more convenient and
+this environment variable is used in the examples below.
NB: If you checked your sources from version control repository and
- didn't obtain them from a release file, the file above doesn't
- exist and you will need to copy include/wx/msw/setup0.h to
- include/wx/msw/setup.h.
-
-Notice that this file is later copied into a directory under lib for
-each of the build configurations which allows to have different
-build options for different configurations too.
-
-See "Configuring the Build" section for more information.
+ didn't obtain them from a release file, you also need to copy
+ include/wx/msw/setup0.h to include/wx/msw/setup.h.
Building wxWidgets
@@ -64,224 +56,168 @@ The following sections explain how to compile wxWidgets with each supported
compiler, see the "Building Applications" section about the instructions for
building your application using wxWidgets.
-Search for one of Microsoft/Borland/Watcom/Symantec/Cygwin/Mingw32 keywords
-to quickly locate the instructions for your compiler. Notice that the primary
-compilers for wxWidgets under MSW are Microsoft Visual C++ and GNU g++, other
-compilers are more rarely tested and might not work so please consider using
-one of these two if possible.
-
All makefiles and project are located in build\msw directory.
-Where Compiled Files are Stored
--------------------------------
-
-After successful compilation you'll find the libraries in a subdirectory
-of lib directory named after the compiler and DLL/static settings.
-A couple of examples:
-
- lib\vc_lib VC++ compiled static libraries
- lib\vc_dll VC++ DLLs
- lib\bcc_lib Static libraries for Borland C++
- lib\wat_dll Watcom C++ DLLs
-
-Names of compiled wxWidgets libraries follow this scheme: libraries that don't
-depend on GUI components begin with "wxbase" followed by a version number and,
-optionally, letters indicating Unicode compilation ('u') and a debug build ('d').
-The last component is the name of the wxWidgets component (unless you build the
-library as single monolithic library; look for "Configuring the Build" below).
-This is a typical set of release ANSI build libraries (release versions on
-left, debug on right side):
-
- wxbase29.lib wxbase29d.lib
- wxbase29_net.lib wxbase29d_net.lib
- wxbase29_xml.lib wxbase29d_xml.lib
- wxmsw29_core.lib wxmsw29d_core.lib
- wxmsw29_html.lib wxmsw29d_html.lib
- wxmsw29_adv.lib wxmsw29d_adv.lib
-
-Their Unicode debug counterparts in wxUniversal build would be
-
- wxbase29ud.lib
- wxbase29ud_net.lib
- wxbase29ud_xml.lib (notice these libs are same for wxUniv and wxMSW)
- wxmswuniv29ud_core.lib
- wxmswuniv29ud_html.lib
- wxmswuniv29ud_adv.lib
-
-These directories also contain a subdirectory with the wx/setup.h header. This
-subdirectory is named after the port, Unicode, wxUniv and debug settings and
-you must add it to the include paths when compiling your application. Some
-examples:
-
- lib\vc_lib\msw\wx\setup.h VC++ static, wxMSW
- lib\vc_lib\mswud\wx\setup.h VC++ static, wxMSW, Unicode, debug
- lib\vc_lib\mswunivd\wx\setup.h VC++ static, wxUniversal, debug
-
-Below are compiler specific notes followed by customizing instructions that
-apply to all compilers (search for "Configuring the Build").
-
Microsoft Visual C++ Compilation
----------------------------------------------------------------
-You may wish to visit http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide
-for a more informal and detailed description of the process summarized below.
+* From command line using the provided makefiles:
-Please note that currently ready to use projeect files are provided for VC++
-versions 6 through to 9 (also known as 6, 2003, 2005 and 2008). For VC++ 10 and
-11 (2010 and 2012, respectively), you will need to import the existing VC9
-project files.
+0. Open a "Visual Studio Command Prompt" window shortcut to which
+ must have been installed to the "Start" menu or the "Start" screen
+ by MSVS installation.
-Using project files (VC++ 6 and later):
+1. Change directory to %WXWIN%\build\msw and type
-1. Unarchive wxWidgets-x.y.z-vc.zip, the VC++ 6 project
- makefiles (already included in wxMSW-x.y.z.zip and the setup version).
-2. Open build\msw\wx.dsw, which has configurations for static
- compilation or DLL compilation, and each of these available in
- Unicode/ANSI, Debug/Release and wxUniversal or native variations.
- Choose the Win32 Debug or Win32 Release configuration (or any other that
- suits your needs) and use Batch Build to compile _all_ projects. If you
- know you won't need some of the libraries (e.g. the HTML part), you don't have
- to compile it. It will also produce similar variations on jpeg.lib,
- png.lib, tiff.lib, zlib.lib, and regex.lib.
+ > nmake /f makefile.vc
- If you want to build DLL configurations in wx.dsw project you unfortunately
- need to build them in the proper order (jpeg, png, tiff, zlib, regex, expat,
- base, net, core, gl, html, media, qa, adv, xrc, aui, richtext,
- propgrid) manually because VC6 doesn't always respect the correct build order.
+ to build wxWidgets in the default debug configuration as a static
+ library. You can also do
- Alternatively, use the special wx_dll.dsw project which adds the
- dependencies to force the correct order (but, because of this, doesn't work
- for the static libraries) or simply redo the build several times until all
- DLLs are linked correctly.
-3. Open a sample project file, choose a configuration such as
- Win32 Debug using Build | Set Active Configuration..., and compile.
- The project files don't use precompiled headers, to save disk
- space, but you can switch PCH compiling on for greater speed.
- NOTE: you may also use samples/samples.dsw to access all
- sample projects without opening each workspace individually.
- You can use the Batch Build facility to make several samples
- at a time.
+ > nmake /f makefile.vc BUILD=release
-Using makefiles:
+ to build a release version or
-1. Change directory to build\msw. Type:
+ > nmake /f makefile.vc BUILD=release SHARED=1
- 'nmake -f makefile.vc'
+ to build a release DLL version. Finally, you can also add
+ "TARGET_CPU=X64" to nmake command line to build Win64 versions
+ (this only works if you are using a 64 bit compiler, of course).
- to make the wxWidgets core library as release DLL.
- See "Configuring the Build" for instruction how to build debug or static
- libraries.
+ See "Configuring the Build" for more information about the
+ additional parameters that can be specified on the command line.
-2. Change directory to samples and type 'nmake -f makefile.vc'
- to make all the samples. You can also make them individually.
+2. To verify your build, change the directory to samples\minimal and
+ run the same nmake command (with the same parameters there), this
+ should create a working minimal wxWidgets sample.
-Makefile notes:
+3. If you need to rebuild, use "clean" target first or "nmake /a".
- Use the 'clean' target to clean all objects, libraries and
- executables.
-Note (1): if you wish to use templates, please edit
-include\wx\msw\setup.h and set wxUSE_DEBUG_NEW_ALWAYS to 0.
-Without this, the redefinition of 'new' will cause problems in
-the headers. Alternatively, #undef new before including template headers.
-You will also need to set wxUSE_IOSTREAMH to 0 if you will be
-using templates, to avoid the non-template stream files being included
-within wxWidgets.
+* From the IDE using the provided project files:
-Note (2): libraries and applications generated with makefiles and
-project files are now (hopefully) compatible where static libraries
-are concerned, but please exercise caution nevertheless and if
-possible, use one method or the other.
+Ready to use project files are provided for VC++ versions 6, 7, 8, 9
+and 10 (also known as MSVS 6, 2003, 2005, 2008 and 2010 respectively).
+For VC++ 11 (2012, respectively), you need to import the existing VC10
+project files into VC11 IDE first.
-Note (3): some crash problems can be due to inconsistent compiler
-options. If strange/weird/impossible things start to happen please
-check (dumping IDE project file as makefile and doing text comparison
-if necessary) that the project settings, especially the list of defined
-symbols, struct packing, etc. are exactly the same for all items in
-the project. After this, delete everything (including PCH) and recompile.
+Simply open wx_vcN.sln (for N=7, 8, 9 or 10) or wx.dsw (for VC6) file,
+select the appropriate configuration (Debug or Release, static or DLL)
+and build the solution. Notice that when building a DLL configuration,
+you may need to perform the build several times because the projects
+are not always built in the correct order, and this may result in link
+errors. Simply do the build again, up to 3 times, to fix this.
-Note (4): to create your own IDE files, copy .dsp and .dsw
-files from an existing wxWidgets sample and adapt them, or
-visit http://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide.
+Notice that x64 configurations are only included in VC10 project
+currently. If you want to build Win64 libraries with the previous
+compiler versions, the simplest solution is to use the makefiles as
+described above.
-Microsoft Visual C++ Compilation for 64-bit Windows
+
+Cygwin/MinGW Compilation
----------------------------------------------------------------
-Visual Studio 2005 includes 64-bit compilers, though they are not installed by
-default; you need to select them during the installation. Both native 64-bit
-compilers and 32-bit hosted cross compilers are included, so you do not need a
-64-bit machine to use them (though you do to run the created executables).
-Visual C++ Express Edition does not include 64-bit compilers.
+wxWidgets supports Cygwin, MinGW, MinGW-w64 and TDM-GCC tool chains under
+Windows. They can be downloaded from:
-64-bit compilers are also available in various SDKs, for example
-the .NET Framework SDK:
- http://msdn.microsoft.com/netframework/programming/64bit/devtools/
+ http://www.cygwin.com/
+ http://www.mingw.org/
+ http://mingw-w64.sourceforge.net/
+ http://tdm-gcc.tdragon.net/
-Using project files:
+respectively. Please retrieve and install the latest version of your preferred
+tool chain by following the instructions provided by these packages. Notice
+that Cygwin includes both native Cygwin compiler, which produces binaries that
+require Cygwin during run-time, and MinGW[-w64] cross-compilers which can still
+be used in Cygwin environment themselves but produce plain Windows binaries
+without any special run-time requirements. You will probably want to use the
+latter for developing your applications.
-1. Open the solution file for the version you use: build\msw\wx_vc8.sln or
- wx_vc9.sln.
+If using MinGW, you can download the add-on MSYS package to provide Unix-like
+tools that you'll need to build wxWidgets using configure.
-2. To add 64-bit targets, go to the 'Build' menu and choose 'Configuration
- Manager...'. In the 'Active solution platform' drop down choose '',
- then you can choose either 'Itanium' or 'x64'.
+C++11 note: If you want to compile wxWidgets in C++11 mode, you currently have
+ to use -std=gnu++11 switch as -std=c++11 disables some extensions
+ that wxWidgets relies on. I.e. please use CXXFLAGS="-std=gnu++11".
- For more detailed instructions see:
- http://msdn2.microsoft.com/en-us/library/9yb4317s(en-us,vs.80).aspx
+All of these tool chains can be used either with Unix-like configure+make build
+process (preferred) or with the provided makefile.gcc makefiles without using
+configure:
- Note: 64-bit targets created this way will use the build directory of the
- corresponding 32-bit target for some files. Therefore after building
- for one CPU it is necessary to clean the build before building the
- equivalent target for another CPU. We've reported the problem to MS
- but they say it is not possible to fix it.
+* Using configure
-3. To build, go to the 'Build' menu and choose 'Batch Build...'. Tick all the
- all the 'x64|Debug' or all the 'Itanium|Debug' projects, and click 'Build'.
+This method works in exactly the same way as under Unix systems,
+including OS X, and requires a Unix-like environment to work, i.e.
+either MSYS or Cygwin.
- This will build a debug version of the static libs. The section above on
- Visual C++ in general has more information about adjusting the settings to
- build other configurations.
+0. Open MSYS or Cygwin shell prompt.
-4. To compile one of the samples open one of the sample projects, such as
- samples\minimal\minimal_vc7.vcproj. Visual Studio will convert the project as in
- step 1, then add a 64-bit target as in step 2, and build.
+1. Create a build directory: it is is strongly recommended to not
+ build the library in the directory containing the sources ($WXWIN)
+ but to create a separate build directory instead. The build
+ directory can be placed anywhere (using the fastest available disk
+ may be a good idea), but in this example we create it as a
+ subdirectory of the source one:
-Using makefiles:
+ $ cd $WXWIN
+ $ mkdir build-debug
-1. Open a 64-bit build command prompt, for either x64 or Itanium. Change
- directory to build\msw. Then for x64 type:
+2. Run configure passing it any of the options shown by "configure
+ --help". Notice that configure builds shared libraries by default,
+ use --disable-shared to build static ones. For example:
- nmake -f makefile.vc TARGET_CPU=X64
+ $ ../configure --enable-debug
- or for Itanium:
+3. Build the library:
- nmake -f makefile.vc TARGET_CPU=IA64
+ $ make
- This will build a debug version of wxWidgets DLLs. See "Configuring the
- build" for instruction how to build other configurations such as a release
- build or static libraries.
+4. Test the library build by building the minimal sample:
-2. Change to the directory of one of the samples such as samples\minimal. Type
- the same command used to build the main library, for example for x64:
+ $ cd samples/minimal
+ $ make
- nmake -f makefile.vc TARGET_CPU=X64
+5. Optionally install the library in a global location
-Notes:
+ $ make install
-The versions of the VC++ 8 compiler included with some SDKs requires an
-additional library to be linked or the following error is received.
+ Notice that there is not much benefice to installing under Windows
+ so this step can usually be omitted.
- LNK2001 unresolved external symbol __security_check_cookie
-If you receive this error add bufferoverflowu.lib to link, e.g.:
+* Using plain makefiles:
+
+NOTE: The makefile.gcc makefiles are for compilation under MinGW using
+ Windows command interpreter (command.com/cmd.exe), they won't work
+ if you use Unix shell, as is the case with MSYS. Follow the instructions
+ for using configure above instead if you prefer to use Unix shell.
+
+0. Open DOS command line window (cmd.exe, *not* Bash sh.exe).
+
+1. Change directory to %WXWIN%\build\msw and type
+
+ > mingw32-make -f makefile.gcc
+
+ to build wxWidgets in the default debug configuration as a static
+ library. Add "BUILD=release" and/or "SHARED=1" to build the library
+ in release configuration and/or as a shared library instead of the
+ default static one.
+
+2. To verify your build, change the directory to samples\minimal and
+ run the same mingw32-make command (with the same parameters there),
+ this should create a working minimal wxWidgets sample.
+
+3. If you need to rebuild, use "clean" target first.
+
- nmake -f makefile.vc TARGET_CPU=X64 LDFLAGS=bufferoverflowu.lib
-See http://support.microsoft.com/?id=894573 for more information.
Borland C++ Compilation
----------------------------------------------------------------
+WARNING: Borland instructions are out of date, please send us your
+ corrections if you are using it with wxWidgets 3.0.
+
The minimum version required is 5.5 (last version supported by BC++ 5.0 was
2.4.2), which can be downloaded for free from:
http://www.borland.com/products/downloads/download_cbuilder.html
@@ -344,180 +280,56 @@ the following preprocessor directive:
(check the samples -- e.g., \wx2\samples\minimal\minimal.cpp -- for
more details)
-Watcom C++ 10.6/11 and OpenWatcom Compilation
-----------------------------------------------------------------
-
-1. Change directory to build\msw. Type 'wmake -f makefile.wat' to
- make the wxWidgets core library.
-
-2. Change directory to samples\minimal and type 'wmake -f makefile.wat'
- to make this sample. Repeat for other samples of interest.
-
-Note (1): if variant.cpp is compiled with date/time class options, the linker
- gives up. So the date/time option is switched off for Watcom C++.
- Also, wxAutomationObject is not compiled with Watcom C++ 10.
-
-Note (2): RawBitmaps won't work at present because they use unsupported template
- classes
-
-Note (3): if Watcom can't read the precompiled header when building a sample,
- try deleting .pch files in build\msw\wat_* and compiling
- the sample again.
-
-Note (4): wxUSE_STD_STRING is disabled in wx/string.h for Watcom as this
- compiler doesn't come with standard C++ library headers by default.
- If you install STLPort or another STL implementation, you'll need to
- edit wx/string.h and remove the check for Digital Mars in it (search
- for __WATCOM__).
-
-
-Cygwin/MinGW Compilation
-----------------------------------------------------------------
-
-wxWidgets supports Cygwin, MinGW, MinGW-w64 and TDM-GCC tool chains under
-Windows. They can be downloaded from:
-
- http://www.cygwin.com/
- http://www.mingw.org/
- http://mingw-w64.sourceforge.net/
- http://tdm-gcc.tdragon.net/
-
-respectively. Please retrieve and install the latest version of your preferred
-tool chain by following the instructions provided by these packages. Notice
-that Cygwin includes both native Cygwin compiler, which produces binaries that
-require Cygwin during run-time, and MinGW[-w64] cross-compilers which can still
-be used in Cygwin environment themselves but produce plain Windows binaries
-without any special run-time requirements. You will probably want to use the
-latter for developing your applications.
-
-If using MinGW, you can download the add-on MSYS package to provide Unix-like
-tools that you'll need to build wxWidgets using configure.
-
-C++11 note: If you want to compile wxWidgets in C++11 mode, you currently have
- to use -std=gnu++11 switch as -std=c++11 disables some extensions
- that wxWidgets relies on. I.e. please use CXXFLAGS="-std=gnu++11".
-
-All of these tool chains can be used either with Unix-like configure+make build
-process (preferred) or with the provided makefile.gcc makefiles without using
-configure:
-
-Using makefiles Directly
-----------------------------------------------------------------
-
-NOTE: The makefile.gcc makefiles are for compilation under MinGW using
- Windows command interpreter (command.com/cmd.exe), they won't work
- if you use Unix shell, as is the case with MSYS. Follow the instructions
- for using configure below instead in this case.
-
-Use the makefile.gcc files for compiling wxWidgets and samples,
-e.g. to compile a debugging version of wxWidgets:
- > cd c:\wx\build\msw
- > mingw32-make -f makefile.gcc BUILD=debug
- > cd c:\wx\samples\minimal
- > mingw32-make -f makefile.gcc BUILD=debug
- (See below for more options.)
-
-Notice that Windows command interpreter (cmd.exe) and mingw32-make must be
-used, using Bash (sh.exe) and make.exe from MSYS will only work when using
-configure-based build procedure described below!
-
-You can also use the 'strip' command to reduce executable/dll size (note that
-stripping an executable/dll will remove debug information!).
-
-All targets have 'clean' targets to allow removal of object files
-and other intermediate compiler files.
-
-Using configure
-----------------------------------------------------------------
-
-Instead of using the makefiles, you can use the configure
-system to generate appropriate makefiles, as used on Unix
-and Mac OS X systems.
-
-Change directory to the root of the wxWidgets distribution,
-make a build directory, and run configure and make in this directory.
-
-For example:
-
- $ cd $WXWIN
- $ mkdir build-debug
- $ cd build-debug
- $ # Optionally use --disable-shared for static linking
- $ ../configure --enable-debug
- $ make
- $ make install # This step is optional
- $ cd samples/minimal
- $ make
- $ ./minimal.exe
-
-
-DigitalMars C++ Compilation
-----------------------------------------------------------------
-
-Digital Mars compiler is no longer updated as the project is discontinued.
-wxWidgets 2.8 was the last version to compile with this compiler.
Configuring the Build
================================================================
-So far the instructions only explain how to build release DLLs of wxWidgets
-and did not cover any configuration. It is possible to change many aspects of
-the build, including debug/release and static/dynamic settings.
+NOTE: If you use configure to build the library with Cygwin/MinGW, the
+ contents of this section does not apply, just pass the arguments
+ to configure directly in this case.
-Notice that in the previous versions of wxWidgets it was possible to build the
-library in either ANSI or Unicode mode but in wxWidgets 2.9 and later only a
-single, combined, build mode exists. It is still possible to set UNICODE=0 to
-disable Unicode support entirely but it is strongly not recommended and should
-be never necessary.
-
-
-Changing the Settings
+Library configuration
----------------------------------------------------------------
-There are two ways to modify the settings: either by passing the values as
-arguments when invoking make or by editing build\msw\config.$(compiler) file
-where $(compiler) is same extension as the makefile you use has (see below).
-The latter is good for setting options that never change in your development
-process (e.g. GCC_VERSION or VENDOR). If you want to build several versions of
-wxWidgets and use them side by side, the former method is better. Settings in
-config.* files are shared by all makefiles (samples, contrib, main library),
-but if you pass the options as arguments, you must use same arguments you used
-for the library when building samples or contrib libraries!
+While it is never necessary to do it, you may want to change some of
+the options in the include/wx/msw/setup.h file before building wxWidgets.
+This file is heavily commented, please read it and enable or disable
+the features you would like to compile wxWidgets with[out].
-Examples of invoking make in Unicode debug build (other options described
-below are set analogically):
+Notice that this file is later copied into a directory under lib for
+each of the build configurations which allows to have different
+build options for different configurations too if you edit any
+configuration-specific file.
-Visual C++:
- > nmake -f makefile.vc BUILD=debug
-Borland C++:
- > make -f makefile.bcc -DBUILD=debug
- (Note that you have to use -D to set the variable, unlike in other make
- tools!)
-
-Watcom C/C++:
- > wmake -f makefile.wat BUILD=debug
-
-MinGW using native makefiles:
- > mingw32-make -f makefile.gcc BUILD=debug
-
-MinGW using configure:
- > ./configure --enable-debug
- (see ./configure --help on details; configure is not covered in this
- section)
-
-Cygwin using configure:
- > ./configure --disable-precomp-headers --enable-debug
- (use --disable-precomp-headers if Cygwin doesn't support precompiled
- headers)
-
-Brief explanation of options and possible values is in every
-build\msw\config.* file; more detailed description follows.
-
-Basic Options
+Makefile parameters
----------------------------------------------------------------
+When building using makefiles, you can specify many build settings
+(unlike when using the project files where you are limited to choosing
+just the configuration and platform). This can be done either by
+passing the values as arguments when invoking make or by editing
+build\msw\config.$(compiler) file where $(compiler) is same extension
+as the makefile you use has (see below). The latter is good for
+setting options that never change in your development process (e.g.
+GCC_VERSION or VENDOR). If you want to build several versions of
+wxWidgets and use them side by side, the former method is better.
+Settings in config.* files are shared by all makefiles (including the
+samples), but if you pass the options as arguments, you must use same
+arguments you used for the library when building samples!
+
+For example, to build the library in release mode you can either
+change the "BUILD" variable definition in build\msw\config.$(compiler)
+or use
+
+ > nmake -f makefile.vc BUILD=debug
+ > mingw32-make -f makefile.gcc BUILD=debug
+
+depending on the compiler used.
+
+The full list of the build settings follows:
+
BUILD=release
Builds release version of the library. It differs from default 'debug' in
lack of appended 'd' in name of library and uses the release CRT libraries
@@ -534,16 +346,13 @@ UNICODE=0
systems and can't use MSLU (which requires MSLU=1) for some reason.
This option affect name of the library ('u' is appended in the default
- Unicode build) and the directory where the library and setup.h are store
+ Unicode build) and the directory where the library and setup.h are stored
(ditto).
WXUNIV=1
Build wxUniversal instead of native wxMSW (see
http://www.wxwidgets.org/wxuniv.htm for more information).
-Advanced Options
-----------------------------------------------------------------
-
MONOLITHIC=1
Starting with version 2.5.1, wxWidgets has the ability to be built as
several smaller libraries instead of single big one as used to be the case
@@ -554,22 +363,13 @@ MONOLITHIC=1
USE_GUI=0
Disable building GUI parts of the library, build only wxBase components used
by console applications. Note that if you leave USE_GUI=1 then both wxBase
- and GUI libraries are built. If you are building monolithic library, then
- you should set wxUSE_GUI to 1 in setup.h.
+ and GUI libraries are built.
-USE_OPENGL=1
- Build wxmsw29_gl.lib library with OpenGL integration class wxGLCanvas.
- You must also modify your setup.h to #define wxUSE_GLCANVAS 1. Note that
- OpenGL library is always built as additional library, even in monolithic
- build!
-
-USE_HTML=0
- Do not build wxHTML library. If MONOLITHIC=1, then you must also
- #define wxUSE_HTML 1 in setup.h.
-
-USE_XRC=0
- Do not build XRC resources library. If MONOLITHIC=1, then you must also
- #define wxUSE_HTML 1 in setup.h.
+USE_$(LIBRARY)=0
+ Do not build the corresponding library (all libraries are built by
+ default). Library which can be disabled in this way are: AUI, HTML,
+ MEDIA, GL (the option name is USE_OPENGL for this one), PROPGRID,
+ QA, RIBBON, RICHTEXT, STC, WEBVIEW, XRC.
RUNTIME_LIBS=static
Links static version of C and C++ runtime libraries into the executable, so
@@ -606,6 +406,16 @@ DEBUG_INFO=1
omitted or set to 'default' its value is determined the value of
the BUILD option.
+DEBUG_RUNTIME_LIBS=0
+DEBUG_RUNTIME_LIBS=1
+ (VC++ only.) If set to 1, msvcrtd.dll is used, if to 0, msvcrt.dll
+ is used. By default msvcrtd.dll is used only if the executable
+ contains debug info and msvcrt.dll if it doesn't. It is sometimes
+ desirable to build with debug info and still link against msvcrt.dll
+ (e.g. when you want to ship the app to customers and still have
+ usable .pdb files with debug information) and this setting makes it
+ possible.
+
TARGET_CPU=X64|IA64
(VC++ only.) Set this variable to build for x86_64 systems. If unset, x86
build is performed.
@@ -615,14 +425,18 @@ VENDOR=
distribute wxWidgets DLLs with your application. Default value is 'custom'.
This string is included as part of DLL name. wxWidgets DLLs contain compiler
name, version information and vendor name in them. For example
- wxmsw290_core_bcc_custom.dll is one of DLLs build using Borland C++ with
+ wxmsw300_core_vc_custom.dll is one of DLLs build using Visual C++ with
default settings. If you set VENDOR=mycorp, the name will change to
- wxmsw290_core_bcc_mycorp.dll.
+ wxmsw300_core_vc_mycorp.dll.
CFG=
Sets configuration name so that you can have multiple wxWidgets builds with
- different setup.h settings coexisting in same tree. See "Object and library
- directories" below for more information.
+ different setup.h settings coexisting in same tree. The value of
+ this option is appended to the build directories names. This is
+ useful for building the library in some non-default configuration,
+ e.g. you could change wxUSE_STL to 1 in include/wx/msw/setup.h and
+ then build with "CFG=-stl". Alternatively, you could build with e.g.
+ "RUNTIME_LIBS=static CFG=-mt" when using MSVC.
COMPILER_PREFIX=
If you build with multiple versions of the same compiler, you can put
@@ -631,86 +445,14 @@ COMPILER_PREFIX=
convenience variable, you can achieve the same effect (but different
directory names) with the CFG option.
+CFLAGS
+CXXFLAGS
+CPPFLAGS
+LDFLAGS
+ Additional flags to be used with C compiler, C++ compiler, C
+ preprocessor (used for both C and C++ compilation) and linker,
+ respectively.
-Compiler-Specific Options
-----------------------------------------------------------------
-
-* MinGW
-
-If you are using gcc-2.95 instead of gcc3, you must set GCC_VERSION to
-2.95. In build\msw\config.gcc, change
-> GCC_VERSION = 3
-to
-> GCC_VERSION = 2.95
-
-* Visual C++
-
-DEBUG_RUNTIME_LIBS=0
-DEBUG_RUNTIME_LIBS=1
- If set to 1, msvcrtd.dll is used, if to 0, msvcrt.dll is used. By default
- msvcrtd.dll is used only if the executable contains debug info and
- msvcrt.dll if it doesn't. It is sometimes desirable to build with debug info
- and still link against msvcrt.dll (e.g. when you want to ship the app to
- customers and still have usable .pdb files with debug information) and this
- setting makes it possible.
-
-Fine-tuning the Compiler
-----------------------------------------------------------------
-
-All makefiles have variables that you can use to specify additional options
-passed to the compiler or linker. You won't need this in most cases, but if you
-do, simply add desired flags to CFLAGS (for C compiler), CXXFLAGS (for C++
-compiler), CPPFLAGS (for both C and C++ compiler) and LDFLAGS (the linker).
-
-Object and Library Directories
-----------------------------------------------------------------
-
-All object files produced during a library build are stored in a directory under
-build\msw. Its name is derived from the build settings and CFG variable and from
-the compiler name. Examples of directory names:
-
- build\msw\bcc_msw SHARED=0
- build\msw\bcc_mswdll SHARED=1
- build\msw\bcc_mswunivd SHARED=0, WXUNIV=1, BUILD=debug
- build\msw\vc_mswunivd ditto, with Visual C++
-
-Libraries and DLLs are copied into a subdirectory of the lib directory with a
-name derived from the compiler and a static/DLL setting and setup.h into a
-directory with a name that contains other settings:
-
- lib\bcc_msw
- lib\bcc_lib\msw\wx\setup.h
- lib\bcc_dll
- lib\bcc_dll\msw\wx\setup.h
- lib\bcc_lib
- lib\bcc_lib\mswunivd\wx\setup.h
- lib\vc_lib
- lib\vc_lib\mswunivd\wx\setup.h
-
-Each lib\ subdirectory has wx subdirectory with setup.h as seen above.
-This file is copied there from include\wx\msw\setup.h (and if it doesn't exist,
-from include\wx\msw\setup0.h) and this is the copy of setup.h that is used by
-all samples and should be used by your apps as well. If you are doing changes
-to setup.h, you should do them in this file, _not_ in include\wx\msw\setup.h.
-
-If you set CFG to something, the value is appended to directory names. E.g.
-for CFG=MyBuild, you'll have object files in
-
- build\msw\bcc_mswMyBuild
- build\msw\bcc_mswdllMyBuild
- etc.
-
-and libraries in
-
- lib\bcc_libMyBuild
- lib\bcc_dllMyBuild
- etc.
-
-By now it is clear what CFG is for: builds with different CFG settings don't
-share any files and they use different setup.h files. For example, this allows
-you to have two static debug builds, one with wxUSE_SOCKETS=0 and one with sockets
-enabled (without CFG, both of them would be put into same directory and there
-would be conflicts between the files).
Building Applications Using wxWidgets
@@ -741,8 +483,8 @@ following to use wxWidgets:
* Add the list of libraries to link with to the linker input. The exact list
depends on which libraries you use and whether you built wxWidgets in
monolithic or default multlib mode and basically should include all the
- relevant libraries from the directory above, e.g. "wxmsw29ud_core.lib
- wxbase29ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib
+ relevant libraries from the directory above, e.g. "wxmsw30ud_core.lib
+ wxbase30ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib
wxexpatd.lib" for a debug build of an application using the core library only
(all wxWidgets applications use the base library).
diff --git a/docs/osx/install.txt b/docs/osx/install.txt
index a0ab245450..d02c9c2183 100644
--- a/docs/osx/install.txt
+++ b/docs/osx/install.txt
@@ -1,19 +1,18 @@
wxWidgets for Mac OS X installation
-----------------------------------
-wxWidgets can be compiled using Apple's Carbon or Cocoa libraries.
-Carbon is the older library, and Cocoa is the more modern library.
+wxWidgets can be compiled using Apple's Cocoa or Carbon libraries.
+Cocoa is the more modern library, and Carbon is the older deprecated library.
-In wxWidgets 2.9.x, Cocoa is the recommended library. While Carbon is still
+In wxWidgets 3, Cocoa is the recommended library. While Carbon is still
supported by Apple, little new work is being done in Carbon.
Most Mac OS X developers should start by downloading and installing Xcode
from http://developer.apple.com. It is a free IDE from Apple that provides
all of the tools you need for working with wxWidgets.
-After Xcode is installed, download either wxWidgets-{version}.tar.gz or
-wxMac-{version}.tar.gz and then double-click on it to unpack it to create
-a wxWidgets directory.
+After Xcode is installed, download wxWidgets-{version}.tar.bz2 and then
+double-click on it to unpack it to create a wxWidgets directory.
Next use Terminal (under Applications, Utilities, Terminal) to access a command
prompt. Use cd to change directories to your wxWidgets directory and execute
@@ -28,7 +27,7 @@ installed when you install Xcode 3.x.
# Build the library for Cocoa (wxWidgets 2.9.0 and later)
mkdir build-cocoa-debug
cd build-cocoa-debug
-../configure --with-osx_cocoa --enable-debug
+../configure --enable-debug
make
# Build the samples and demos
cd samples; make;cd ..
@@ -39,7 +38,7 @@ cd demos; make;cd ..
# Build the library for Carbon
mkdir build-carbon-debug
cd build-carbon-debug
-../configure --enable-debug --disable-shared --enable-macosx_arch=i386 --with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk CC=/Developer/usr/bin/gcc-4.2 CXX=/Developer/usr/bin/g++-4.2 LD=/Developer/usr/bin/ld
+../configure --with-carbon --enable-debug --disable-shared --enable-macosx_arch=i386 --with-macosx-sdk=/Developer/SDKs/MacOSX10.6.sdk CC=/Developer/usr/bin/gcc-4.2 CXX=/Developer/usr/bin/g++-4.2 LD=/Developer/usr/bin/ld
make
# Build the samples and demos
cd samples;make;cd ..
@@ -48,10 +47,10 @@ cd demos; make;cd ..
---------
After the compilation completes, use Finder to run the samples and demos
+ Go to build-cocoa-debug/samples to experiment with the Cocoa samples.
+ Go to build-cocoa-debug/demos to experiment with the Cocoa demos.
Go to build-carbon-debug/samples to experiment with the Carbon samples.
Go to build-carbon-debug/demos to experiment with the Carbon demos.
- Go to build-cocoa-debug/samples to experiment with the Cocoa samples.
- Go to biuld-cocoa-debug/demos to experiment with the Cocoa demos.
Double-click on the executables which have an icon showing three small squares.
The source code for the samples is in wxWidgets/samples
The source code for the demos is in wxWidgets/demos
@@ -93,8 +92,10 @@ to wx-config with the --in-place option you can avoid installing the library.
Apple Developer Tools: Xcode
----------------------------
-You can use the project in src/wxWindows.xcodeproj to build wxWidgets,
-and there is a sample project supplied with the minimal sample.
+You can use the project in build/osx/wxcocoa.xcodeproj to build the Cocoa
+version of wxWidgets (wxOSX/Cocoa) and build/osx/wxcarbon.xcodeproj to
+build the Carbon version of wxWidgets (wxOSX/Carbon). There are also sample
+projects supplied with the minimal sample.
Notice that the command line build above builds not just the library itself but
also wxrc tool which doesn't have its own Xcode project. If you need this tool,
@@ -130,8 +131,8 @@ binaries together. Assuming building on a PPC system:
2. Then, build for Intel, in a different folder. This time use:
-export CFLAGS="-g -isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386"
-export LDFLAGS="-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk"
+export CFLAGS="-g -isysroot /Developer/SDKs/MacOSX10.5.sdk -arch i386"
+export LDFLAGS="-syslibroot,/Developer/SDKs/MacOSX10.5.sdk"
./configure --disable-dependency-tracking --enable-static=yes --enable-shared=no \
--target=i386-apple-darwin8 --host=powerpc-apple-darwin8 --build=i386-apple-darwin8
diff --git a/docs/publicity/WoWoW30.html b/docs/publicity/WoWoW30.html
index 0809990646..2832e02efd 100644
--- a/docs/publicity/WoWoW30.html
+++ b/docs/publicity/WoWoW30.html
@@ -41,7 +41,7 @@ mention that wxWidgets is a C++ framework for building rich GUI
applications from a single source which can then be compiled on
different operating systems, resulting in a native application on
each system. wxWidgets uses native controls (or widgets) and other
-native functions whereever possible so that the resulting
+native functions wherever possible so that the resulting
applications will look and feel as native as possible, and they are
usually not distinguishable from applications written using single
platform toolkits such as MFC for Windows, GTK+ for Linux or Cocoa
@@ -51,9 +51,9 @@ achieve perfect integration with that platform.
The major operating system for which wxWidgets
supports are Windows (Windows 95, NT, 2000, XP, Vista) including its
mobile variants (Windows CE, PocketPC, Windows Mobile), Linux and
-Unix using the GTK+ 2 toolkit (minimum version is GTK+ 2.4, more
+Unix using the GTK+ 2 toolkit (minimum version is GTK+ 2.6, more
recent features are used when available) and Mac OS X (minimum
-version 10.4 Tiger, both Intel, PPC and the Universal Binaries for
+version 10.5 Tiger, both Intel, PPC and the Universal Binaries for
both are supported). wxWidgets includes many code pieces for
optimising dialog and general layout for small screens such as those
of the recent netbooks and mobile phones and tablets.
@@ -103,8 +103,8 @@ tries to both make use of new features of the different operating
systems and support older systems for as long as possible and as long
as supporting them does not hinder development for up-to-date
systems. This is especially true for OS X and GTK+ 2 and it was
-therefore decided that OS X versions older than 10.4 Tiger and GTK+ 2
-version older than 2.4 are no longer supported. The wxWidgets team
+therefore decided that OS X versions older than 10.5 Leopard and GTK+ 2
+version older than 2.6 are no longer supported. The wxWidgets team
also realized that it could not do everything and that support for a
cross-platform database API was beyond the scope and focus of the
project so that its old wxODBC database connectivity classes were
@@ -209,7 +209,7 @@ and may thus be the most important changes from a user's perspective
control used to display lists and hierarchies of name-value pairs.
Like wxDataViewCtrl, it offers a number of ready-to-use editors for
editing text, numbers, lists, fonts, file names etc. using in-place
- editing or using pop-up dialog and combo boxes. Developement of
+ editing or using pop-up dialog and combo boxes. Development of
wxPropertyGrid has so far taken place outside of wxWidgets as a
separate project, but it has not been included in wxWidgets per se.
See also wxPropertyGrid.
@@ -271,28 +271,24 @@ iPhone and iPod, and these are devices are clearly not Macs. Apart
from the name change – wxMac has undergone the most fundamental
changes of the three main ports, even if some of the changes were
mostly reorganizing code instead of writing new code. The code has
-been reorganized into common code (common to Carbon, Cocoa and Cocoa
+been reorganized into common code (common to Carbon, Cocoa, and Cocoa
Touch) including both general wrapping or front-end classes for much
of the GUI code as well as a wrapper for the so called CoreFoundation
classes of OS X, which are responsible on all OS X variants for
string manipulation, font support, graphics and other basic
-functionality (CoreImage and CoreVideo have recently been added by
-Apple) and toolkit dependent code for the Carbon, Cocoa and Cocoa
-Touch API. The Carbon variant is the core of what used to be wxMac
-and is the most stable and mature version. The reason behind adding
-optional support for Cocoa and Cocoa Touch is that Carbon is not
-available on iPhones at all and that it has been deprecated for all
-64-bit versions of OS X, which is likely to be the default a few
-years from now. So while present applications using wxOSX are advised
-to use the Carbon backend due its maturity, future developement will
-have to focus on the Cocoa backend.
+functionality and toolkit dependent code for the Carbon, Cocoa, and
+Cocoa Touch API. wxOSX/Carbon is the core of what used to be wxMac
+and is now deprecated in favour of wxOSX/Cocoa. Existing applications
+are encouraged to switch to wxOSX/Cocoa as Carbon is a deprecated OS X
+feature, not available for 64-bit GUI applications, and not available for
+iOS devices at all.
As part of the restructuring, all remaining drawing
code using the old QuickDraw API has been removed (it was only an
option before) and drawing now always takes place using CoreGraphics.
Likewise, all code using Carbon functions no longer present in OS X
-10.4 has been removed to clean-up the code greatly. This is turn
+10.4 and 10.5 has been removed to clean-up the code greatly. This is turn
means, as mentioned above, that applications will require a minimum
-of OS X 10.4 in order to run, better yet OS X 10.5.
+of OS X 10.5 in order to run.
Apart from these large changes, these additional
features can be noted:
@@ -311,7 +307,7 @@ compatible way. The main problem of this approach is that
applications written using wxGTK should work with relatively old
versions of GTK+ but should also make use of recent features. In some
cases, supporting an old version of GTK+ hinders development so we
-decided to declare GTK+ 2.4 the minimum toolkit version that is
+decided to declare GTK+ 2.6 the minimum toolkit version that is
supported. As an example, this made it possible to always use the
GTK+ file dialog instead of the old generic file dialog which had to
be used when GTK+ didn't have a usable file dialog.
diff --git a/docs/publicity/announce.txt b/docs/publicity/announce.txt
index 15daa8b3dd..afdd6498f8 100644
--- a/docs/publicity/announce.txt
+++ b/docs/publicity/announce.txt
@@ -1,13 +1,15 @@
-October 7, 2013 -- The wxWidgets team is pleased to announce the
-first release candidate release of wxWidgets 3.0.
+November 11, 2013 -- The wxWidgets team is pleased to announce a
+major new release of our open source framework for the development
+of native cross-platform applications in C++.
-wxWidgets 3.0-RC1 is available at
+wxWidgets 3.0.0 is the first release in the new major stable 3.0
+branch and is available at
- https://sourceforge.net/downloads/wxwindows/3.0.0-rc1/
+ https://sourceforge.net/downloads/wxwindows/3.0.0/
and at our FTP mirror at
- ftp://ftp.wxwidgets.org/pub/3.0.0-rc1/
+ ftp://ftp.wxwidgets.org/pub/3.0.0/
Please choose the archive format suitable for your platform, i.e. 7z
or ZIP for Windows platforms and tar.bz2 for the Unix systems
@@ -22,9 +24,6 @@ selected compilers at
https://sourceforge.net/downloads/wxwindows/3.0.0/binaries/
-Notice that 3.0-RC1 does NOT include the binaries, they will be only
-available for the final 3.0 release.
-
Please see the README file there for the descriptions of the
individual files.
@@ -44,20 +43,20 @@ here, but the most important ones are:
Please see the changes.txt file in the "docs" subdirectory of
wxWidgets distribution or also available online at
-https://sourceforge.net/projects/wxwindows/files/3.0.0-rc1/changes.txt
+https://sourceforge.net/projects/wxwindows/files/3.0.0/changes.txt
for more details and please read the "INCOMPATIBLE CHANGES" section
in its beginning for a brief description of changes if you are
upgrading from wxWidgets 2.8. For more details, please see
http://docs.wxwidgets.org/3.0.0/overview_changes_since28.html
-Please test this release candidate version to help us with making the
-final 3.0 release as problem-free as possible. We are especially
-looking forward to your feedback about the changes in this release
-compared to 2.8 version if you're upgrading. Please let us know about
-any regressions (http://trac.wxwidgets.org/newticket) so that we could
-fix them in the upcoming 3.0.
+We recommend that you use wxWidgets 3.0 for any new programs and
+also update any existing code using the older versions to the new
+one (which should be easier than the jump in the version number
+indicates) as all the future development will only happen in 3.x
+series.
- Thanks in advance!
+
+We hope that you will enjoy using the new release!
Vadim Zeitlin, on behalf of wxWidgets development team.
diff --git a/docs/readme.txt b/docs/readme.txt
index 7545ad2b52..b9d167d1be 100644
--- a/docs/readme.txt
+++ b/docs/readme.txt
@@ -1,20 +1,28 @@
- wxWidgets 3.0-RC1 Release Notes
- ===============================
+ wxWidgets 3.0.0 Release Notes
+ =============================
-Welcome to the latest release of wxWidgets, a free cross-platform C++
-framework for writing advanced GUI applications using native controls.
+Welcome to the latest release of wxWidgets, a free and open source
+cross-platform C++ framework for writing advanced GUI applications
+using native controls.
-In addition to common and advanced GUI facilities such as frames,
-scrolling windows, toolbars, tree controls, icons, device contexts,
-printing, splitter windows and so on, there are wrappers for common
-file operations, facilities for writing network applications,
-thread handling, and so on. You can learn more about wxWidgets at
+wxWidgets allows you to write native-looking GUI applications for
+all the major desktop platforms and also helps with abstracting
+the differences in the non-GUI aspects between them. It is free
+for the use in both open source and commercial applications, comes
+with the full, easy to read and modify, source and extensive
+documentation and a collection of more than a hundred examples.
+You can learn more about wxWidgets at
http://www.wxwidgets.org/
+and read its documentation online at
-wxWidgets sources are available for download from
+ http://docs.wxwidgets.org/3.0.0/
+
+
+wxWidgets sources and binaries for the selected platforms are
+available for download from
https://sourceforge.net/projects/wxwindows/files/3.0.0/
@@ -26,12 +34,6 @@ Please see the "Files" section below for the description of various
files available at these locations.
-A detailed reference manual including in-depth overviews for various
-topics is supplied in various formats and can be accessed online at
-
- http://docs.wxwidgets.org/3.0.0/
-
-
Changes in this release
-----------------------
@@ -39,7 +41,7 @@ Changes in this release
This release contains several years worth of improvements compared
to 2.8 version. Notably, Unicode support has been completely
overhauled and made much easier to use. Debugging support, including
-when using a release build of the library, was much improved making
+when using a release build of the library, was greatly improved making
it less likely that you use the library incorrectly. Dynamic event
handling was made much more comfortable. Many new GUI and base classes
have been added or improved and all ports, and especially wxOSX/Cocoa
@@ -63,9 +65,9 @@ Platforms supported
wxWidgets currently supports the following primary platforms:
-- Windows 95/98/ME, NT, 2000, XP, Vista, 7
+- Windows 95/98/ME, NT, 2000, XP, Vista, 7 (32/64 bits).
- Most Unix variants using the GTK+ toolkit (version 2.6 or newer)
-- Mac OS X (10.5 or newer) using either Carbon or Cocoa
+- Mac OS X (10.5 or newer) using Cocoa (32/64 bits) or Carbon (32 only)
There is some support for the following platforms:
@@ -98,8 +100,8 @@ In addition to the sources, documentation in HTML, CHM and HTB
for Microsoft Windows. Notice that you will still need to compile
wxWidgets even when using the installer.
-Experimentally, we also supply binaries of wxMSW libraries built
-with several versions of Microsoft Visual C++ compiler for this
+We also supply binaries of wxMSW libraries built with several
+versions of Microsoft Visual C++ and GNU g++ compiler for this
release. They are available in the "binaries" subdirectory, see
the description of the files in the README file there.
@@ -107,10 +109,11 @@ the description of the files in the README file there.
Installation
------------
-wxWidgets needs to be compiled before you can test out the samples
-or write your own applications. For installation information, please
-see the install.txt file in the docs subdirectory appropriate for
-the platform you use.
+Unless you have downloaded the binaries for your compiler, you
+will need to build wxWidgets before you can test out the samples
+or write your own applications. For installation information,
+please see the install.txt file in the docs subdirectory
+appropriate for the platform you use.
Licence information
@@ -136,13 +139,7 @@ applications using wxWidgets.
However, if you distribute wxGTK or wxMotif (with Lesstif)
version of your application, don't forget that it is linked
against GTK+ (or Lesstif) which is covered by LGPL *without*
-exception notice. Under Linux systems your app is probably linked
-against LGPL glibc as well. Please read carefully LGPL, section
-6. which describes conditions for distribution of closed source
-applications linked against LGPL library. Basically you should
-link dynamically and include source code of LGPL libraries with
-your product (unless it is already present in user's system -
-like glibc usually is).
+exception notice and so is bound by its requirements.
If you use TIFF image handler, please see src/tiff/COPYRIGHT
for libtiff licence details.
@@ -156,16 +153,17 @@ If you use wxRegEx class on a system without native regular
expressions support (i.e. MS Windows), see src/regex/COPYRIGHT
file for Henry Spencer's regular expression library copyright.
-If you use wxXML classes or XRC, see src/expat/COPYING for licence details.
+If you use wxXML classes or XRC, see src/expat/COPYING for licence
+details.
Documentation
-------------
wxWidgets documentation is available online at
-http://docs.wxwidgets.org/3.0.0/ and can also be downloaded in HTML
-format. To generate documentation in other formats (PDF, CHM, ...)
-please use the scripts in docs/doxygen directory.
+http://docs.wxwidgets.org/3.0.0/ and can also be downloaded in
+HTML format. To generate documentation in other formats (PDF, CHM,
+...) please use the scripts in docs/doxygen directory.
Bug reporting
@@ -188,19 +186,14 @@ addressed sooner.
Further information
-------------------
-The wxWidgets Web site is located at:
+If you are looking for support, you can get it from
- http://www.wxwidgets.org/
+- wxForum at http://forums.wxwidgets.org/
+- wx-users mailing list (http://www.wxwidgets.org/support/maillst2.htm)
+- #wxwidgets IRC channel
+- http://stackoverflow.com/ if you tag your question with "wxwidgets"
-The main wxWidgets ftp site is at:
-
- ftp://ftp.wxwidgets.org/pub/
-
-A wxWidgets CD-ROM with the latest distribution plus an HTML
-front-end and hundreds of MB of compilers, utilities and other
-material may be ordered from the CD-ROM page: see the wxWidgets
-web site.
Have fun!
-The wxWidgets Team, July 2013
+The wxWidgets Team, November 2013
diff --git a/docs/release_binaries.mdwn b/docs/release_binaries.mdwn
index 1195553fc0..72dbd9a2c3 100644
--- a/docs/release_binaries.mdwn
+++ b/docs/release_binaries.mdwn
@@ -1,7 +1,7 @@
-wxWidgets 3.0.0-rc2 Binaries
-============================
+wxWidgets 3.0.0 Binaries
+========================
-This directory contains binary files for wxWidgets 3.0.0-rc2 release.
+This directory contains binary files for wxWidgets 3.0.0 release.
* Microsoft Visual C++ compiler versions 9.0, 10.0, 11.0 and 12.0
corresponding to marketing product names of Microsoft Visual Studio
@@ -14,9 +14,10 @@ For Developers
--------------
For developing applications with wxWidgets you need to download the
-compiler-independent wxWidgets-3.0.0-rc2_Headers.7z file and one of
-wxMSW-3.0.0-rc2-vcXXX_Dev.7z or wxMSW-3.0.0-rc2_gccXXX_Dev.7z files
-depending on your compiler and its version.
+compiler-independent wxWidgets-3.0.0_Headers.7z file (found in the
+parent directory) and one of wxMSW-3.0.0-vcXXX_Dev.7z or
+wxMSW-3.0.0_gccXXX_Dev.7z files depending on your compiler, its
+version and the target architecture (x86 if not specified or x64).
Unpack both files into the same directory so that "include" and "lib"
directories are at the same level after unpacking. You should be able
@@ -29,15 +30,15 @@ symbols.
For End Users
-------------
-End users may download one of wxMSW-3.0.0-rc2_vcXXX_ReleaseDLL.7z or
-wxMSW-3.0.0-rc2_gccXXX_ReleaseDLL.7z files to get just the DLLs
+End users may download one of wxMSW-3.0.0_vcXXX_ReleaseDLL.7z or
+wxMSW-3.0.0_gccXXX_ReleaseDLL.7z files to get just the DLLs
required for running the applications using wxWidgets.
For Debugging
-------------
-* Microsoft Visual C++ users: Files wxMSW-3.0.0-rc2_vcXXX_ReleasePDB.7z
+* Microsoft Visual C++ users: Files wxMSW-3.0.0_vcXXX_ReleasePDB.7z
contain the debug symbols for the release build of the DLLs. Download
them if you want to debug your own applications in release build or
if you want to get meaningful information from mini-dumps retrieved
@@ -62,32 +63,46 @@ Check Sums
To verify your download you can use the following sha1sums:
- 23c043ccfc76d7f55db972e165d90c102ac444e4 wxMSW-3.0.0-rc2_vc100_Dev.7z
- a29b1701e601421d90d38234fecafa5ea089108e wxMSW-3.0.0-rc2_vc100_ReleaseDLL.7z
- e320f53d3524200cafe9b93422de49b3387f2c72 wxMSW-3.0.0-rc2_vc100_ReleasePDB.7z
- b9c4a0780f1d0e1a4b05fa77fc169310562d0d66 wxMSW-3.0.0-rc2_vc100_x64_Dev.7z
- bfe474fe29eed0ffb567556995f98051dcdfbb89 wxMSW-3.0.0-rc2_vc100_x64_ReleaseDLL.7z
- 1a4aa9a983987cd2ab9e6398cb11dedfd66bea2d wxMSW-3.0.0-rc2_vc100_x64_ReleaseDLL.msi
- 0d89da7e3e72b094a04ae37e49e30197e6e33bcb wxMSW-3.0.0-rc2_vc100_x64_ReleasePDB.7z
- e4d31dcca207616ab9d0b9702976a2b21ae126a1 wxMSW-3.0.0-rc2_vc100_x86_ReleaseDLL.msi
- 05aa6624ff1fab4a9ed2c639327648dcafda0efd wxMSW-3.0.0-rc2_vc110_Dev.7z
- ebbd9be982aa66abf3793e8700be98d14486fe0c wxMSW-3.0.0-rc2_vc110_ReleaseDLL.7z
- 79c0f8bb3d4197c83a14991b98bf65386be9951c wxMSW-3.0.0-rc2_vc110_ReleasePDB.7z
- a2a109293b88decc944e43966bbaab90a049d398 wxMSW-3.0.0-rc2_vc110_x64_Dev.7z
- bceedf4c1c131a1b37d5421c48f0f9098009b3bc wxMSW-3.0.0-rc2_vc110_x64_ReleaseDLL.7z
- bb034c5d0f573054afd2864460e22bf95767cca4 wxMSW-3.0.0-rc2_vc110_x64_ReleaseDLL.msi
- 12721bf2607a412f18c620c52db30fa56629c066 wxMSW-3.0.0-rc2_vc110_x64_ReleasePDB.7z
- d4da114c62ea4f246f907981447205bb90007e8b wxMSW-3.0.0-rc2_vc110_x86_ReleaseDLL.msi
- 6f09a33634736cf7caa7c0acddea34d1d119cfae wxMSW-3.0.0-rc2_vc90_Dev.7z
- 640784f90996625fcc2a3b62c99b92936dfae2ce wxMSW-3.0.0-rc2_vc90_ReleaseDLL.7z
- 2a36ad418c856caa040d4efc8807dbb75dd88330 wxMSW-3.0.0-rc2_vc90_ReleasePDB.7z
- f356b8edc7445271ce5a77c41f6b1370154d9799 wxMSW-3.0.0-rc2_vc90_x64_Dev.7z
- 282f02c23e7bcb331b1373a2b0b8a2f59f7d7a6e wxMSW-3.0.0-rc2_vc90_x64_ReleaseDLL.7z
- 69096f6ff598285e0a8117caba879b10c4b08528 wxMSW-3.0.0-rc2_vc90_x64_ReleaseDLL.msi
- 30c7442d37646b7c9d8a7be3d174b5b7c24cb093 wxMSW-3.0.0-rc2_vc90_x64_ReleasePDB.7z
- d1fa1c531c1bdf1d7c8806038b51a5dab0fce158 wxMSW-3.0.0-rc2_vc90_x86_ReleaseDLL.msi
- c084e9a5af9c082b9d201c0fee2919d7265578bb wxWidgets-3.0.0-rc2_Headers.7z
-
+ 4c6bf24df85bc0fb1bce3091557963ec4c79b5f4 wxMSW-3.0.0_gcc471TDM_Dev.7z
+ c35de8230a0e006883b58078b1bcb597a923b110 wxMSW-3.0.0_gcc471TDM_ReleaseDLL.7z
+ 5844ad74ef07f468f36a4b232e28bb5c6753eb91 wxMSW-3.0.0_gcc471TDM_x64_Dev.7z
+ df3129074172278d1837d7c7698e5466dcdd87af wxMSW-3.0.0_gcc471TDM_x64_ReleaseDLL.7z
+ 34268fdd29b3d3b904234796cae847c9648119f7 wxMSW-3.0.0_gcc481TDM_Dev.7z
+ 15871a10eb3d2c005e34ea20ea921400d51b7392 wxMSW-3.0.0_gcc481TDM_ReleaseDLL.7z
+ 3f89fd4e8f78f26c18cfee4781a2a6c1e3ae2655 wxMSW-3.0.0_gcc481TDM_x64_Dev.7z
+ 013c2f7ab65182f8c6c9d805a16d23827ed24c9e wxMSW-3.0.0_gcc481TDM_x64_ReleaseDLL.7z
+ 1a3ba38a309182a32f24225f392b3a35a31f9ea1 wxMSW-3.0.0_vc90_Dev.7z
+ 97ace7370b85813cb04196fbe71bc1caeb08bb79 wxMSW-3.0.0_vc90_ReleaseDLL.7z
+ ad98029154d9a0ef2d7d62756f796c82715a2c02 wxMSW-3.0.0_vc90_x86_ReleaseDLL.msi
+ 83c727c2337eaee4dc93e90d33a85b0dafe9b745 wxMSW-3.0.0_vc90_ReleasePDB.7z
+ b14eb5cab613cc583ada83ed38113dee9b8b08bb wxMSW-3.0.0_vc90_x64_Dev.7z
+ 1cf0d5918e961e31b67d70530e00be6cac06af57 wxMSW-3.0.0_vc90_x64_ReleaseDLL.7z
+ 6ab1d777b784c7e02a331577f6d676f51261af25 wxMSW-3.0.0_vc90_x64_ReleaseDLL.msi
+ 839e5033e760508a3d50314056821a7e91a4a2e4 wxMSW-3.0.0_vc90_x64_ReleasePDB.7z
+ 397ee6d2de469647a3444df1def495bb16ba54b0 wxMSW-3.0.0_vc100_Dev.7z
+ 0e1b88b313ff438c1db840a60d146dee218deb6f wxMSW-3.0.0_vc100_ReleaseDLL.7z
+ 25cc1e30d09ae3823288e224572e2b5d89673b2a wxMSW-3.0.0_vc100_x86_ReleaseDLL.msi
+ 229136142f7d2980be72265ecc50eeea0096afca wxMSW-3.0.0_vc100_ReleasePDB.7z
+ 3e4e5a7a1eb800fe9d9be658c655ca49d6260791 wxMSW-3.0.0_vc100_x64_Dev.7z
+ eda263f3b1aae120e802aeab43ccc3ee45411a9e wxMSW-3.0.0_vc100_x64_ReleaseDLL.7z
+ 8991eb4d14f0b37a6aeed8f1f2ef71e2ee961fb0 wxMSW-3.0.0_vc100_x64_ReleaseDLL.msi
+ 86661c50965b3619f3d0f68a900ec8e1e0eaf9fb wxMSW-3.0.0_vc100_x64_ReleasePDB.7z
+ 2c25693325f8516a4e923fd520b540a4947b2757 wxMSW-3.0.0_vc110_Dev.7z
+ 1c81fd5cdb4c62c1494accc7f1c9ba9acabfa79c wxMSW-3.0.0_vc110_ReleaseDLL.7z
+ aab75c6db1d491d38544d4feaf721931ee7aabb3 wxMSW-3.0.0_vc110_x86_ReleaseDLL.msi
+ 4dbb2058b6c8c11e9d906f6520792103779c8518 wxMSW-3.0.0_vc110_ReleasePDB.7z
+ c64b64138450ce35c385f9f9d01ee44fb27a59b1 wxMSW-3.0.0_vc110_x64_Dev.7z
+ 5503382c0a1b2148fed5d856fc5ddfc01e59dada wxMSW-3.0.0_vc110_x64_ReleaseDLL.7z
+ 7da39e4370391e41e13d2be9f7d59b36a78a8a8c wxMSW-3.0.0_vc110_x64_ReleaseDLL.msi
+ cff85ab5a0a560cac5d1f196a8cf0a1c1025aab8 wxMSW-3.0.0_vc110_x64_ReleasePDB.7z
+ 448827167a64a9a7c270774d62d8673445acbe63 wxMSW-3.0.0_vc120_Dev.7z
+ 0df76ee66bea2b3c312c4a67d5b6383440a85d22 wxMSW-3.0.0_vc120_ReleaseDLL.7z
+ 7e3249a3b989340fc3e87b1ba0031563d326cd92 wxMSW-3.0.0_vc120_x86_ReleaseDLL.msi
+ d74c3913389b8c441480b1a9d4c79211a457c05b wxMSW-3.0.0_vc120_ReleasePDB.7z
+ 9f6b3290f5fd3b179ff148d1cfc2748ddc0839a9 wxMSW-3.0.0_vc120_x64_Dev.7z
+ d2d555d923f18b71d5f0538e88a8740573df12a6 wxMSW-3.0.0_vc120_x64_ReleaseDLL.7z
+ 9383ee555c45772865b01260da9d02a8658683da wxMSW-3.0.0_vc120_x64_ReleaseDLL.msi
+ d3f24aa95d80f4a04d2b211b99fae7ca368e77b6 wxMSW-3.0.0_vc120_x64_ReleasePDB.7z
Credit
diff --git a/docs/release_files.mdwn b/docs/release_files.mdwn
index 349482d686..b50ffe0b24 100644
--- a/docs/release_files.mdwn
+++ b/docs/release_files.mdwn
@@ -1,7 +1,9 @@
-wxWidgets 3.0.0-RC1
-===================
+wxWidgets 3.0.0
+===============
-This directory contains the files for wxWidgets 3.0.0-rc1 release.
+This directory contains the files containing the sources and documentation of
+wxWidgets 3.0.0 release. Please see the binaries subdirectory for the binaries
+for the selected platforms/compilers.
Please notice that since the 2.9 series only a single source distribution is
provided instead of the multiple distributions containing only the files for
@@ -24,10 +26,11 @@ Check Sums
To verify your download you can use the following sha1sums:
- 0b6f7fbac35c4e923cc7fa73e9c8d8ad3dd8e085 wxWidgets-3.0.0-rc1.7z
- ae15323ae8c7682f65d9bf58e2ae3fff0af5e816 wxWidgets-3.0.0-rc1.tar.bz2
- ca272772d9d5c59372ca976375da600e2d7fc2ee wxWidgets-3.0.0-rc1.zip
- f344ffa557a5b24b85b612f08f6fae2cf9ca336f wxWidgets-3.0.0-rc1-docs-chm.zip
- 4f120cbbdffd7b837cb1afdfa5f4a4fbe1c160b4 wxWidgets-3.0.0-rc1-docs-html.tar.bz2
- 8ba6522c78b77bb0d3a8fbea6c4f4d0e11ec8d24 wxWidgets-3.0.0-rc1-docs-html.zip
- 2334dbd62b137957d31a529ab44fab25ce040320 wxWidgets-3.0.0-rc1_headers.7z
+ d19985b4ea4277ac7707615b7c00b15e3d58d2c0 wxWidgets-3.0.0.7z
+ 756a9c54d1f411e262f03bacb78ccef085a9880a wxWidgets-3.0.0.tar.bz2
+ becf924bb06441bfd2e7f3f4bf4501e58ff5c7b8 wxWidgets-3.0.0.zip
+ 6950f26601f5b71f955803854b19dce22af5e020 wxWidgets-3.0.0-docs-html.tar.bz2
+ b2909e17d19765cedf9d79793a78c3f7eda7d88b wxWidgets-3.0.0-docs-html.zip
+ bf0d8baa476baba8ac13442a6c9cd74c2f356993 wxWidgets-3.0.0-docs-chm.zip
+ 2f4f7013845930e069b4f3c5226d771eadee6986 wxWidgets-3.0.0_headers.7z
+ ff997beecf047ef9c94a1caccd9770300033c136 wxMSW-3.0.0-Setup.exe
diff --git a/docs/tech/tn0022.txt b/docs/tech/tn0022.txt
index 0465b0d83d..fead3c9a80 100644
--- a/docs/tech/tn0022.txt
+++ b/docs/tech/tn0022.txt
@@ -4,6 +4,8 @@
Before making the release
-------------------------
+Change the version in include/wx/version.h.
+
Update docs/readme.txt. Please review its contents in addition to just
changing the version number.
diff --git a/include/wx/buffer.h b/include/wx/buffer.h
index c88e160270..9891494d97 100644
--- a/include/wx/buffer.h
+++ b/include/wx/buffer.h
@@ -268,9 +268,22 @@ public:
wxCharTypeBuffer(size_t len)
{
- this->m_data =
- new Data((CharType *)malloc((len + 1)*sizeof(CharType)), len);
- this->m_data->Get()[len] = (CharType)0;
+ CharType* const str = (CharType *)malloc((len + 1)*sizeof(CharType));
+ if ( str )
+ {
+ str[len] = (CharType)0;
+
+ // There is a potential memory leak here if new throws because it
+ // fails to allocate Data, we ought to use new(nothrow) here, but
+ // this might fail to compile under some platforms so until this
+ // can be fully tested, just live with this (rather unlikely, as
+ // Data is a small object) potential leak.
+ this->m_data = new Data(str, len);
+ }
+ else
+ {
+ this->m_data = this->GetNullData();
+ }
}
wxCharTypeBuffer(const wxCharTypeBuffer& src)
diff --git a/include/wx/combo.h b/include/wx/combo.h
index 4bae2cfea6..6a040b3d22 100644
--- a/include/wx/combo.h
+++ b/include/wx/combo.h
@@ -560,7 +560,7 @@ protected:
// just recalculate.
void CalculateAreas( int btnWidth = 0 );
- // Standard textctrl positioning routine. Just give it platform-dependant
+ // Standard textctrl positioning routine. Just give it platform-dependent
// textctrl coordinate adjustment.
virtual void PositionTextCtrl( int textCtrlXAdjust = 0,
int textCtrlYAdjust = 0);
@@ -701,7 +701,7 @@ protected:
// area used by the button
wxSize m_btnSize;
- // platform-dependant customization and other flags
+ // platform-dependent customization and other flags
wxUint32 m_iFlags;
// custom style for m_text
diff --git a/include/wx/msw/combobox.h b/include/wx/msw/combobox.h
index 8649187c09..5fc7cc5cf1 100644
--- a/include/wx/msw/combobox.h
+++ b/include/wx/msw/combobox.h
@@ -133,6 +133,9 @@ protected:
virtual wxSize DoGetSizeFromTextSize(int xlen, int ylen = -1) const;
+ // Override this one to avoid eating events from our popup listbox.
+ virtual wxWindow *MSWFindItem(long id, WXHWND hWnd) const;
+
// this is the implementation of GetEditHWND() which can also be used when
// we don't have the edit control, it simply returns NULL then
//
diff --git a/include/wx/msw/control.h b/include/wx/msw/control.h
index 29897ad9c3..35bf74e9fe 100644
--- a/include/wx/msw/control.h
+++ b/include/wx/msw/control.h
@@ -121,6 +121,9 @@ protected:
// one
virtual WXHBRUSH DoMSWControlColor(WXHDC pDC, wxColour colBg, WXHWND hWnd);
+ // Look in our GetSubcontrols() for the windows with the given ID.
+ virtual wxWindow *MSWFindItem(long id, WXHWND hWnd) const;
+
// for controls like radiobuttons which are really composite this array
// holds the ids (not HWNDs!) of the sub controls
wxArrayLong m_subControls;
diff --git a/include/wx/msw/msvcrt.h b/include/wx/msw/msvcrt.h
index 692f19ef35..e92a88d841 100644
--- a/include/wx/msw/msvcrt.h
+++ b/include/wx/msw/msvcrt.h
@@ -37,7 +37,12 @@
#endif
#include
- #ifndef _CRTBLD
+
+ // Defining _CRTBLD should never be necessary at all, but keep it for now
+ // as there is no time to retest all the compilers before 3.0 release.
+ // Definitely do not use it with MSVS 2013 as defining it results in errors
+ // if the standard is included afterwards.
+ #if !defined(_CRTBLD) && !wxCHECK_VISUALC_VERSION(12)
// Needed when building with pure MS SDK
#define _CRTBLD
#endif
diff --git a/include/wx/msw/ole/automtn.h b/include/wx/msw/ole/automtn.h
index 8f85141f1e..1d1eb33af3 100644
--- a/include/wx/msw/ole/automtn.h
+++ b/include/wx/msw/ole/automtn.h
@@ -116,13 +116,13 @@ public:
void SetLCID(WXLCID lcid);
// Returns the flags used for conversions between wxVariant and OLE
- // VARIANT, see wxConvertVariantToOleFlags. The default value is
+ // VARIANT, see wxOleConvertVariantFlags. The default value is
// wxOleConvertVariant_Default but all the objects obtained by GetObject()
// inherit the flags from the one that created them.
long GetConvertVariantFlags() const;
// Sets the flags used for conversions between wxVariant and OLE VARIANT,
- // see wxConvertVariantToOleFlags (default is wxOleConvertVariant_Default.
+ // see wxOleConvertVariantFlags (default is wxOleConvertVariant_Default.
void SetConvertVariantFlags(long flags);
public: // public for compatibility only, don't use m_dispatchPtr directly.
diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h
index 3475f3d6b7..bd793e143b 100644
--- a/include/wx/msw/window.h
+++ b/include/wx/msw/window.h
@@ -206,7 +206,7 @@ public:
// to understand why does it work, look at SubclassWin() code and comments
bool IsOfStandardClass() const { return m_oldWndProc != NULL; }
- wxWindow *FindItem(long id) const;
+ wxWindow *FindItem(long id, WXHWND hWnd = NULL) const;
wxWindow *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const;
// MSW only: true if this control is part of the main control
@@ -663,6 +663,15 @@ protected:
bool MSWEnableHWND(WXHWND hWnd, bool enable);
+ // Return the pointer to this window or one of its sub-controls if this ID
+ // and HWND combination belongs to one of them.
+ //
+ // This is used by FindItem() and is overridden in wxControl, see there.
+ virtual wxWindow* MSWFindItem(long WXUNUSED(id), WXHWND WXUNUSED(hWnd)) const
+ {
+ return NULL;
+ }
+
private:
// common part of all ctors
void Init();
diff --git a/include/wx/osx/app.h b/include/wx/osx/app.h
index 767ee9c8bb..0eba951444 100644
--- a/include/wx/osx/app.h
+++ b/include/wx/osx/app.h
@@ -143,7 +143,7 @@ public:
virtual void MacNewFile() ;
// in response of a reopen-application apple event
virtual void MacReopenApp() ;
-
+
// override this to return false from a non-bundled console app in order to stay in background ...
virtual bool OSXIsGUIApplication() { return true; }
diff --git a/include/wx/osx/textctrl.h b/include/wx/osx/textctrl.h
index 53604bab7b..a52620b5c7 100644
--- a/include/wx/osx/textctrl.h
+++ b/include/wx/osx/textctrl.h
@@ -74,10 +74,6 @@ public:
virtual void MarkDirty();
virtual void DiscardEdits();
- // set the grayed out hint text
- virtual bool SetHint(const wxString& hint);
- virtual wxString GetHint() const;
-
// text control under some platforms supports the text styles: these
// methods apply the given text style to the given selection or to
// set/get the style which will be used for all appended text
@@ -151,7 +147,6 @@ protected:
private :
wxMenu *m_privateContextMenu;
- wxString m_hintString;
DECLARE_EVENT_TABLE()
};
diff --git a/include/wx/osx/textentry.h b/include/wx/osx/textentry.h
index 2362cae8af..12d780778a 100644
--- a/include/wx/osx/textentry.h
+++ b/include/wx/osx/textentry.h
@@ -81,6 +81,10 @@ public:
virtual bool SendMaxLenEvent();
+ // set the grayed out hint text
+ virtual bool SetHint(const wxString& hint);
+ virtual wxString GetHint() const;
+
// Implementation
// --------------
@@ -102,6 +106,8 @@ protected:
// need to make this public because of the current implementation via callbacks
unsigned long m_maxLength;
+private:
+ wxString m_hintString;
};
#endif // _WX_OSX_TEXTENTRY_H_
diff --git a/include/wx/private/textmeasure.h b/include/wx/private/textmeasure.h
index 69fbf85ab2..a4db67cb50 100644
--- a/include/wx/private/textmeasure.h
+++ b/include/wx/private/textmeasure.h
@@ -156,7 +156,7 @@ protected:
wxDECLARE_NO_COPY_CLASS(wxTextMeasureBase);
};
-// Include the platform dependant class declaration, if any.
+// Include the platform dependent class declaration, if any.
#if defined(__WXGTK20__)
#include "wx/gtk/private/textmeasure.h"
#elif defined(__WXMSW__)
diff --git a/include/wx/selstore.h b/include/wx/selstore.h
index 4361a11a9c..62ff2298ce 100644
--- a/include/wx/selstore.h
+++ b/include/wx/selstore.h
@@ -80,7 +80,7 @@ public:
private:
// (re)init
- void Init() { m_defaultState = false; }
+ void Init() { m_count = 0; m_defaultState = false; }
// the total number of items we handle
unsigned m_count;
diff --git a/include/wx/version.h b/include/wx/version.h
index c762d9a9f0..da3b44c7f1 100644
--- a/include/wx/version.h
+++ b/include/wx/version.h
@@ -29,7 +29,7 @@
#define wxMINOR_VERSION 0
#define wxRELEASE_NUMBER 0
#define wxSUBRELEASE_NUMBER 0
-#define wxVERSION_STRING wxT("wxWidgets 3.0.0 RC1")
+#define wxVERSION_STRING wxT("wxWidgets 3.0.0")
/* nothing to update below this line when updating the version */
/* ---------------------------------------------------------------------------- */
diff --git a/interface/wx/filename.h b/interface/wx/filename.h
index 344b5f8225..9477201b69 100644
--- a/interface/wx/filename.h
+++ b/interface/wx/filename.h
@@ -1271,7 +1271,7 @@ public:
@return @true on success, @false if an error occurred (for example,
the file doesn't exist).
*/
- bool SetPermissions(int permissions)
+ bool SetPermissions(int permissions);
/**
Sets the file creation and last access/modification times (any of the pointers
diff --git a/interface/wx/graphics.h b/interface/wx/graphics.h
index 96b3457508..8e2113bea6 100644
--- a/interface/wx/graphics.h
+++ b/interface/wx/graphics.h
@@ -9,7 +9,7 @@
@class wxGraphicsPath
A wxGraphicsPath is a native representation of a geometric path. The
- contents are specific an private to the respective renderer. Instances are
+ contents are specific and private to the respective renderer. Instances are
reference counted and can therefore be assigned as usual. The only way to
get a valid instance is by using wxGraphicsContext::CreatePath() or
wxGraphicsRenderer::CreatePath().
diff --git a/interface/wx/listctrl.h b/interface/wx/listctrl.h
index f2550038bc..aecce9956f 100644
--- a/interface/wx/listctrl.h
+++ b/interface/wx/listctrl.h
@@ -1372,7 +1372,7 @@ public:
/**
The data.
*/
- long GetData() const;
+ wxUIntPtr GetData() const;
/**
The image.
diff --git a/interface/wx/menu.h b/interface/wx/menu.h
index 9571021c8d..636771f2e1 100644
--- a/interface/wx/menu.h
+++ b/interface/wx/menu.h
@@ -433,8 +433,8 @@ public:
@note
Please note that @e wxID_ABOUT and @e wxID_EXIT are predefined by wxWidgets
and have a special meaning since entries using these IDs will be taken out
- of the normal menus under MacOS X and will be inserted into the system menu
- (following the appropriate MacOS X interface guideline).
+ of the normal menus under OS X and will be inserted into the system menu
+ (following the appropriate OS X interface guideline).
Menu items may be either @e normal items, @e check items or @e radio items.
Normal items don't have any special properties while the check items have a
diff --git a/interface/wx/msw/ole/automtn.h b/interface/wx/msw/ole/automtn.h
index 5f2dd6775d..893293a3e4 100644
--- a/interface/wx/msw/ole/automtn.h
+++ b/interface/wx/msw/ole/automtn.h
@@ -610,7 +610,7 @@ public:
/**
Returns the flags used for conversions between wxVariant and OLE
- VARIANT, see wxConvertVariantToOleFlags.
+ VARIANT, see wxOleConvertVariantFlags.
The default value is wxOleConvertVariant_Default for compatibility but
it can be changed using SetConvertVariantFlags().
@@ -624,7 +624,7 @@ public:
/**
Sets the flags used for conversions between wxVariant and OLE VARIANT,
- see wxConvertVariantToOleFlags.
+ see wxOleConvertVariantFlags.
The default value is wxOleConvertVariant_Default.
diff --git a/locale/eu.po b/locale/eu.po
index 689ecdd421..c36a2bb1e4 100644
--- a/locale/eu.po
+++ b/locale/eu.po
@@ -4,7 +4,7 @@ msgstr ""
"Project-Id-Version: wxWidgets 3.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 19:04+0200\n"
-"PO-Revision-Date: 2013-08-23 19:26+0100\n"
+"PO-Revision-Date: 2013-11-02 14:37+0100\n"
"Last-Translator: Xabier Aramendi (Azpidatziak) \n"
"Language-Team: (EUS_Xabier Aramendi) \n"
"Language: eu\n"
@@ -1146,14 +1146,12 @@ msgid "Add"
msgstr "Gehitua"
#: ../src/richtext/richtextbuffer.cpp:10751
-#, fuzzy
msgid "Add Column"
-msgstr "Gehitu zutabea"
+msgstr "Gehitu Zutabea"
#: ../src/richtext/richtextbuffer.cpp:10688
-#, fuzzy
msgid "Add Row"
-msgstr "Gehitu lerroa"
+msgstr "Gehitu Lerroa"
#: ../src/html/helpwnd.cpp:439
msgid "Add current page to bookmarks"
@@ -2576,14 +2574,12 @@ msgid "Delete A&ll"
msgstr "Ezabatu &Denak"
#: ../src/richtext/richtextbuffer.cpp:10637
-#, fuzzy
msgid "Delete Column"
-msgstr "Ezabatu zutabea"
+msgstr "Ezabatu Zutabea"
#: ../src/richtext/richtextbuffer.cpp:10587
-#, fuzzy
msgid "Delete Row"
-msgstr "Ezabatu lerroa"
+msgstr "Ezabatu Lerroa"
#: ../src/richtext/richtextstyledlg.cpp:779
msgid "Delete Style"
diff --git a/locale/nl.po b/locale/nl.po
index 5925463f97..9cab6a67c9 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: wxWidgets 3.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-10-01 19:04+0200\n"
-"PO-Revision-Date: 2013-07-31 14:30+0100\n"
+"PO-Revision-Date: 2013-10-30 10:18+0100\n"
"Last-Translator: Dingoe \n"
"Language-Team: wxWidgets translators \n"
"Language: nl_NL\n"
@@ -1145,14 +1145,12 @@ msgid "Add"
msgstr "Toevoegen"
#: ../src/richtext/richtextbuffer.cpp:10751
-#, fuzzy
msgid "Add Column"
-msgstr "Voeg kolom toe"
+msgstr "Kolom toevoegen"
#: ../src/richtext/richtextbuffer.cpp:10688
-#, fuzzy
msgid "Add Row"
-msgstr "voeg rij toe"
+msgstr "Rij toevoegen"
#: ../src/html/helpwnd.cpp:439
msgid "Add current page to bookmarks"
@@ -1667,7 +1665,7 @@ msgstr "Kan niet schrijven naar deflate stream: %s"
#: ../src/msw/msgdlg.cpp:489 ../src/msw/progdlg.cpp:673
#: ../src/gtk1/fontdlg.cpp:144 ../src/motif/msgdlg.cpp:196
msgid "Cancel"
-msgstr "Annuleer"
+msgstr "Annuleren"
#: ../src/os2/thread.cpp:116
msgid "Cannot create mutex."
@@ -2579,12 +2577,10 @@ msgid "Delete A&ll"
msgstr "A&lles verwijderen"
#: ../src/richtext/richtextbuffer.cpp:10637
-#, fuzzy
msgid "Delete Column"
msgstr "Kolom verwijderen"
#: ../src/richtext/richtextbuffer.cpp:10587
-#, fuzzy
msgid "Delete Row"
msgstr "Rij verwijderen"
@@ -6322,7 +6318,7 @@ msgid ""
"[Cancel] if it cannot be replaced"
msgstr ""
"De tekenset '%s' is onbekend. U kunt een andere\n"
-"tekenset kiezen om te vervangen of kies [Annuleer]\n"
+"tekenset kiezen om te vervangen of kies [Annuleren]\n"
"als het niet vervangen kan worden"
#: ../src/msw/ole/dataobj.cpp:367
diff --git a/samples/controls/controls.cpp b/samples/controls/controls.cpp
index 4410a3deab..24482f301f 100644
--- a/samples/controls/controls.cpp
+++ b/samples/controls/controls.cpp
@@ -2058,7 +2058,7 @@ void MyFrame::OnIdle( wxIdleEvent& WXUNUSED(event) )
#endif
, s_windowFocus->GetName().c_str()
#ifdef __WXMSW__
- , (unsigned int) s_windowFocus->GetHWND()
+ , (unsigned)wxPtrToUInt(s_windowFocus->GetHWND())
#endif
);
}
diff --git a/samples/listctrl/listtest.cpp b/samples/listctrl/listtest.cpp
index d5a268e6cb..f4a0a5319c 100644
--- a/samples/listctrl/listtest.cpp
+++ b/samples/listctrl/listtest.cpp
@@ -1305,9 +1305,9 @@ void MyListCtrl::OnRightClick(wxMouseEvent& event)
void MyListCtrl::LogEvent(const wxListEvent& event, const wxChar *eventName)
{
- wxLogMessage(wxT("Item %ld: %s (item text = %s, data = %ld)"),
+ wxLogMessage(wxT("Item %d: %s (item text = %s, data = %ld)"),
event.GetIndex(), eventName,
- event.GetText().c_str(), event.GetData());
+ event.GetText(), static_cast(event.GetData()));
}
wxString MyListCtrl::OnGetItemText(long item, long column) const
diff --git a/samples/popup/popup.cpp b/samples/popup/popup.cpp
index a4c059cff5..fdf102314a 100644
--- a/samples/popup/popup.cpp
+++ b/samples/popup/popup.cpp
@@ -171,42 +171,42 @@ SimpleTransientPopup::~SimpleTransientPopup()
void SimpleTransientPopup::Popup(wxWindow* WXUNUSED(focus))
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::Popup"), long(this) );
+ wxLogMessage( "%p SimpleTransientPopup::Popup", this );
wxPopupTransientWindow::Popup();
}
void SimpleTransientPopup::OnDismiss()
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnDismiss"), long(this) );
+ wxLogMessage( "%p SimpleTransientPopup::OnDismiss", this );
wxPopupTransientWindow::OnDismiss();
}
bool SimpleTransientPopup::ProcessLeftDown(wxMouseEvent& event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::ProcessLeftDown pos(%d, %d)"), long(this), event.GetX(), event.GetY());
+ wxLogMessage( "%p SimpleTransientPopup::ProcessLeftDown pos(%d, %d)", this, event.GetX(), event.GetY());
return wxPopupTransientWindow::ProcessLeftDown(event);
}
bool SimpleTransientPopup::Show( bool show )
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::Show %d"), long(this), int(show));
+ wxLogMessage( "%p SimpleTransientPopup::Show %d", this, int(show));
return wxPopupTransientWindow::Show(show);
}
void SimpleTransientPopup::OnSize(wxSizeEvent &event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnSize"), long(this) );
+ wxLogMessage( "%p SimpleTransientPopup::OnSize", this );
event.Skip();
}
void SimpleTransientPopup::OnSetFocus(wxFocusEvent &event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnSetFocus"), long(this) );
+ wxLogMessage( "%p SimpleTransientPopup::OnSetFocus", this );
event.Skip();
}
void SimpleTransientPopup::OnKillFocus(wxFocusEvent &event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnKillFocus"), long(this) );
+ wxLogMessage( "%p SimpleTransientPopup::OnKillFocus", this );
event.Skip();
}
@@ -220,8 +220,8 @@ void SimpleTransientPopup::OnMouse(wxMouseEvent &event)
if (rect.Contains(event.GetPosition()))
{
colour = wxSystemSettings::GetColour(wxSYS_COLOUR_HIGHLIGHT);
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnMouse pos(%d, %d)"),
- long(event.GetEventObject()), event.GetX(), event.GetY());
+ wxLogMessage( "%p SimpleTransientPopup::OnMouse pos(%d, %d)",
+ event.GetEventObject(), event.GetX(), event.GetY());
}
if (colour != m_mouseText->GetBackgroundColour())
@@ -234,7 +234,7 @@ void SimpleTransientPopup::OnMouse(wxMouseEvent &event)
void SimpleTransientPopup::OnButton(wxCommandEvent& event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnButton ID %d"), long(this), event.GetId());
+ wxLogMessage( "%p SimpleTransientPopup::OnButton ID %d", this, event.GetId());
wxButton *button = wxDynamicCast(event.GetEventObject(), wxButton);
if (button->GetLabel() == wxT("Press Me"))
@@ -247,8 +247,8 @@ void SimpleTransientPopup::OnButton(wxCommandEvent& event)
void SimpleTransientPopup::OnSpinCtrl(wxSpinEvent& event)
{
- wxLogMessage( wxT("0x%lx SimpleTransientPopup::OnSpinCtrl ID %d Value %d"),
- long(this), event.GetId(), event.GetInt());
+ wxLogMessage( "%p SimpleTransientPopup::OnSpinCtrl ID %d Value %d",
+ this, event.GetId(), event.GetInt());
event.Skip();
}
@@ -412,7 +412,7 @@ void MyFrame::OnStartSimplePopup(wxCommandEvent& event)
wxPoint pos = btn->ClientToScreen( wxPoint(0,0) );
wxSize sz = btn->GetSize();
m_simplePopup->Position( pos, sz );
- wxLogMessage( wxT("0x%lx Simple Popup Shown pos(%d, %d) size(%d, %d)"), long(m_simplePopup), pos.x, pos.y, sz.x, sz.y );
+ wxLogMessage( "%p Simple Popup Shown pos(%d, %d) size(%d, %d)", m_simplePopup, pos.x, pos.y, sz.x, sz.y );
m_simplePopup->Popup();
}
@@ -425,7 +425,7 @@ void MyFrame::OnStartScrolledPopup(wxCommandEvent& event)
wxPoint pos = btn->ClientToScreen( wxPoint(0,0) );
wxSize sz = btn->GetSize();
m_scrolledPopup->Position( pos, sz );
- wxLogMessage( wxT("0x%lx Scrolled Popup Shown pos(%d, %d) size(%d, %d)"), long(m_scrolledPopup), pos.x, pos.y, sz.x, sz.y );
+ wxLogMessage( "%p Scrolled Popup Shown pos(%d, %d) size(%d, %d)", m_scrolledPopup, pos.x, pos.y, sz.x, sz.y );
m_scrolledPopup->Popup();
}
@@ -488,7 +488,7 @@ void MyDialog::OnStartSimplePopup(wxCommandEvent& event)
wxPoint pos = btn->ClientToScreen( wxPoint(0,0) );
wxSize sz = btn->GetSize();
m_simplePopup->Position( pos, sz );
- wxLogMessage( wxT("0x%lx Dialog Simple Popup Shown pos(%d, %d) size(%d, %d)"), long(m_simplePopup), pos.x, pos.y, sz.x, sz.y );
+ wxLogMessage( "%p Dialog Simple Popup Shown pos(%d, %d) size(%d, %d)", m_simplePopup, pos.x, pos.y, sz.x, sz.y );
m_simplePopup->Popup();
}
@@ -501,6 +501,6 @@ void MyDialog::OnStartScrolledPopup(wxCommandEvent& event)
wxPoint pos = btn->ClientToScreen( wxPoint(0,0) );
wxSize sz = btn->GetSize();
m_scrolledPopup->Position( pos, sz );
- wxLogMessage( wxT("0x%lx Dialog Scrolled Popup Shown pos(%d, %d) size(%d, %d)"), long(m_scrolledPopup), pos.x, pos.y, sz.x, sz.y );
+ wxLogMessage( "%p Dialog Scrolled Popup Shown pos(%d, %d) size(%d, %d)", m_scrolledPopup, pos.x, pos.y, sz.x, sz.y );
m_scrolledPopup->Popup();
}
diff --git a/src/common/dlgcmn.cpp b/src/common/dlgcmn.cpp
index df7ecdff59..3f73371484 100644
--- a/src/common/dlgcmn.cpp
+++ b/src/common/dlgcmn.cpp
@@ -517,7 +517,13 @@ IMPLEMENT_DYNAMIC_CLASS(wxWindowModalDialogEvent, wxCommandEvent)
void wxDialogBase::ShowWindowModal ()
{
- ShowModal();
+ int retval = ShowModal();
+ // wxWindowModalDialogEvent relies on GetReturnCode() returning correct
+ // code. Rather than doing it manually in all ShowModal() overrides for
+ // native dialogs (and getting accidentally broken again), set it here.
+ // The worst that can happen is that it will be set twice to the same
+ // value.
+ SetReturnCode(retval);
SendWindowModalDialogEvent ( wxEVT_WINDOW_MODAL_DIALOG_CLOSED );
}
diff --git a/src/common/filename.cpp b/src/common/filename.cpp
index d538ebcc38..6acde7603c 100644
--- a/src/common/filename.cpp
+++ b/src/common/filename.cpp
@@ -315,14 +315,20 @@ static bool IsUNCPath(const wxString& path, wxPathFormat format)
!IsDOSPathSep(path[2u]);
}
-#ifndef __WIN32__
+// Under Unix-ish systems (basically everything except Windows but we can't
+// just test for non-__WIN32__ because Cygwin defines it, yet we want to use
+// lstat() under it, so test for all the rest explicitly) we may work either
+// with the file itself or its target if it's a symbolic link and we should
+// dereference it, as determined by wxFileName::ShouldFollowLink() and the
+// absence of the wxFILE_EXISTS_NO_FOLLOW flag. StatAny() can be used to stat
+// the appropriate file with an extra twist that it also works when there is no
+// wxFileName object at all, as is the case in static methods.
-// Under Unix-ish systems (basically everything except Windows) we may work
-// either with the file itself or its target if it's a symbolic link and we
-// should dereference it, as determined by wxFileName::ShouldFollowLink() and
-// the absence of the wxFILE_EXISTS_NO_FOLLOW flag. StatAny() can be used to
-// stat the appropriate file with an extra twist that it also works when there
-// is no wxFileName object at all, as is the case in static methods.
+#if defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
+ #define wxHAVE_LSTAT
+#endif
+
+#ifdef wxHAVE_LSTAT
// Private implementation, don't call directly, use one of the overloads below.
bool DoStatAny(wxStructStat& st, wxString path, bool dereference)
@@ -363,7 +369,7 @@ bool StatAny(wxStructStat& st, const wxFileName& fn)
return DoStatAny(st, fn.GetFullPath(), fn.ShouldFollowLink());
}
-#endif // !__WIN32__
+#endif // wxHAVE_LSTAT
// ----------------------------------------------------------------------------
// private constants
@@ -1851,7 +1857,7 @@ bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const
if ( fn1.GetFullPath() == fn2.GetFullPath() )
return true;
-#if defined(__UNIX__)
+#ifdef wxHAVE_LSTAT
wxStructStat st1, st2;
if ( StatAny(st1, fn1) && StatAny(st2, fn2) )
{
@@ -1859,7 +1865,7 @@ bool wxFileName::SameAs(const wxFileName& filepath, wxPathFormat format) const
return true;
}
//else: It's not an error if one or both files don't exist.
-#endif // defined __UNIX__
+#endif // wxHAVE_LSTAT
return false;
}
@@ -2752,7 +2758,7 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
return true;
}
-#elif defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__OS2__) || (defined(__DOS__) && defined(__WATCOMC__))
+#elif defined(wxHAVE_LSTAT)
// no need to test for IsDir() here
wxStructStat stBuf;
if ( StatAny(stBuf, *this) )
diff --git a/src/common/gdicmn.cpp b/src/common/gdicmn.cpp
index 2928d1dd80..4938977b10 100644
--- a/src/common/gdicmn.cpp
+++ b/src/common/gdicmn.cpp
@@ -333,7 +333,7 @@ void wxColourDatabase::Initialize()
{wxT("LIGHT GREY"), 192, 192, 192},
{wxT("LIGHT STEEL BLUE"), 143, 143, 188},
{wxT("LIME GREEN"), 50, 204, 50},
- {wxT("LIGHT MAGENTA"), 255, 0, 255},
+ {wxT("LIGHT MAGENTA"), 255, 119, 255},
{wxT("MAGENTA"), 255, 0, 255},
{wxT("MAROON"), 142, 35, 107},
{wxT("MEDIUM AQUAMARINE"), 50, 204, 153},
diff --git a/src/common/xlocale.cpp b/src/common/xlocale.cpp
index dad7778b0a..26ac4df2a3 100644
--- a/src/common/xlocale.cpp
+++ b/src/common/xlocale.cpp
@@ -76,7 +76,9 @@ wxXLocale& wxXLocale::GetCLocale()
{
if ( !gs_cLocale )
{
- wxXLocaleCTag* tag = NULL;
+ // Notice that we need a separate variable because clang 3.1 refuses to
+ // cast nullptr (which is how NULL is defined in it) to anything.
+ static wxXLocaleCTag* const tag = NULL;
gs_cLocale = new wxXLocale(tag);
}
diff --git a/src/generic/datavgen.cpp b/src/generic/datavgen.cpp
index d36e86116b..6b4bf50e75 100644
--- a/src/generic/datavgen.cpp
+++ b/src/generic/datavgen.cpp
@@ -4454,7 +4454,7 @@ void wxDataViewMainWindow::OnColumnsCountChanged()
editableCount++;
}
- m_useCellFocus = (editableCount > 1);
+ m_useCellFocus = (editableCount > 0);
UpdateDisplay();
}
diff --git a/src/generic/listctrl.cpp b/src/generic/listctrl.cpp
index 58a5c733eb..31c7478798 100644
--- a/src/generic/listctrl.cpp
+++ b/src/generic/listctrl.cpp
@@ -3496,6 +3496,12 @@ size_t wxListMainWindow::GetItemCount() const
void wxListMainWindow::SetItemCount(long count)
{
+ // Update the current item if it's not valid any longer (notice that this
+ // invalidates it completely if the control is becoming empty, which is the
+ // right thing to do).
+ if ( HasCurrent() && m_current >= (size_t)count )
+ ChangeCurrent(count - 1);
+
m_selStore.SetItemCount(count);
m_countVirt = count;
diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp
index 9413b34f73..73bff5b586 100644
--- a/src/gtk/dataview.cpp
+++ b/src/gtk/dataview.cpp
@@ -4263,6 +4263,7 @@ wxdataview_selection_changed_callback( GtkTreeSelection* WXUNUSED(selection), wx
return;
wxDataViewEvent event( wxEVT_DATAVIEW_SELECTION_CHANGED, dv->GetId() );
+ event.SetEventObject( dv );
event.SetItem( dv->GetSelection() );
event.SetModel( dv->GetModel() );
dv->HandleWindowEvent( event );
diff --git a/src/msw/combobox.cpp b/src/msw/combobox.cpp
index cb0885892e..24f187036f 100644
--- a/src/msw/combobox.cpp
+++ b/src/msw/combobox.cpp
@@ -674,4 +674,22 @@ wxSize wxComboBox::DoGetSizeFromTextSize(int xlen, int ylen) const
return tsize;
}
+wxWindow *wxComboBox::MSWFindItem(long id, WXHWND hWnd) const
+{
+ // The base class version considers that any window with the same ID as
+ // this one must be this window itself, but this is not the case for the
+ // comboboxes where the native control seems to always use the ID of 1000
+ // for the popup listbox that it creates -- and this ID may be the same as
+ // our own one. So we must explicitly check the HWND value too here and
+ // avoid eating the events from the listbox as otherwise it is rendered
+ // inoperative, see #15647.
+ if ( id == GetId() && hWnd != GetHWND() )
+ {
+ // Must be the case described above.
+ return NULL;
+ }
+
+ return wxChoice::MSWFindItem(id, hWnd);
+}
+
#endif // wxUSE_COMBOBOX
diff --git a/src/msw/control.cpp b/src/msw/control.cpp
index 1fe94bab92..4bb6ae8423 100644
--- a/src/msw/control.cpp
+++ b/src/msw/control.cpp
@@ -442,6 +442,15 @@ WXHBRUSH wxControl::MSWControlColorDisabled(WXHDC pDC)
GetHWND());
}
+wxWindow* wxControl::MSWFindItem(long id, WXHWND hWnd) const
+{
+ // is it us or one of our "internal" children?
+ if ( id == GetId() || (GetSubcontrols().Index(id) != wxNOT_FOUND) )
+ return const_cast(this);
+
+ return wxControlBase::MSWFindItem(id, hWnd);
+}
+
// ----------------------------------------------------------------------------
// wxControlWithItems
// ----------------------------------------------------------------------------
diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp
index 779e750e0c..97a4da07fc 100644
--- a/src/msw/dc.cpp
+++ b/src/msw/dc.cpp
@@ -148,7 +148,7 @@ wxAlphaBlend(HDC hdcDst, int xDst, int yDst,
#endif // wxHAS_RAW_BITMAP
-namespace wxMSW
+namespace wxMSWImpl
{
// Wrappers for the dynamically loaded {Set,Get}Layout() functions. They work
@@ -162,7 +162,7 @@ DWORD SetLayout(HDC hdc, DWORD dwLayout);
// temporary compatible memory DC to the real target DC) using the same layout.
HDC CreateCompatibleDCWithLayout(HDC hdc);
-} // namespace wxMSW
+} // namespace wxMSWImpl
// ----------------------------------------------------------------------------
// private classes
@@ -1341,7 +1341,7 @@ void wxMSWDCImpl::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool
#endif // wxUSE_SYSTEM_OPTIONS
{
HDC cdc = GetHdc();
- HDC hdcMem = wxMSW::CreateCompatibleDCWithLayout(cdc);
+ HDC hdcMem = wxMSWImpl::CreateCompatibleDCWithLayout(cdc);
HGDIOBJ hOldBitmap = ::SelectObject(hdcMem, GetHbitmapOf(bmp));
#if wxUSE_PALETTE
wxPalette *pal = bmp.GetPalette();
@@ -1382,7 +1382,7 @@ void wxMSWDCImpl::DoDrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, bool
else // no mask, just use BitBlt()
{
HDC cdc = GetHdc();
- HDC memdc = wxMSW::CreateCompatibleDCWithLayout( cdc );
+ HDC memdc = wxMSWImpl::CreateCompatibleDCWithLayout( cdc );
HBITMAP hbitmap = (HBITMAP) bmp.GetHBITMAP( );
wxASSERT_MSG( hbitmap, wxT("bitmap is ok but HBITMAP is NULL?") );
@@ -2281,8 +2281,8 @@ bool wxMSWDCImpl::DoStretchBlit(wxCoord xdest, wxCoord ydest,
buffer_bmap = (HBITMAP) bitmapCacheEntry->m_bitmap;
#else // !wxUSE_DC_CACHEING
// create a temp buffer bitmap and DCs to access it and the mask
- dc_mask = wxMSW::CreateCompatibleDCWithLayout(hdcSrc);
- dc_buffer = wxMSW::CreateCompatibleDCWithLayout(GetHdc());
+ dc_mask = wxMSWImpl::CreateCompatibleDCWithLayout(hdcSrc);
+ dc_buffer = wxMSWImpl::CreateCompatibleDCWithLayout(GetHdc());
buffer_bmap = ::CreateCompatibleBitmap(GetHdc(), dstWidth, dstHeight);
#endif // wxUSE_DC_CACHEING/!wxUSE_DC_CACHEING
HGDIOBJ hOldMaskBitmap = ::SelectObject(dc_mask, (HBITMAP) mask->GetMaskBitmap());
@@ -2595,7 +2595,7 @@ wxDCCacheEntry* wxMSWDCImpl::FindDCInCache(wxDCCacheEntry* notThis, WXHDC dc)
node = node->GetNext();
}
- WXHDC hDC = (WXHDC) wxMSW::CreateCompatibleDCWithLayout((HDC) dc);
+ WXHDC hDC = (WXHDC) wxMSWImpl::CreateCompatibleDCWithLayout((HDC) dc);
if ( !hDC)
{
wxLogLastError(wxT("CreateCompatibleDC"));
@@ -2827,7 +2827,7 @@ void wxMSWDCImpl::DoGradientFillLinear (const wxRect& rect,
#if wxUSE_DYNLIB_CLASS
-namespace wxMSW
+namespace wxMSWImpl
{
DWORD GetLayout(HDC hdc)
@@ -2853,19 +2853,19 @@ HDC CreateCompatibleDCWithLayout(HDC hdc)
HDC hdcNew = ::CreateCompatibleDC(hdc);
if ( hdcNew )
{
- DWORD dwLayout = wxMSW::GetLayout(hdc);
+ DWORD dwLayout = wxMSWImpl::GetLayout(hdc);
if ( dwLayout != GDI_ERROR )
- wxMSW::SetLayout(hdcNew, dwLayout);
+ wxMSWImpl::SetLayout(hdcNew, dwLayout);
}
return hdcNew;
}
-} // namespace wxMSW
+} // namespace wxMSWImpl
wxLayoutDirection wxMSWDCImpl::GetLayoutDirection() const
{
- DWORD layout = wxMSW::GetLayout(GetHdc());
+ DWORD layout = wxMSWImpl::GetLayout(GetHdc());
if ( layout == GDI_ERROR )
return wxLayout_Default;
@@ -2882,7 +2882,7 @@ void wxMSWDCImpl::SetLayoutDirection(wxLayoutDirection dir)
return;
}
- DWORD layout = wxMSW::GetLayout(GetHdc());
+ DWORD layout = wxMSWImpl::GetLayout(GetHdc());
if ( layout == GDI_ERROR )
return;
@@ -2891,13 +2891,13 @@ void wxMSWDCImpl::SetLayoutDirection(wxLayoutDirection dir)
else
layout &= ~LAYOUT_RTL;
- wxMSW::SetLayout(GetHdc(), layout);
+ wxMSWImpl::SetLayout(GetHdc(), layout);
}
#else // !wxUSE_DYNLIB_CLASS
// Provide stubs to avoid ifdefs in the code using these functions.
-namespace wxMSW
+namespace wxMSWImpl
{
DWORD GetLayout(HDC WXUNUSED(hdc))
@@ -2915,7 +2915,7 @@ HDC CreateCompatibleDCWithLayout(HDC hdc)
return ::CreateCompatibleDC(hdc);
}
-} // namespace wxMSW
+} // namespace wxMSWImpl
// we can't provide RTL support without dynamic loading, so stub it out
wxLayoutDirection wxMSWDCImpl::GetLayoutDirection() const
diff --git a/src/msw/msgdlg.cpp b/src/msw/msgdlg.cpp
index e44ca16d1a..02da8a94d8 100644
--- a/src/msw/msgdlg.cpp
+++ b/src/msw/msgdlg.cpp
@@ -586,9 +586,7 @@ int wxMessageDialog::ShowMessageBox()
// do show the dialog
int msAns = MessageBox(hWnd, message.t_str(), m_caption.t_str(), msStyle);
- int ret = MSWTranslateReturnCode(msAns);
- SetReturnCode(ret);
- return ret;
+ return MSWTranslateReturnCode(msAns);
}
int wxMessageDialog::ShowModal()
@@ -623,9 +621,7 @@ int wxMessageDialog::ShowModal()
msAns = IDOK;
}
- int ret = MSWTranslateReturnCode(msAns);
- SetReturnCode(ret);
- return ret;
+ return MSWTranslateReturnCode( msAns );
}
#endif // wxHAS_MSW_TASKDIALOG
diff --git a/src/msw/stattext.cpp b/src/msw/stattext.cpp
index de04f2084f..1eb8b24acd 100644
--- a/src/msw/stattext.cpp
+++ b/src/msw/stattext.cpp
@@ -110,24 +110,20 @@ wxSize wxStaticText::DoGetBestClientSize() const
widthTextMax += 2;
#endif // __WXWINCE__
- // It looks like the static control needs "slightly" more vertical space
- // than the character height and while the text isn't actually truncated if
- // we use just the minimal height, it is positioned differently than when
- // the control has enough space and this result in the text in edit and
- // static controls not being aligned when the controls themselves are. As
- // this is something you really should be able to count on, increase the
- // space allocated for the control so that the base lines do align
- // correctly. Notice that while the above is true at least for the single
- // line controls, there doesn't seem to do any harm to allocate two extra
- // pixels in multi-line case neither so do it always for consistency.
+ // This extra pixel is a hack we use to ensure that a wxStaticText
+ // vertically centered around the same position as a wxTextCtrl shows its
+ // text on exactly the same baseline. It is not clear why is this needed
+ // nor even whether this works in all cases, but it does work, at least
+ // with the default fonts, under Windows XP, 7 and 8, so just use it for
+ // now.
//
- // I still have no idea why exactly is this needed nor why should we use 2
- // and not something else. This seems to work in all the configurations
- // though (small/large fonts, different OS versions, ...) so just hard code
- // it for now. If we need something better later it might be worth looking
- // at the height of the text control returned by ::GetComboBoxInfo() as it
- // seems to be the "minimal acceptable" height.
- heightTextTotal += 2;
+ // In the future we really ought to provide a way for each of the controls
+ // to provide information about the position of the baseline for the text
+ // it shows and use this information in the sizer code when centering the
+ // controls vertically, otherwise we simply can't ensure that the text is
+ // always on the same line, e.g. even with this hack wxComboBox text is
+ // still not aligned to the same position.
+ heightTextTotal += 1;
return wxSize(widthTextMax, heightTextTotal);
}
diff --git a/src/msw/utilsexc.cpp b/src/msw/utilsexc.cpp
index 5eb38a2fc9..82c7649972 100644
--- a/src/msw/utilsexc.cpp
+++ b/src/msw/utilsexc.cpp
@@ -51,7 +51,6 @@
#endif
#if defined(__GNUWIN32__)
- #include
#include
#endif
diff --git a/src/msw/window.cpp b/src/msw/window.cpp
index 1f0f700a68..225e13d531 100644
--- a/src/msw/window.cpp
+++ b/src/msw/window.cpp
@@ -365,30 +365,21 @@ END_EVENT_TABLE()
// ---------------------------------------------------------------------------
// Find an item given the MS Windows id
-wxWindow *wxWindowMSW::FindItem(long id) const
+wxWindow *wxWindowMSW::FindItem(long id, WXHWND hWnd) const
{
-#if wxUSE_CONTROLS
- wxControl *item = wxDynamicCastThis(wxControl);
- if ( item )
- {
- // is it us or one of our "internal" children?
- if ( item->GetId() == id
-#ifndef __WXUNIVERSAL__
- || (item->GetSubcontrols().Index(id) != wxNOT_FOUND)
-#endif // __WXUNIVERSAL__
- )
- {
- return item;
- }
- }
-#endif // wxUSE_CONTROLS
+ // First check for the control itself and its Windows-level children which
+ // are mapped to the same wxWindow at wx level.
+ wxWindow *wnd = MSWFindItem(id, hWnd);
+ if ( wnd )
+ return wnd;
+ // Then check wx level children.
wxWindowList::compatibility_iterator current = GetChildren().GetFirst();
while (current)
{
wxWindow *childWin = current->GetData();
- wxWindow *wnd = childWin->FindItem(id);
+ wnd = childWin->FindItem(id, hWnd);
if ( wnd )
return wnd;
@@ -675,7 +666,8 @@ wxWindowMSW::MSWShowWithEffect(bool show,
unsigned timeout)
{
#if wxUSE_DYNLIB_CLASS
- if ( effect == wxSHOW_EFFECT_NONE )
+ if ( effect == wxSHOW_EFFECT_NONE ||
+ (GetParent() && !GetParent()->IsShownOnScreen()) )
return Show(show);
if ( !wxWindowBase::Show(show) )
@@ -5323,7 +5315,7 @@ bool wxWindowMSW::HandleCommand(WXWORD id_, WXWORD cmd, WXHWND control)
// try the id
if ( !win )
{
- win = FindItem(id);
+ win = FindItem(id, control);
}
if ( win )
diff --git a/src/osx/cocoa/listbox.mm b/src/osx/cocoa/listbox.mm
index 0cc450997e..95d36c388e 100644
--- a/src/osx/cocoa/listbox.mm
+++ b/src/osx/cocoa/listbox.mm
@@ -302,8 +302,6 @@ protected:
wxListBox *list = static_cast ( impl->GetWXPeer());
wxCHECK_RET( list != NULL , wxT("Listbox expected"));
- wxCommandEvent event( wxEVT_LISTBOX, list->GetId() );
-
if ((row < 0) || (row > (int) list->GetCount())) // OS X can select an item below the last item
return;
diff --git a/src/osx/cocoa/toolbar.mm b/src/osx/cocoa/toolbar.mm
index ebca4f42e1..701f3f45b5 100644
--- a/src/osx/cocoa/toolbar.mm
+++ b/src/osx/cocoa/toolbar.mm
@@ -254,7 +254,6 @@ public:
#endif // wxOSX_USE_NATIVE_TOOLBAR
private:
-#if wxOSX_USE_NATIVE_TOOLBAR
wxFontEncoding GetToolBarFontEncoding() const
{
wxFont f;
@@ -262,7 +261,6 @@ private:
f = GetToolBar()->GetFont();
return f.IsOk() ? f.GetEncoding() : wxFont::GetDefaultEncoding();
}
-#endif // wxOSX_USE_NATIVE_TOOLBAR
void Init()
{
@@ -689,9 +687,11 @@ wxToolBar::~wxToolBar()
frame->SetToolBar(NULL);
}
+#if wxOSX_USE_NATIVE_TOOLBAR
[(NSToolbar*)m_macToolbar setDelegate:nil];
[(NSToolbar*)m_macToolbar release];
m_macToolbar = NULL;
+#endif // wxOSX_USE_NATIVE_TOOLBAR
}
bool wxToolBar::Show( bool show )
diff --git a/src/osx/textctrl_osx.cpp b/src/osx/textctrl_osx.cpp
index dcfc0e15b4..08346e5adb 100644
--- a/src/osx/textctrl_osx.cpp
+++ b/src/osx/textctrl_osx.cpp
@@ -599,21 +599,6 @@ bool wxTextCtrl::MacSetupCursor( const wxPoint& pt )
return true ;
}
-bool wxTextCtrl::SetHint(const wxString& hint)
-{
- m_hintString = hint;
-
- if ( GetTextPeer() && GetTextPeer()->SetHint(hint) )
- return true;
-
- return false;
-}
-
-wxString wxTextCtrl::GetHint() const
-{
- return m_hintString;
-}
-
// ----------------------------------------------------------------------------
// implementation base class
// ----------------------------------------------------------------------------
diff --git a/src/osx/textentry_osx.cpp b/src/osx/textentry_osx.cpp
index 67a858ea8f..8a1466ba83 100644
--- a/src/osx/textentry_osx.cpp
+++ b/src/osx/textentry_osx.cpp
@@ -287,6 +287,18 @@ wxTextWidgetImpl * wxTextEntry::GetTextPeer() const
return win ? dynamic_cast(win->GetPeer()) : NULL;
}
+bool wxTextEntry::SetHint(const wxString& hint)
+{
+ m_hintString = hint;
+ return GetTextPeer() && GetTextPeer()->SetHint(hint);
+}
+
+wxString wxTextEntry::GetHint() const
+{
+ return m_hintString;
+}
+
+
// ----------------------------------------------------------------------------
// Auto-completion
// ----------------------------------------------------------------------------
diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp
index 63b5099321..7e6628c825 100644
--- a/src/propgrid/propgrid.cpp
+++ b/src/propgrid/propgrid.cpp
@@ -1297,8 +1297,10 @@ void wxPropertyGrid::CalculateFontAndBitmapStuff( int vspacing )
void wxPropertyGrid::OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) )
{
- RegainColours();
- Refresh();
+ if ((m_iFlags & wxPG_FL_INITIALIZED)!=0) {
+ RegainColours();
+ Refresh();
+ }
}
// -----------------------------------------------------------------------
diff --git a/src/stc/PlatWX.cpp b/src/stc/PlatWX.cpp
index b752c39689..393c3842e4 100644
--- a/src/stc/PlatWX.cpp
+++ b/src/stc/PlatWX.cpp
@@ -537,15 +537,12 @@ void SurfaceImpl::MeasureWidths(Font &font, const char *s, int len, XYPOSITION *
}
ui++;
}
-#else
-
+#else // !wxUSE_UNICODE
// If not unicode then just use the widths we have
-#if wxUSE_STD_CONTAINERS
- std::copy(tpos.begin(), tpos.end(), positions);
-#else
- memcpy(positions, tpos.begin(), len * sizeof(int));
-#endif
-#endif
+ for (int i = 0; i < len; i++) {
+ positions[i] = tpos[i];
+ }
+#endif // wxUSE_UNICODE/!wxUSE_UNICODE
}
diff --git a/src/univ/textctrl.cpp b/src/univ/textctrl.cpp
index b0efa231f6..bbee40053e 100644
--- a/src/univ/textctrl.cpp
+++ b/src/univ/textctrl.cpp
@@ -870,10 +870,10 @@ bool wxTextCtrl::ReplaceLine(wxTextCoord line,
// now change the line
MData().m_lines[line] = text;
- // OPT: we choose to lay it our immediately instead of delaying it
+ // OPT: we choose to lay it out immediately instead of delaying it
// until it is needed because it allows us to avoid invalidating
- // lines further down if the number of rows didn't chnage, but
- // maybe we can imporve this even further?
+ // lines further down if the number of rows didn't change, but
+ // maybe we can improve this even further?
LayoutLine(line, lineData);
int rowsNew = lineData.GetExtraRowCount();