From 5983274af6906e24ee93fc3f5a84da414f6198fb Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 04:49:14 +0400 Subject: [PATCH 01/36] Name the parameters of wxGetOsVersion consistently Use verMaj and verMin like almost everywhere instead of majorVsn and minorVsn in a couple of places. --- include/wx/utils.h | 4 ++-- src/osx/cocoa/utils_base.mm | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/wx/utils.h b/include/wx/utils.h index e29c131697..5581eadb3d 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -140,8 +140,8 @@ WXDLLIMPEXP_CORE wxVersionInfo wxGetLibraryVersionInfo(); WXDLLIMPEXP_BASE wxString wxGetOsDescription(); // Get OS version -WXDLLIMPEXP_BASE wxOperatingSystemId wxGetOsVersion(int *majorVsn = NULL, - int *minorVsn = NULL); +WXDLLIMPEXP_BASE wxOperatingSystemId wxGetOsVersion(int *verMaj = NULL, + int *verMin = NULL); // Check is OS version is at least the specified major and minor version WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); diff --git a/src/osx/cocoa/utils_base.mm b/src/osx/cocoa/utils_base.mm index d59ef76416..bd96e3945a 100644 --- a/src/osx/cocoa/utils_base.mm +++ b/src/osx/cocoa/utils_base.mm @@ -28,18 +28,18 @@ #endif // our OS version is the same in non GUI and GUI cases -wxOperatingSystemId wxGetOsVersion(int *majorVsn, int *minorVsn) +wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) { #ifdef wxHAS_NSPROCESSINFO if ([NSProcessInfo instancesRespondToSelector:@selector(operatingSystemVersion)]) { NSOperatingSystemVersion osVer = [NSProcessInfo processInfo].operatingSystemVersion; - if ( majorVsn != NULL ) - *majorVsn = osVer.majorVersion; + if ( verMaj != NULL ) + *verMaj = osVer.majorVersion; - if ( minorVsn != NULL ) - *minorVsn = osVer.minorVersion; + if ( verMin != NULL ) + *verMin = osVer.minorVersion; } else #endif @@ -57,11 +57,11 @@ wxGCC_WARNING_SUPPRESS(deprecated-declarations) #endif wxGCC_WARNING_RESTORE() - if ( majorVsn != NULL ) - *majorVsn = maj; + if ( verMaj != NULL ) + *verMaj = maj; - if ( minorVsn != NULL ) - *minorVsn = min; + if ( verMin != NULL ) + *verMin = min; } return wxOS_MAC_OSX_DARWIN; From b1a9c6e79e97d62f4a6875f1c6c34da72417a90b Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 06:22:33 +0400 Subject: [PATCH 02/36] Add a micro version parameter to wxGetOsVersion In addition to getting a major and minor OS version allow a micro version to be retrieved. In case of running on e.g. OS X 10.10.3 this allows the "3" to be retrieved again. --- include/wx/utils.h | 3 ++- interface/wx/utils.h | 18 ++++++++++++------ src/msw/utils.cpp | 4 +++- src/osx/cocoa/utils_base.mm | 12 ++++++++++-- src/unix/utilsunx.cpp | 4 +++- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/include/wx/utils.h b/include/wx/utils.h index 5581eadb3d..48b8842924 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -141,7 +141,8 @@ WXDLLIMPEXP_BASE wxString wxGetOsDescription(); // Get OS version WXDLLIMPEXP_BASE wxOperatingSystemId wxGetOsVersion(int *verMaj = NULL, - int *verMin = NULL); + int *verMin = NULL, + int *verMicro = NULL); // Check is OS version is at least the specified major and minor version WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); diff --git a/interface/wx/utils.h b/interface/wx/utils.h index 9b48602183..373ea8e090 100644 --- a/interface/wx/utils.h +++ b/interface/wx/utils.h @@ -842,16 +842,22 @@ wxString wxGetOsDescription(); /** Gets the version and the operating system ID for currently running OS. The returned wxOperatingSystemId value can be used for a basic categorization - of the OS family; the major and minor version numbers allows to detect a specific - system. - + of the OS family; the major, minor, and micro version numbers allows to + detect a specific system. + + If on Unix-like systems the version can't be detected all three version + numbers will have a value of -1. + + On systems where only the micro version can't be detected or doesn't make + sense such as Windows, it will have a value of 0. + For Unix-like systems (@c wxOS_UNIX) the major and minor version integers will contain the kernel major and minor version numbers (as returned by the 'uname -r' command); e.g. "4" and "1" if the machine is using kernel 4.1.4. For OS X systems (@c wxOS_MAC) the major and minor version integers are the - natural version numbers associated with the OS; e.g. "10" and "11" if the machine - is using OS X El Capitan. + natural version numbers associated with the OS; e.g. "10", "11" and "2" if + the machine is using OS X El Capitan 10.11.2. For Windows-like systems (@c wxOS_WINDOWS) the major and minor version integers will contain the following values: @@ -878,7 +884,7 @@ wxString wxGetOsDescription(); @header{wx/utils.h} */ -wxOperatingSystemId wxGetOsVersion(int* major = NULL, int* minor = NULL); +wxOperatingSystemId wxGetOsVersion(int* major = NULL, int* minor = NULL, int* micro = NULL); /** Returns @true if the version of the operating system on which the program diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 59873f6708..685ae3a5c2 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -1235,7 +1235,7 @@ bool wxIsPlatform64Bit() #endif // Win64/Win32 } -wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) +wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) { static struct { @@ -1273,6 +1273,8 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) *verMaj = s_version.verMaj; if ( verMin ) *verMin = s_version.verMin; + if ( verMicro ) + *verMicro = 0; return s_version.os; } diff --git a/src/osx/cocoa/utils_base.mm b/src/osx/cocoa/utils_base.mm index bd96e3945a..e02137935f 100644 --- a/src/osx/cocoa/utils_base.mm +++ b/src/osx/cocoa/utils_base.mm @@ -28,7 +28,7 @@ #endif // our OS version is the same in non GUI and GUI cases -wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) +wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) { #ifdef wxHAS_NSPROCESSINFO if ([NSProcessInfo instancesRespondToSelector:@selector(operatingSystemVersion)]) @@ -40,6 +40,9 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) if ( verMin != NULL ) *verMin = osVer.minorVersion; + + if ( verMicro != NULL ) + *verMicro = osVer.patchVersion; } else #endif @@ -47,13 +50,15 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) // On OS X versions prior to 10.10 NSProcessInfo does not provide the OS version // Deprecated Gestalt calls are required instead wxGCC_WARNING_SUPPRESS(deprecated-declarations) - SInt32 maj, min; + SInt32 maj, min, micro; #ifdef __WXOSX_IPHONE__ maj = 7; min = 0; + micro = 0; #else Gestalt(gestaltSystemVersionMajor, &maj); Gestalt(gestaltSystemVersionMinor, &min); + Gestalt(gestaltSystemVersionBugFix, µ); #endif wxGCC_WARNING_RESTORE() @@ -62,6 +67,9 @@ wxGCC_WARNING_RESTORE() if ( verMin != NULL ) *verMin = min; + + if ( verMicro != NULL ) + *verMicro = micro; } return wxOS_MAC_OSX_DARWIN; diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index a0db944983..fdde571959 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -1114,7 +1114,7 @@ wxLinuxDistributionInfo wxGetLinuxDistributionInfo() // these functions are in src/osx/utilsexc_base.cpp for wxMac #ifndef __DARWIN__ -wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) +wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) { // get OS version int major, minor; @@ -1131,6 +1131,8 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin) *verMaj = major; if ( verMin ) *verMin = minor; + if ( verMicro ) + *verMicro = (major == -1) ? -1 : 0; // try to understand which OS are we running wxString kernel = wxGetCommandOutput(wxT("uname -s")); From 427750e744f836492bd63068a05452b512fae1c4 Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 06:45:56 +0400 Subject: [PATCH 03/36] Detect micro version for Unix-like systems in wxGetOsVersion Check the result of running uname -r for a micro version and use it if available, otherwise return a micro version of 0. --- interface/wx/utils.h | 7 ++++--- src/unix/utilsunx.cpp | 19 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/interface/wx/utils.h b/interface/wx/utils.h index 373ea8e090..f5a3b424c2 100644 --- a/interface/wx/utils.h +++ b/interface/wx/utils.h @@ -851,9 +851,10 @@ wxString wxGetOsDescription(); On systems where only the micro version can't be detected or doesn't make sense such as Windows, it will have a value of 0. - For Unix-like systems (@c wxOS_UNIX) the major and minor version integers will - contain the kernel major and minor version numbers (as returned by the - 'uname -r' command); e.g. "4" and "1" if the machine is using kernel 4.1.4. + For Unix-like systems (@c wxOS_UNIX) the major, minor, and micro version + integers will contain the kernel's major, minor, and micro version + numbers (as returned by the 'uname -r' command); e.g. "4", "1", and "4" if + the machine is using kernel 4.1.4. For OS X systems (@c wxOS_MAC) the major and minor version integers are the natural version numbers associated with the OS; e.g. "10", "11" and "2" if diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index fdde571959..88ae40c66a 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -1117,14 +1117,19 @@ wxLinuxDistributionInfo wxGetLinuxDistributionInfo() wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) { // get OS version - int major, minor; + int major = -1, minor = -1, micro = -1; wxString release = wxGetCommandOutput(wxT("uname -r")); - if ( release.empty() || - wxSscanf(release.c_str(), wxT("%d.%d"), &major, &minor) != 2 ) + if ( !release.empty() ) { - // failed to get version string or unrecognized format - major = - minor = -1; + if ( wxSscanf(release.c_str(), wxT("%d.%d.%d"), &major, &minor, µ ) != 3 ) + { + micro = 0; + if ( wxSscanf(release.c_str(), wxT("%d.%d"), &major, &minor ) != 2 ) + { + // failed to get version string or unrecognized format + major = minor = micro = -1; + } + } } if ( verMaj ) @@ -1132,7 +1137,7 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) if ( verMin ) *verMin = minor; if ( verMicro ) - *verMicro = (major == -1) ? -1 : 0; + *verMicro = micro; // try to understand which OS are we running wxString kernel = wxGetCommandOutput(wxT("uname -s")); From ea439c278b8923311094a8e996b2c633ac066f01 Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 08:00:02 +0400 Subject: [PATCH 04/36] Add OS micro version information to wxPlatformInfo Add GetOSMicroVersion and add other micro version references in an unobtrusive way: don't change wxPlatformInfo's constructor and use default parameters for CheckOSVersion and SetOSVersion. The only change that could affect user code is the changed number of parameters for DoCheckVersion but because that is a protected function it's less likely to be a problem. --- include/wx/platinfo.h | 28 +++++++++++++++++++++------- interface/wx/platinfo.h | 26 ++++++++++++++++++-------- src/common/platinfo.cpp | 10 +++++++--- 3 files changed, 46 insertions(+), 18 deletions(-) diff --git a/include/wx/platinfo.h b/include/wx/platinfo.h index 9802f19018..178e3c6898 100644 --- a/include/wx/platinfo.h +++ b/include/wx/platinfo.h @@ -188,9 +188,11 @@ public: { return m_osVersionMajor; } int GetOSMinorVersion() const { return m_osVersionMinor; } + int GetOSMicroVersion() const + { return m_osVersionMicro; } // return true if the OS version >= major.minor - bool CheckOSVersion(int major, int minor) const; + bool CheckOSVersion(int major, int minor, int micro = 0) const; int GetToolkitMajorVersion() const { return m_tkVersionMajor; } @@ -201,8 +203,10 @@ public: { return DoCheckVersion(GetToolkitMajorVersion(), GetToolkitMinorVersion(), + 0, major, - minor); + minor, + 0); } bool IsUsingUniversalWidgets() const @@ -249,8 +253,13 @@ public: // setters // ----------------- - void SetOSVersion(int major, int minor) - { m_osVersionMajor=major; m_osVersionMinor=minor; } + void SetOSVersion(int major, int minor, int micro = 0) + { + m_osVersionMajor = major; + m_osVersionMinor = minor; + m_osVersionMicro = micro; + } + void SetToolkitVersion(int major, int minor) { m_tkVersionMajor=major; m_tkVersionMinor=minor; } @@ -277,6 +286,7 @@ public: bool IsOk() const { return m_osVersionMajor != -1 && m_osVersionMinor != -1 && + m_osVersionMicro != -1 && m_os != wxOS_UNKNOWN && !m_osDesc.IsEmpty() && m_tkVersionMajor != -1 && m_tkVersionMinor != -1 && @@ -289,9 +299,12 @@ public: protected: - static bool DoCheckVersion(int majorCur, int minorCur, int major, int minor) + static bool DoCheckVersion(int majorCur, int minorCur, int microCur, + int major, int minor, int micro) { - return majorCur > major || (majorCur == major && minorCur >= minor); + return majorCur > major + || (majorCur == major && minorCur > minor) + || (majorCur == major && minorCur == minor && microCur >= micro); } bool m_initializedForCurrentPlatform; @@ -305,7 +318,8 @@ protected: // Version of the OS; valid if m_os != wxOS_UNKNOWN // (-1 means not initialized yet). int m_osVersionMajor, - m_osVersionMinor; + m_osVersionMinor, + m_osVersionMicro; // Operating system ID. wxOperatingSystemId m_os; diff --git a/interface/wx/platinfo.h b/interface/wx/platinfo.h index 44b112fb90..c3bf10d507 100644 --- a/interface/wx/platinfo.h +++ b/interface/wx/platinfo.h @@ -12,11 +12,11 @@ The values of the constants are chosen so that they can be combined as flags; this allows to check for operating system families like e.g. @c wxOS_MAC and @c wxOS_UNIX. - + Note that you can obtain more detailed information about the current OS - version in use by checking the major and minor version numbers returned - by ::wxGetOsVersion() or by wxPlatformInfo::GetOSMajorVersion(), - wxPlatformInfo::GetOSMinorVersion(). + version in use by checking the major, minor, and micro version numbers + returned by ::wxGetOsVersion() or by wxPlatformInfo::GetOSMajorVersion(), + wxPlatformInfo::GetOSMinorVersion(), and wxPlatformInfo::GetOSMicroVersion(). */ enum wxOperatingSystemId { @@ -177,12 +177,12 @@ public: /** - Returns @true if the OS version is at least @c major.minor. + Returns @true if the OS version is at least @c major.minor.micro. - @see GetOSMajorVersion(), GetOSMinorVersion(), + @see GetOSMajorVersion(), GetOSMinorVersion(), GetOSMicroVersion(), CheckToolkitVersion() */ - bool CheckOSVersion(int major, int minor) const; + bool CheckOSVersion(int major, int minor, int micro = 0) const; /** Returns @true if the toolkit version is at least @c major.minor. @@ -348,6 +348,16 @@ public: */ int GetOSMinorVersion() const; + /** + Returns the run-time micro version of the OS associated with this + wxPlatformInfo instance. + + @see ::wxGetOsVersion(), CheckOSVersion() + + @since 3.1.1 + */ + int GetOSMicroVersion() const; + /** Returns the operating system ID of this wxPlatformInfo instance. @@ -472,7 +482,7 @@ public: Sets the version of the operating system associated with this wxPlatformInfo instance. */ - void SetOSVersion(int major, int minor); + void SetOSVersion(int major, int minor, int micro = 0); /** Sets the operating system associated with this wxPlatformInfo instance. diff --git a/src/common/platinfo.cpp b/src/common/platinfo.cpp index 41fd0c23db..0bbbf1fb61 100644 --- a/src/common/platinfo.cpp +++ b/src/common/platinfo.cpp @@ -145,6 +145,7 @@ wxPlatformInfo::wxPlatformInfo(wxPortId pid, int tkMajor, int tkMinor, m_os = id; m_osVersionMajor = osMajor; m_osVersionMinor = osMinor; + m_osVersionMicro = -1; m_endian = endian; m_arch = arch; @@ -156,6 +157,7 @@ bool wxPlatformInfo::operator==(const wxPlatformInfo &t) const m_tkVersionMinor == t.m_tkVersionMinor && m_osVersionMajor == t.m_osVersionMajor && m_osVersionMinor == t.m_osVersionMinor && + m_osVersionMicro == t.m_osVersionMicro && m_os == t.m_os && m_osDesc == t.m_osDesc && m_ldi == t.m_ldi && @@ -188,7 +190,7 @@ void wxPlatformInfo::InitForCurrentPlatform() m_desktopEnv = traits->GetDesktopEnvironment(); } - m_os = wxGetOsVersion(&m_osVersionMajor, &m_osVersionMinor); + m_os = wxGetOsVersion(&m_osVersionMajor, &m_osVersionMinor, &m_osVersionMicro); m_osDesc = wxGetOsDescription(); m_endian = wxIsPlatformLittleEndian() ? wxENDIAN_LITTLE : wxENDIAN_BIG; m_arch = wxIsPlatform64Bit() ? wxARCH_64 : wxARCH_32; @@ -298,7 +300,7 @@ wxString wxPlatformInfo::GetEndiannessName(wxEndianness end) return wxEndiannessNames[end]; } -bool wxPlatformInfo::CheckOSVersion(int major, int minor) const +bool wxPlatformInfo::CheckOSVersion(int major, int minor, int micro) const { // If this instance of wxPlatformInfo has been initialized by InitForCurrentPlatform() // this check gets forwarded to the wxCheckOsVersion which might do more than a simple @@ -308,8 +310,10 @@ bool wxPlatformInfo::CheckOSVersion(int major, int minor) const else return DoCheckVersion(GetOSMajorVersion(), GetOSMinorVersion(), + GetOSMicroVersion(), major, - minor); + minor, + micro); } // ---------------------------------------------------------------------------- From 1e78bf639e305bc7ad29395473b72667479ba8c8 Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 08:54:34 +0400 Subject: [PATCH 05/36] Add micro version to toolkit version functions Support micro versions in wxAppTraits::GetToolkitVersion and wxPlatformInfo functions related to toolkit versions. --- include/wx/apptrait.h | 9 +++++++-- include/wx/msw/apptrait.h | 8 ++++++-- include/wx/platinfo.h | 19 +++++++++++++------ include/wx/unix/apptrait.h | 4 +++- interface/wx/apptrait.h | 10 +++++++--- interface/wx/platinfo.h | 26 ++++++++++++++++++++------ src/common/platinfo.cpp | 7 +++++-- src/dfb/utils.cpp | 5 ++++- src/gtk/utilsgtk.cpp | 6 +++++- src/gtk1/utilsgtk.cpp | 6 +++++- src/motif/utils.cpp | 6 +++++- src/msw/app.cpp | 6 ++++-- src/osx/utils_osx.cpp | 6 ++++-- src/qt/apptraits.cpp | 6 +++++- src/x11/utils.cpp | 6 +++++- 15 files changed, 98 insertions(+), 32 deletions(-) diff --git a/include/wx/apptrait.h b/include/wx/apptrait.h index f459bbe908..d69a7b964c 100644 --- a/include/wx/apptrait.h +++ b/include/wx/apptrait.h @@ -130,7 +130,9 @@ public: // runtime (not compile-time) version. // returns wxPORT_BASE for console applications and one of the remaining // wxPORT_* values for GUI applications. - virtual wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL) const = 0; + virtual wxPortId GetToolkitVersion(int *majVer = NULL, + int *minVer = NULL, + int *microVer = NULL) const = 0; // return true if the port is using wxUniversal for the GUI, false if not virtual bool IsUsingUniversalWidgets() const = 0; @@ -209,13 +211,16 @@ public: virtual bool HasStderr() wxOVERRIDE; // the GetToolkitVersion for console application is always the same - virtual wxPortId GetToolkitVersion(int *verMaj = NULL, int *verMin = NULL) const wxOVERRIDE + wxPortId GetToolkitVersion(int *verMaj = NULL, + int *verMin = NULL, + int *verMicro = NULL) const wxOVERRIDE { // no toolkits (wxBase is for console applications without GUI support) // NB: zero means "no toolkit", -1 means "not initialized yet" // so we must use zero here! if (verMaj) *verMaj = 0; if (verMin) *verMin = 0; + if (verMicro) *verMicro = 0; return wxPORT_BASE; } diff --git a/include/wx/msw/apptrait.h b/include/wx/msw/apptrait.h index 6a968fe1ab..d7466482a6 100644 --- a/include/wx/msw/apptrait.h +++ b/include/wx/msw/apptrait.h @@ -49,7 +49,9 @@ public: virtual bool DoMessageFromThreadWait(); virtual WXDWORD WaitForThread(WXHANDLE hThread, int flags); #endif // wxUSE_THREADS - virtual wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL) const; + wxPortId GetToolkitVersion(int *majVer = NULL, + int *minVer = NULL, + int *microVer = NULL) const wxOVERRIDE; virtual bool CanUseStderr(); virtual bool WriteToStderr(const wxString& text); @@ -77,7 +79,9 @@ public: virtual WXDWORD WaitForThread(WXHANDLE hThread, int WXUNUSED(flags)) { return DoSimpleWaitForThread(hThread); } #endif // wxUSE_THREADS - virtual wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL) const; + virtual wxPortId GetToolkitVersion(int *majVer = NULL, + int *minVer = NULL, + int *microVer = NULL) const; virtual bool CanUseStderr() { return false; } virtual bool WriteToStderr(const wxString& WXUNUSED(text)) { return false; } diff --git a/include/wx/platinfo.h b/include/wx/platinfo.h index 178e3c6898..cc13959567 100644 --- a/include/wx/platinfo.h +++ b/include/wx/platinfo.h @@ -198,15 +198,17 @@ public: { return m_tkVersionMajor; } int GetToolkitMinorVersion() const { return m_tkVersionMinor; } + int GetToolkitMicroVersion() const + { return m_tkVersionMicro; } - bool CheckToolkitVersion(int major, int minor) const + bool CheckToolkitVersion(int major, int minor, int micro = 0) const { return DoCheckVersion(GetToolkitMajorVersion(), GetToolkitMinorVersion(), - 0, + GetToolkitMicroVersion(), major, minor, - 0); + micro); } bool IsUsingUniversalWidgets() const @@ -260,8 +262,12 @@ public: m_osVersionMicro = micro; } - void SetToolkitVersion(int major, int minor) - { m_tkVersionMajor=major; m_tkVersionMinor=minor; } + void SetToolkitVersion(int major, int minor, int micro = 0) + { + m_tkVersionMajor = major; + m_tkVersionMinor = minor; + m_tkVersionMicro = micro; + } void SetOperatingSystemId(wxOperatingSystemId n) { m_os = n; } @@ -290,6 +296,7 @@ public: m_os != wxOS_UNKNOWN && !m_osDesc.IsEmpty() && m_tkVersionMajor != -1 && m_tkVersionMinor != -1 && + m_tkVersionMicro != -1 && m_port != wxPORT_UNKNOWN && m_arch != wxARCH_INVALID && m_endian != wxENDIAN_INVALID; @@ -340,7 +347,7 @@ protected: // Version of the underlying toolkit // (-1 means not initialized yet; zero means no toolkit). - int m_tkVersionMajor, m_tkVersionMinor; + int m_tkVersionMajor, m_tkVersionMinor, m_tkVersionMicro; // name of the wxWidgets port wxPortId m_port; diff --git a/include/wx/unix/apptrait.h b/include/wx/unix/apptrait.h index 509007c51b..dc96980526 100644 --- a/include/wx/unix/apptrait.h +++ b/include/wx/unix/apptrait.h @@ -61,7 +61,9 @@ public: #if defined(__WXMAC__) && wxUSE_STDPATHS virtual wxStandardPaths& GetStandardPaths() wxOVERRIDE; #endif - virtual wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL) const wxOVERRIDE; + wxPortId GetToolkitVersion(int *majVer = NULL, + int *minVer = NULL, + int *microVer = NULL) const wxOVERRIDE; #ifdef __WXGTK20__ virtual wxString GetDesktopEnvironment() const wxOVERRIDE; diff --git a/interface/wx/apptrait.h b/interface/wx/apptrait.h index d4f8ff10d3..9eff45d838 100644 --- a/interface/wx/apptrait.h +++ b/interface/wx/apptrait.h @@ -100,8 +100,8 @@ public: /** Returns the wxWidgets port ID used by the running program and eventually - fills the given pointers with the values of the major and minor digits - of the native toolkit currently used. + fills the given pointers with the values of the major, minor, and micro + digits of the native toolkit currently used. The version numbers returned are thus detected at run-time and not compile-time (except when this is not possible e.g. wxMotif). @@ -109,8 +109,12 @@ public: E.g. if your program is using wxGTK port this function will return wxPORT_GTK and put in given pointers the versions of the GTK library in use. See wxPlatformInfo for more details. + + If a micro version is not available it will have a value of 0. */ - virtual wxPortId GetToolkitVersion(int* major = NULL, int* minor = NULL) const = 0; + virtual wxPortId GetToolkitVersion(int* major = NULL, + int* minor = NULL, + int* micro = NULL) const = 0; /** Returns @true if @c fprintf(stderr) goes somewhere, @false otherwise. diff --git a/interface/wx/platinfo.h b/interface/wx/platinfo.h index c3bf10d507..7df238c535 100644 --- a/interface/wx/platinfo.h +++ b/interface/wx/platinfo.h @@ -185,13 +185,12 @@ public: bool CheckOSVersion(int major, int minor, int micro = 0) const; /** - Returns @true if the toolkit version is at least @c major.minor. + Returns @true if the toolkit version is at least @c major.minor.micro. - @see GetToolkitMajorVersion(), - GetToolkitMinorVersion(), CheckOSVersion() + @see GetToolkitMajorVersion(), GetToolkitMinorVersion(), + GetToolkitMicroVersion(), CheckOSVersion() */ - bool CheckToolkitVersion(int major, int minor) const; - + bool CheckToolkitVersion(int major, int minor, int micro = 0) const; /** Returns @true if this instance is fully initialized with valid values. @@ -417,6 +416,21 @@ public: */ int GetToolkitMinorVersion() const; + /** + Returns the run-time micro version of the toolkit associated with this + wxPlatformInfo instance. + + Note that if GetPortId() returns @c wxPORT_BASE, then this value is zero + (unless externally modified with SetToolkitVersion()); that is, no native + toolkit is in use. + See wxAppTraits::GetToolkitVersion() for more info. + + @see CheckToolkitVersion() + + @since 3.1.1 + */ + int GetToolkitMicroVersion() const; + //@} @@ -497,7 +511,7 @@ public: /** Sets the version of the toolkit associated with this wxPlatformInfo instance. */ - void SetToolkitVersion(int major, int minor); + void SetToolkitVersion(int major, int minor, int micro = 0); /** Sets the operating system description associated with this wxPlatformInfo instance. diff --git a/src/common/platinfo.cpp b/src/common/platinfo.cpp index 0bbbf1fb61..cd6f4862eb 100644 --- a/src/common/platinfo.cpp +++ b/src/common/platinfo.cpp @@ -139,6 +139,7 @@ wxPlatformInfo::wxPlatformInfo(wxPortId pid, int tkMajor, int tkMinor, m_tkVersionMajor = tkMajor; m_tkVersionMinor = tkMinor; + m_tkVersionMicro = -1; m_port = pid; m_usingUniversal = usingUniversal; @@ -155,6 +156,7 @@ bool wxPlatformInfo::operator==(const wxPlatformInfo &t) const { return m_tkVersionMajor == t.m_tkVersionMajor && m_tkVersionMinor == t.m_tkVersionMinor && + m_tkVersionMicro == t.m_tkVersionMicro && m_osVersionMajor == t.m_osVersionMajor && m_osVersionMinor == t.m_osVersionMinor && m_osVersionMicro == t.m_osVersionMicro && @@ -181,11 +183,12 @@ void wxPlatformInfo::InitForCurrentPlatform() m_port = wxPORT_UNKNOWN; m_usingUniversal = false; m_tkVersionMajor = - m_tkVersionMinor = 0; + m_tkVersionMinor = m_tkVersionMicro = 0; } else { - m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor); + m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor, + &m_tkVersionMicro); m_usingUniversal = traits->IsUsingUniversalWidgets(); m_desktopEnv = traits->GetDesktopEnvironment(); } diff --git a/src/dfb/utils.cpp b/src/dfb/utils.cpp index 4c9c853275..57e9a3d1a1 100644 --- a/src/dfb/utils.cpp +++ b/src/dfb/utils.cpp @@ -30,10 +30,13 @@ // toolkit info // ---------------------------------------------------------------------------- -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { if ( verMaj ) *verMaj = DIRECTFB_MAJOR_VERSION; if ( verMin ) *verMaj = DIRECTFB_MINOR_VERSION; + if ( verMicro ) *verMicro = DIRECTFB_MICRO_VERSION; return wxPORT_DFB; } diff --git a/src/gtk/utilsgtk.cpp b/src/gtk/utilsgtk.cpp index 36c5013722..a4e3895ffb 100644 --- a/src/gtk/utilsgtk.cpp +++ b/src/gtk/utilsgtk.cpp @@ -183,12 +183,16 @@ const gchar *wx_pango_version_check (int major, int minor, int micro) // wxPlatformInfo-related // ---------------------------------------------------------------------------- -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { if ( verMaj ) *verMaj = gtk_major_version; if ( verMin ) *verMin = gtk_minor_version; + if ( verMicro ) + *verMicro = gtk_micro_version; return wxPORT_GTK; } diff --git a/src/gtk1/utilsgtk.cpp b/src/gtk1/utilsgtk.cpp index 4b1b170f74..c912fc9a9a 100644 --- a/src/gtk1/utilsgtk.cpp +++ b/src/gtk1/utilsgtk.cpp @@ -136,12 +136,16 @@ wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer) // wxPlatformInfo-related // ---------------------------------------------------------------------------- -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { if ( verMaj ) *verMaj = gtk_major_version; if ( verMin ) *verMin = gtk_minor_version; + if ( verMicro ) + *verMicro = gtk_micro_version; return wxPORT_GTK; } diff --git a/src/motif/utils.cpp b/src/motif/utils.cpp index 4700c3c329..d440bb0887 100644 --- a/src/motif/utils.cpp +++ b/src/motif/utils.cpp @@ -176,13 +176,17 @@ void wxBell() XBell (wxGlobalDisplay(), 0); } -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { // XmVERSION and XmREVISION are defined in Xm/Xm.h if ( verMaj ) *verMaj = XmVERSION; if ( verMin ) *verMin = XmREVISION; + if ( verMicro ) + *verMicro = 0; return wxPORT_MOTIF; } diff --git a/src/msw/app.cpp b/src/msw/app.cpp index 860bde87e3..e808d98e97 100644 --- a/src/msw/app.cpp +++ b/src/msw/app.cpp @@ -238,11 +238,13 @@ WXDWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread, int flags) } #endif // wxUSE_THREADS -wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, int *minVer) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, + int *minVer, + int *microVer) const { // on Windows, the toolkit version is the same of the OS version // as Windows integrates the OS kernel with the GUI toolkit. - wxGetOsVersion(majVer, minVer); + wxGetOsVersion(majVer, minVer, microVer); return wxPORT_MSW; } diff --git a/src/osx/utils_osx.cpp b/src/osx/utils_osx.cpp index 70e2c66096..d71457c676 100644 --- a/src/osx/utils_osx.cpp +++ b/src/osx/utils_osx.cpp @@ -169,10 +169,12 @@ void wxDisplaySizeMM(int *width, int *height) } -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { // We suppose that toolkit version is the same as OS version under Mac - wxGetOsVersion(verMaj, verMin); + wxGetOsVersion(verMaj, verMin, verMicro); return wxPORT_OSX; } diff --git a/src/qt/apptraits.cpp b/src/qt/apptraits.cpp index 1c9dfdd55d..2f747d7fb9 100644 --- a/src/qt/apptraits.cpp +++ b/src/qt/apptraits.cpp @@ -39,12 +39,16 @@ wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer) // #endif -wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, int *minVer) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, + int *minVer, + int *microVer) const { if ( majVer ) *majVer = QT_VERSION >> 16; if ( minVer ) *minVer = (QT_VERSION >> 8) & 0xFF; + if ( microVer ) + *microVer = QT_VERSION & 0xFF; return wxPORT_QT; } diff --git a/src/x11/utils.cpp b/src/x11/utils.cpp index 6bbb103242..bd80ba5769 100644 --- a/src/x11/utils.cpp +++ b/src/x11/utils.cpp @@ -100,7 +100,9 @@ void wxBell() XBell ((Display*) wxGetDisplay(), 0); } -wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const +wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, + int *verMin, + int *verMicro) const { // get X protocol version Display *display = wxGlobalDisplay(); @@ -110,6 +112,8 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const *verMaj = ProtocolVersion (display); if ( verMin ) *verMin = ProtocolRevision (display); + if ( verMicro ) + *verMicro = 0; } return wxPORT_X11; From 066f540f518c4d775cc5fe3e50ce15c20dd04dee Mon Sep 17 00:00:00 2001 From: Dimitri Schoolwerth Date: Wed, 24 Jun 2015 17:31:04 +0400 Subject: [PATCH 06/36] Mention micro version changes Document the change of wxAppTraits::GetToolkitVersion which when user-overridden in the best case leads to a compile error and worst case when it already has been overridden (which is more likely) silently fails as the user-override would not be called. Also mention the micro version changes in general in changes.txt. --- docs/changes.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/changes.txt b/docs/changes.txt index af9241ee04..17af3e3bf7 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -34,6 +34,10 @@ Changes in behaviour not resulting in compilation errors - wxOSX/Carbon port doesn't exist any more, wxOSX/Cocoa will be silently used instead even if configure --with-osx_carbon option is used. +- The pure virtual function wxAppTrait::GetToolkitVersion() now has a parameter + for getting the micro version. If you override GetToolkitVersion() you need + to add this new third parameter. + Changes in behaviour which may result in build errors ----------------------------------------------------- @@ -88,6 +92,8 @@ All: - Fix wxStringTokenizer copy ctor and assignment operator. - Added wxASSERT_MSG_AT() and wxFAIL_MSG_AT() macros. - Accept replacement character in wxString::ToAscii() (Stefano D. Mtangoo). +- Add parameter to get the micro version to OS and toolkit version + functions. See wxGetOsVersion(), wxPlatformInfo, and wxAppTraits. Unix: From 84fbc12f2d8d15fb646b0d8034cf4d3c6d0f61bc Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 26 Feb 2016 16:11:17 +0100 Subject: [PATCH 07/36] Return Windows build number as micro version in wxGetOsVersion(). --- src/msw/utils.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 685ae3a5c2..0210afbc86 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -1244,7 +1244,8 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) wxOperatingSystemId os; int verMaj, - verMin; + verMin, + verMicro; } s_version; // query the OS info only once as it's not supposed to change @@ -1267,6 +1268,7 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) s_version.verMaj = info.dwMajorVersion; s_version.verMin = info.dwMinorVersion; + s_version.verMicro = info.dwBuildNumber; } if ( verMaj ) @@ -1274,7 +1276,7 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) if ( verMin ) *verMin = s_version.verMin; if ( verMicro ) - *verMicro = 0; + *verMicro = s_version.verMicro; return s_version.os; } From 3bdb4c4b210d3c85356f1ad6db679a5decfc6ccd Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 26 Feb 2016 16:22:54 +0100 Subject: [PATCH 08/36] Add micro version to wxCheckOsVersion(). --- include/wx/utils.h | 2 +- interface/wx/utils.h | 2 +- src/common/platinfo.cpp | 2 +- src/msw/utils.cpp | 10 +++++++--- src/osx/cocoa/utils_base.mm | 12 +++++++----- src/unix/utilsunx.cpp | 10 ++++++---- 6 files changed, 23 insertions(+), 15 deletions(-) diff --git a/include/wx/utils.h b/include/wx/utils.h index 48b8842924..eda281cb8d 100644 --- a/include/wx/utils.h +++ b/include/wx/utils.h @@ -145,7 +145,7 @@ WXDLLIMPEXP_BASE wxOperatingSystemId wxGetOsVersion(int *verMaj = NULL, int *verMicro = NULL); // Check is OS version is at least the specified major and minor version -WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); +WXDLLIMPEXP_BASE bool wxCheckOsVersion(int majorVsn, int minorVsn = 0, int microVsn = 0); // Get platform endianness WXDLLIMPEXP_BASE bool wxIsPlatformLittleEndian(); diff --git a/interface/wx/utils.h b/interface/wx/utils.h index f5a3b424c2..4b640351dc 100644 --- a/interface/wx/utils.h +++ b/interface/wx/utils.h @@ -897,7 +897,7 @@ wxOperatingSystemId wxGetOsVersion(int* major = NULL, int* minor = NULL, int* mi @header{wx/utils.h} */ -bool wxCheckOsVersion(int majorVsn, int minorVsn = 0); +bool wxCheckOsVersion(int majorVsn, int minorVsn = 0, int microVsn = 0); /** Returns @true if the operating system the program is running under is 64 diff --git a/src/common/platinfo.cpp b/src/common/platinfo.cpp index cd6f4862eb..f5a870f33b 100644 --- a/src/common/platinfo.cpp +++ b/src/common/platinfo.cpp @@ -309,7 +309,7 @@ bool wxPlatformInfo::CheckOSVersion(int major, int minor, int micro) const // this check gets forwarded to the wxCheckOsVersion which might do more than a simple // number check if supported by the platform if (m_initializedForCurrentPlatform) - return wxCheckOsVersion(major, minor); + return wxCheckOsVersion(major, minor, micro); else return DoCheckVersion(GetOSMajorVersion(), GetOSMinorVersion(), diff --git a/src/msw/utils.cpp b/src/msw/utils.cpp index 0210afbc86..95506b9097 100644 --- a/src/msw/utils.cpp +++ b/src/msw/utils.cpp @@ -1281,22 +1281,26 @@ wxOperatingSystemId wxGetOsVersion(int *verMaj, int *verMin, int *verMicro) return s_version.os; } -bool wxCheckOsVersion(int majorVsn, int minorVsn) +bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn) { OSVERSIONINFOEX osvi; wxZeroMemory(osvi); osvi.dwOSVersionInfoSize = sizeof(osvi); DWORDLONG const dwlConditionMask = + ::VerSetConditionMask( ::VerSetConditionMask( ::VerSetConditionMask( 0, VER_MAJORVERSION, VER_GREATER_EQUAL), - VER_MINORVERSION, VER_GREATER_EQUAL); + VER_MINORVERSION, VER_GREATER_EQUAL), + VER_BUILDNUMBER, VER_GREATER_EQUAL); osvi.dwMajorVersion = majorVsn; osvi.dwMinorVersion = minorVsn; + osvi.dwBuildNumber = microVsn; - return ::VerifyVersionInfo(&osvi, VER_MAJORVERSION | VER_MINORVERSION, dwlConditionMask) != FALSE; + return ::VerifyVersionInfo(&osvi, + VER_MAJORVERSION | VER_MINORVERSION | VER_BUILDNUMBER, dwlConditionMask) != FALSE; } wxWinVersion wxGetWinVersion() diff --git a/src/osx/cocoa/utils_base.mm b/src/osx/cocoa/utils_base.mm index e02137935f..d1a660ab1b 100644 --- a/src/osx/cocoa/utils_base.mm +++ b/src/osx/cocoa/utils_base.mm @@ -75,7 +75,7 @@ wxGCC_WARNING_RESTORE() return wxOS_MAC_OSX_DARWIN; } -bool wxCheckOsVersion(int majorVsn, int minorVsn) +bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn) { #ifdef wxHAS_NSPROCESSINFO if ([NSProcessInfo instancesRespondToSelector:@selector(isOperatingSystemAtLeastVersion:)]) @@ -83,17 +83,19 @@ bool wxCheckOsVersion(int majorVsn, int minorVsn) NSOperatingSystemVersion osVer; osVer.majorVersion = majorVsn; osVer.minorVersion = minorVsn; - osVer.patchVersion = 0; + osVer.patchVersion = microVsn; return [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:osVer] != NO; } else #endif { - int majorCur, minorCur; - wxGetOsVersion(&majorCur, &minorCur); + int majorCur, minorCur, microCur; + wxGetOsVersion(&majorCur, &minorCur, µCur); - return majorCur > majorVsn || (majorCur == majorVsn && minorCur >= minorVsn); + return majorCur > majorVsn + || (majorCur == majorVsn && minorCur >= minorVsn) + || (majorCur == majorVsn && minorCur == minorVsn && microCur >= microVsn); } } diff --git a/src/unix/utilsunx.cpp b/src/unix/utilsunx.cpp index 88ae40c66a..fdaa04b17a 100644 --- a/src/unix/utilsunx.cpp +++ b/src/unix/utilsunx.cpp @@ -1155,12 +1155,14 @@ wxString wxGetOsDescription() return wxGetCommandOutput(wxT("uname -s -r -m")); } -bool wxCheckOsVersion(int majorVsn, int minorVsn) +bool wxCheckOsVersion(int majorVsn, int minorVsn, int microVsn) { - int majorCur, minorCur; - wxGetOsVersion(&majorCur, &minorCur); + int majorCur, minorCur, microCur; + wxGetOsVersion(&majorCur, &minorCur, µCur); - return majorCur > majorVsn || (majorCur == majorVsn && minorCur >= minorVsn); + return majorCur > majorVsn + || (majorCur == majorVsn && minorCur >= minorVsn) + || (majorCur == majorVsn && minorCur == minorVsn && microCur >= microVsn); } #endif // !__DARWIN__ From 9bbfbf821cc9458920851a61ce4ff6ecfd047cee Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 3 Mar 2016 22:17:22 +0100 Subject: [PATCH 09/36] Use simpler HTML5 doctype in the documentation index Also don't pretend to be XML. --- docs/index.htm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/index.htm b/docs/index.htm index 1ba22ee05d..880723d2f0 100644 --- a/docs/index.htm +++ b/docs/index.htm @@ -1,6 +1,5 @@ - - - + + - 0 + 1 0 0 diff --git a/build/msw/makefile.bcc b/build/msw/makefile.bcc index 36bd8e1610..1d5757e4f4 100644 --- a/build/msw/makefile.bcc +++ b/build/msw/makefile.bcc @@ -39,7 +39,7 @@ MAKEARGS = -DCC="$(CC)" -DCXX="$(CXX)" -DCFLAGS="$(CFLAGS)" \ -DCFG="$(CFG)" -DCPPUNIT_CFLAGS="$(CPPUNIT_CFLAGS)" \ -DCPPUNIT_LIBS="$(CPPUNIT_LIBS)" -DRUNTIME_LIBS="$(RUNTIME_LIBS)" WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = bcc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) @@ -5561,7 +5561,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=1 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=0 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=1 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.gcc b/build/msw/makefile.gcc index 2ceea9b67b..1d8c32c6c8 100644 --- a/build/msw/makefile.gcc +++ b/build/msw/makefile.gcc @@ -33,7 +33,7 @@ MAKEARGS = LINK_DLL_FLAGS="$(LINK_DLL_FLAGS)" \ WINDRES="$(WINDRES)" CPPDEPS = -MT$@ -MF$@.d -MD -MP WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = gcc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) @@ -5736,7 +5736,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=1 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=0 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=1 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/makefile.vc b/build/msw/makefile.vc index 5a30f76808..71eeff2230 100644 --- a/build/msw/makefile.vc +++ b/build/msw/makefile.vc @@ -30,7 +30,7 @@ MAKEARGS = CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" \ CPPUNIT_CFLAGS="$(CPPUNIT_CFLAGS)" CPPUNIT_LIBS="$(CPPUNIT_LIBS)" \ RUNTIME_LIBS="$(RUNTIME_LIBS)" WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = vc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(ARCH_SUFFIX) @@ -6253,7 +6253,7 @@ $(SETUPHDIR)\wx\msw\rcdefs.h: $(SETUPHDIR)\wx\msw ..\..\include\wx\msw\genrcdefs build_cfg_file: $(SETUPHDIR) @echo WXVER_MAJOR=3 >$(BUILD_CFG_FILE) @echo WXVER_MINOR=1 >>$(BUILD_CFG_FILE) - @echo WXVER_RELEASE=0 >>$(BUILD_CFG_FILE) + @echo WXVER_RELEASE=1 >>$(BUILD_CFG_FILE) @echo BUILD=$(BUILD) >>$(BUILD_CFG_FILE) @echo MONOLITHIC=$(MONOLITHIC) >>$(BUILD_CFG_FILE) @echo SHARED=$(SHARED) >>$(BUILD_CFG_FILE) diff --git a/build/msw/wx_setup.props b/build/msw/wx_setup.props index 935d649f1a..0cee81fb4b 100644 --- a/build/msw/wx_setup.props +++ b/build/msw/wx_setup.props @@ -1,7 +1,7 @@  - 310 + 311 31 msw vc diff --git a/build/osx/wxvers.xcconfig b/build/osx/wxvers.xcconfig index 1033a57fc7..e4fe5bf103 100644 --- a/build/osx/wxvers.xcconfig +++ b/build/osx/wxvers.xcconfig @@ -1,4 +1,4 @@ // update this file with new version numbers DYLIB_COMPATIBILITY_VERSION = 3.1 -DYLIB_CURRENT_VERSION = 3.1.0 +DYLIB_CURRENT_VERSION = 3.1.1 diff --git a/configure.in b/configure.in index 3971754689..d0c441f1c3 100644 --- a/configure.in +++ b/configure.in @@ -14,7 +14,7 @@ dnl --------------------------------------------------------------------------- dnl initialization dnl --------------------------------------------------------------------------- -AC_INIT([wxWidgets], [3.1.0], [wx-dev@googlegroups.com]) +AC_INIT([wxWidgets], [3.1.1], [wx-dev@googlegroups.com]) dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package AC_CONFIG_SRCDIR([wx-config.in]) @@ -40,7 +40,7 @@ dnl wx_release_number += 1 wx_major_version_number=3 wx_minor_version_number=1 -wx_release_number=0 +wx_release_number=1 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number diff --git a/demos/bombs/Makefile.in b/demos/bombs/Makefile.in index 4d4bc80fae..2b55213594 100644 --- a/demos/bombs/Makefile.in +++ b/demos/bombs/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib BOMBS_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/demos/forty/Makefile.in b/demos/forty/Makefile.in index 0a965941e4..a5271a3991 100644 --- a/demos/forty/Makefile.in +++ b/demos/forty/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib FORTY_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/demos/fractal/Makefile.in b/demos/fractal/Makefile.in index 617b8f55a8..9e233139d5 100644 --- a/demos/fractal/Makefile.in +++ b/demos/fractal/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib FRACTAL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/demos/life/Makefile.in b/demos/life/Makefile.in index ca4431ef01..cf4b717205 100644 --- a/demos/life/Makefile.in +++ b/demos/life/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib LIFE_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/demos/poem/Makefile.in b/demos/poem/Makefile.in index 93688ed6d1..318db8b408 100644 --- a/demos/poem/Makefile.in +++ b/demos/poem/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib WXPOEM_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/docs/doxygen/Doxyfile b/docs/doxygen/Doxyfile index 84d6ea57ad..a5dd625c2f 100644 --- a/docs/doxygen/Doxyfile +++ b/docs/doxygen/Doxyfile @@ -6,7 +6,7 @@ DOXYFILE_ENCODING = UTF-8 PROJECT_NAME = wxWidgets -PROJECT_NUMBER = 3.1.0 +PROJECT_NUMBER = 3.1.1 PROJECT_BRIEF = PROJECT_LOGO = logo.png OUTPUT_DIRECTORY = out diff --git a/docs/readme.txt b/docs/readme.txt index cafaa741dc..d5ae14f8c0 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1,4 +1,4 @@ -wxWidgets 3.1.0 Release Notes +wxWidgets 3.1.1 Release Notes ============================= Welcome to the latest development release of wxWidgets, a free and open source @@ -16,12 +16,12 @@ more about wxWidgets at: Documentation is available online at: -* http://docs.wxwidgets.org/3.1.0/ +* http://docs.wxwidgets.org/3.1.1/ wxWidgets sources and binaries for the selected platforms are available for download from: -* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.1.0/ +* https://github.com/wxWidgets/wxWidgets/releases/tag/v3.1.1/ Changes diff --git a/include/wx/osx/config_xcode.h b/include/wx/osx/config_xcode.h index 2f38214f8f..ca0619bc78 100644 --- a/include/wx/osx/config_xcode.h +++ b/include/wx/osx/config_xcode.h @@ -123,9 +123,9 @@ #define PACKAGE_BUGREPORT "wx-dev@googlegroups.com" #define PACKAGE_NAME "wxWidgets" -#define PACKAGE_STRING "wxWidgets 3.1.0" +#define PACKAGE_STRING "wxWidgets 3.1.1" #define PACKAGE_TARNAME "wxwidgets" -#define PACKAGE_VERSION "3.1.0" +#define PACKAGE_VERSION "3.1.1" // for regex #define WX_NO_REGEX_ADVANCED 1 diff --git a/include/wx/version.h b/include/wx/version.h index 16578dc283..57ec66fa40 100644 --- a/include/wx/version.h +++ b/include/wx/version.h @@ -27,9 +27,9 @@ /* NB: this file is parsed by automatic tools so don't change its format! */ #define wxMAJOR_VERSION 3 #define wxMINOR_VERSION 1 -#define wxRELEASE_NUMBER 0 +#define wxRELEASE_NUMBER 1 #define wxSUBRELEASE_NUMBER 0 -#define wxVERSION_STRING wxT("wxWidgets 3.1.0") +#define wxVERSION_STRING wxT("wxWidgets 3.1.1") /* nothing to update below this line when updating the version */ /* ---------------------------------------------------------------------------- */ diff --git a/misc/scripts/inc_release b/misc/scripts/inc_release index dfea623b29..76e067b957 100755 --- a/misc/scripts/inc_release +++ b/misc/scripts/inc_release @@ -78,9 +78,6 @@ run_sed configure.in \ run_sed build/osx/wxvers.xcconfig \ "/DYLIB_.* = /s/$ver_for_sed/$ver_string_new/" -run_sed build/tools/bld_chm_exe.bat \ - "/^SET WXW_VER=/s/$ver_for_sed/$ver_string_new/" - run_sed docs/readme.txt \ "/wxWidgets /s/$ver_for_sed/$ver_string_new/" \ "/\//s/$ver_for_sed/$ver_string_new/" \ @@ -101,8 +98,6 @@ run_sed samples/Info.plist \ "/version/s/$ver_for_sed/$ver_string_new/" \ "//s/$ver_for_sed/$ver_string_new/" -run_sed samples/minimal/Info_carbon.plist \ - "//s/$ver_for_sed/$ver_string_new/" run_sed samples/minimal/Info_cocoa.plist \ "//s/$ver_for_sed/$ver_string_new/" @@ -110,4 +105,13 @@ run_sed samples/docview/Info.plist \ "/versionon/s/$ver_for_sed/$ver_string_new/" \ "//s/$ver_for_sed/$ver_string_new/" +msgn " processing MSVS 200x project files ... " +for f in build/msw/wx_vc[789]*.vcproj; do + sed -i -e 's/\(\(msw\|base\)$ver_major$ver_minor\)$ver_release/\1$ver_release_new/g' $f +done +msgc "done" + +run_sed build/msw/wx_setup.props \ + "//s/\($ver_major$ver_minor\)$ver_release/\1$ver_release_new/" + msg "Don't forget to change the C:R:A triplet in build/bakefiles/version.bkl now!" diff --git a/samples/Info.plist b/samples/Info.plist index cc6e9483ed..51607647cd 100644 --- a/samples/Info.plist +++ b/samples/Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.1.0, (c) 2005-2016 wxWidgets + $(PRODUCT_NAME) version 3.1.1, (c) 2005-2016 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -15,17 +15,17 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 3.1.0, (c) 2005-2016 wxWidgets + 3.1.1, (c) 2005-2016 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString - 3.1.0 + 3.1.1 CFBundleSignature ???? CFBundleVersion - 3.1.0 + 3.1.1 CSResourcesFileMapped LSRequiresCarbon diff --git a/samples/access/Makefile.in b/samples/access/Makefile.in index 361548dbd3..c431c4c3b0 100644 --- a/samples/access/Makefile.in +++ b/samples/access/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ACCESSTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/animate/Makefile.in b/samples/animate/Makefile.in index 13c257de1a..3d0ecfd878 100644 --- a/samples/animate/Makefile.in +++ b/samples/animate/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ANITEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/artprov/Makefile.in b/samples/artprov/Makefile.in index cf01dea2f8..0932729f1b 100644 --- a/samples/artprov/Makefile.in +++ b/samples/artprov/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ARTTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/aui/Makefile.in b/samples/aui/Makefile.in index 0381160b9f..3589c90bb5 100644 --- a/samples/aui/Makefile.in +++ b/samples/aui/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib AUIDEMO_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/calendar/Makefile.in b/samples/calendar/Makefile.in index cc68376340..6618fbd969 100644 --- a/samples/calendar/Makefile.in +++ b/samples/calendar/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib CALENDAR_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/caret/Makefile.in b/samples/caret/Makefile.in index 0bf5a650fe..973741d8bb 100644 --- a/samples/caret/Makefile.in +++ b/samples/caret/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib CARET_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/clipboard/Makefile.in b/samples/clipboard/Makefile.in index eb7a135dfb..22c65f1d87 100644 --- a/samples/clipboard/Makefile.in +++ b/samples/clipboard/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib CLIPBOARD_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/collpane/Makefile.in b/samples/collpane/Makefile.in index f202cc022a..d5732d87ef 100644 --- a/samples/collpane/Makefile.in +++ b/samples/collpane/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib COLLPANE_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/combo/Makefile.in b/samples/combo/Makefile.in index 0cb9c451d6..8ec1aa0225 100644 --- a/samples/combo/Makefile.in +++ b/samples/combo/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib COMBO_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/config/Makefile.in b/samples/config/Makefile.in index 830fda81d5..a9b3534ac7 100644 --- a/samples/config/Makefile.in +++ b/samples/config/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib CONFTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dataview/Makefile.in b/samples/dataview/Makefile.in index fc6288284e..9abd241ecc 100644 --- a/samples/dataview/Makefile.in +++ b/samples/dataview/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DATAVIEW_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/debugrpt/Makefile.in b/samples/debugrpt/Makefile.in index 8fce1c0916..24b02acd07 100644 --- a/samples/debugrpt/Makefile.in +++ b/samples/debugrpt/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DEBUGRPT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/dialogs/Makefile.in b/samples/dialogs/Makefile.in index 8c7d579748..c3a22fe187 100644 --- a/samples/dialogs/Makefile.in +++ b/samples/dialogs/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DIALOGS_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/dialup/Makefile.in b/samples/dialup/Makefile.in index a54f0ab4cd..6d6b85843d 100644 --- a/samples/dialup/Makefile.in +++ b/samples/dialup/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib NETTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/display/Makefile.in b/samples/display/Makefile.in index d40a145a85..c5e87d903d 100644 --- a/samples/display/Makefile.in +++ b/samples/display/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DISPLAY_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/dll/Makefile.in b/samples/dll/Makefile.in index 0f535665ea..e6308980df 100644 --- a/samples/dll/Makefile.in +++ b/samples/dll/Makefile.in @@ -48,7 +48,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MY_DLL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/dnd/Makefile.in b/samples/dnd/Makefile.in index eab03eb982..753feab706 100644 --- a/samples/dnd/Makefile.in +++ b/samples/dnd/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DND_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/docview/Info.plist b/samples/docview/Info.plist index 849ef87843..47761967bf 100644 --- a/samples/docview/Info.plist +++ b/samples/docview/Info.plist @@ -51,7 +51,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.1.0, (c) 2005-2016 wxWidgets + $(PRODUCT_NAME) version 3.1.1, (c) 2005-2016 wxWidgets CFBundleIconFile doc CFBundleIdentifier @@ -66,17 +66,17 @@ it CFBundleLongVersionString - 3.1.0, (c) 2005-2016 wxWidgets + 3.1.1, (c) 2005-2016 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString - 3.1.0 + 3.1.1 CFBundleSignature WXMA CFBundleVersion - 3.1.0 + 3.1.1 CSResourcesFileMapped LSRequiresCarbon diff --git a/samples/docview/Makefile.in b/samples/docview/Makefile.in index 629fdf2b93..18227ec5e8 100644 --- a/samples/docview/Makefile.in +++ b/samples/docview/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DOCVIEW_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/dragimag/Makefile.in b/samples/dragimag/Makefile.in index 08fbed0e57..10cee14273 100644 --- a/samples/dragimag/Makefile.in +++ b/samples/dragimag/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DRAGIMAG_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/drawing/Makefile.in b/samples/drawing/Makefile.in index 874af30ae7..472d48d930 100644 --- a/samples/drawing/Makefile.in +++ b/samples/drawing/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib DRAWING_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/erase/Makefile.in b/samples/erase/Makefile.in index ea25733d33..63a107859e 100644 --- a/samples/erase/Makefile.in +++ b/samples/erase/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ERASE_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/event/Makefile.in b/samples/event/Makefile.in index d5266ed33a..6d2379473c 100644 --- a/samples/event/Makefile.in +++ b/samples/event/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib EVENT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/except/Makefile.in b/samples/except/Makefile.in index da237a4919..3a0ce3a624 100644 --- a/samples/except/Makefile.in +++ b/samples/except/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib EXCEPT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/exec/Makefile.in b/samples/exec/Makefile.in index a24684860f..bab8738ed3 100644 --- a/samples/exec/Makefile.in +++ b/samples/exec/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib EXEC_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/font/Makefile.in b/samples/font/Makefile.in index e1a24756ef..8760626c8c 100644 --- a/samples/font/Makefile.in +++ b/samples/font/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib FONT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/fswatcher/Makefile.in b/samples/fswatcher/Makefile.in index 95ab22693c..8e83652b36 100644 --- a/samples/fswatcher/Makefile.in +++ b/samples/fswatcher/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib FSWATCHER_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/grid/Makefile.in b/samples/grid/Makefile.in index 7ba7d94991..8f29198d9b 100644 --- a/samples/grid/Makefile.in +++ b/samples/grid/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib GRID_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/help/Makefile.in b/samples/help/Makefile.in index 01d26f3e3e..480f226dd1 100644 --- a/samples/help/Makefile.in +++ b/samples/help/Makefile.in @@ -44,7 +44,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HELP_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/htlbox/Makefile.in b/samples/htlbox/Makefile.in index 31c235ce85..02aeb1d4da 100644 --- a/samples/htlbox/Makefile.in +++ b/samples/htlbox/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HTLBOX_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/html/about/Makefile.in b/samples/html/about/Makefile.in index d927b0dfb4..0d81ffd62f 100644 --- a/samples/html/about/Makefile.in +++ b/samples/html/about/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ABOUT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/html/help/Makefile.in b/samples/html/help/Makefile.in index fc9586ea4e..d5f075c085 100644 --- a/samples/html/help/Makefile.in +++ b/samples/html/help/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HTMLHELP_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/helpview/Makefile.in b/samples/html/helpview/Makefile.in index 603915e7e7..547a6ce661 100644 --- a/samples/html/helpview/Makefile.in +++ b/samples/html/helpview/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HELPVIEW_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/htmlctrl/Makefile.in b/samples/html/htmlctrl/Makefile.in index a5c25defdb..b63e814b51 100644 --- a/samples/html/htmlctrl/Makefile.in +++ b/samples/html/htmlctrl/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HTMLCTRL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/printing/Makefile.in b/samples/html/printing/Makefile.in index 55058c77b3..418b58cfd7 100644 --- a/samples/html/printing/Makefile.in +++ b/samples/html/printing/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib HTMLPRINTING_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/html/test/Makefile.in b/samples/html/test/Makefile.in index b05edfbd29..31307adbf8 100644 --- a/samples/html/test/Makefile.in +++ b/samples/html/test/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib TEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/html/virtual/Makefile.in b/samples/html/virtual/Makefile.in index 173294db86..ac6adae72b 100644 --- a/samples/html/virtual/Makefile.in +++ b/samples/html/virtual/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib VIRTUAL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/html/widget/Makefile.in b/samples/html/widget/Makefile.in index 5db8140fc6..75a21cdfa3 100644 --- a/samples/html/widget/Makefile.in +++ b/samples/html/widget/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib WIDGET_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/html/zip/Makefile.in b/samples/html/zip/Makefile.in index 437a72007f..85400c58f2 100644 --- a/samples/html/zip/Makefile.in +++ b/samples/html/zip/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ZIP_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/image/Makefile.in b/samples/image/Makefile.in index a4ee7cb5e6..492cc93e96 100644 --- a/samples/image/Makefile.in +++ b/samples/image/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib IMAGE_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/internat/Makefile.in b/samples/internat/Makefile.in index 9c1b6e9249..cec0fda725 100644 --- a/samples/internat/Makefile.in +++ b/samples/internat/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib INTERNAT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/ipc/Makefile.in b/samples/ipc/Makefile.in index f44bb3fc6d..846e1a4fe4 100644 --- a/samples/ipc/Makefile.in +++ b/samples/ipc/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib IPCCLIENT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/joytest/Makefile.in b/samples/joytest/Makefile.in index 708ddbe422..7fbfdd48ce 100644 --- a/samples/joytest/Makefile.in +++ b/samples/joytest/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib JOYTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/keyboard/Makefile.in b/samples/keyboard/Makefile.in index 0b1f0f99ba..8174f173ab 100644 --- a/samples/keyboard/Makefile.in +++ b/samples/keyboard/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib KEYBOARD_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/layout/Makefile.in b/samples/layout/Makefile.in index d2e7dc324c..68de9e75de 100644 --- a/samples/layout/Makefile.in +++ b/samples/layout/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib LAYOUT_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/listctrl/Makefile.in b/samples/listctrl/Makefile.in index 753876840e..e16051412c 100644 --- a/samples/listctrl/Makefile.in +++ b/samples/listctrl/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib LISTCTRL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/mdi/Makefile.in b/samples/mdi/Makefile.in index d70720779d..ee2d79e327 100644 --- a/samples/mdi/Makefile.in +++ b/samples/mdi/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MDI_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/mediaplayer/Makefile.in b/samples/mediaplayer/Makefile.in index 6545476e30..e5dd807c9f 100644 --- a/samples/mediaplayer/Makefile.in +++ b/samples/mediaplayer/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MEDIAPLAYER_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/memcheck/Makefile.in b/samples/memcheck/Makefile.in index 283274d636..caba2f0c8c 100644 --- a/samples/memcheck/Makefile.in +++ b/samples/memcheck/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MEMCHECK_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/menu/Makefile.in b/samples/menu/Makefile.in index c95ced3c7b..ba69a0c901 100644 --- a/samples/menu/Makefile.in +++ b/samples/menu/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MENU_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/minimal/Info_cocoa.plist b/samples/minimal/Info_cocoa.plist index 38ac7a9f05..3d95ed4145 100644 --- a/samples/minimal/Info_cocoa.plist +++ b/samples/minimal/Info_cocoa.plist @@ -7,7 +7,7 @@ CFBundleExecutable $(PRODUCT_NAME) CFBundleGetInfoString - $(PRODUCT_NAME) version 3.1.0, (c) 2005-2016 wxWidgets + $(PRODUCT_NAME) version 3.1.1, (c) 2005-2016 wxWidgets CFBundleIconFile wxmac.icns CFBundleIdentifier @@ -22,17 +22,17 @@ it CFBundleLongVersionString - 3.1.0, (c) 2005-2016 wxWidgets + 3.1.1, (c) 2005-2016 wxWidgets CFBundleName $(PRODUCT_NAME) CFBundlePackageType APPL CFBundleShortVersionString - 3.1.0 + 3.1.1 CFBundleSignature ???? CFBundleVersion - 3.1.0 + 3.1.1 NSHumanReadableCopyright Copyright 2005-2016 wxWidgets NSPrincipalClass diff --git a/samples/minimal/Makefile.in b/samples/minimal/Makefile.in index 57580cc098..992c0fb7b4 100644 --- a/samples/minimal/Makefile.in +++ b/samples/minimal/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib MINIMAL_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/nativdlg/Makefile.in b/samples/nativdlg/Makefile.in index 1198474708..2b0a0c2b20 100644 --- a/samples/nativdlg/Makefile.in +++ b/samples/nativdlg/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib NATIVDLG_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/notebook/Makefile.in b/samples/notebook/Makefile.in index 090a46507b..03f685f533 100644 --- a/samples/notebook/Makefile.in +++ b/samples/notebook/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib NOTEBOOK_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/oleauto/Makefile.in b/samples/oleauto/Makefile.in index 51508f502b..5c9aef6415 100644 --- a/samples/oleauto/Makefile.in +++ b/samples/oleauto/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib OLEAUTO_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/opengl/cube/Makefile.in b/samples/opengl/cube/Makefile.in index 8e4965db18..ed2f2120cb 100644 --- a/samples/opengl/cube/Makefile.in +++ b/samples/opengl/cube/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib CUBE_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/opengl/isosurf/Makefile.in b/samples/opengl/isosurf/Makefile.in index e9b6ca84f9..a00bf7532d 100644 --- a/samples/opengl/isosurf/Makefile.in +++ b/samples/opengl/isosurf/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib ISOSURF_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/opengl/penguin/Makefile.in b/samples/opengl/penguin/Makefile.in index daaed9b092..0f2cba9ffc 100644 --- a/samples/opengl/penguin/Makefile.in +++ b/samples/opengl/penguin/Makefile.in @@ -45,7 +45,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib PENGUIN_CFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/opengl/pyramid/Makefile.in b/samples/opengl/pyramid/Makefile.in index 5dcc1b69c0..46546ef67d 100644 --- a/samples/opengl/pyramid/Makefile.in +++ b/samples/opengl/pyramid/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib PYRAMID_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/ownerdrw/Makefile.in b/samples/ownerdrw/Makefile.in index 65ae1c5587..b6b0ff737b 100644 --- a/samples/ownerdrw/Makefile.in +++ b/samples/ownerdrw/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib OWNERDRW_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/popup/Makefile.in b/samples/popup/Makefile.in index b8e257b5be..91e6570072 100644 --- a/samples/popup/Makefile.in +++ b/samples/popup/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib POPUP_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/power/Makefile.in b/samples/power/Makefile.in index 02d92c32b8..f6e0f150f3 100644 --- a/samples/power/Makefile.in +++ b/samples/power/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib POWER_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/preferences/Makefile.in b/samples/preferences/Makefile.in index d2b94005a6..f27c25561e 100644 --- a/samples/preferences/Makefile.in +++ b/samples/preferences/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib PREFERENCES_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/printing/Makefile.in b/samples/printing/Makefile.in index 856d359021..7ff37fde6c 100644 --- a/samples/printing/Makefile.in +++ b/samples/printing/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib PRINTING_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/propgrid/Makefile.in b/samples/propgrid/Makefile.in index effb7f9b61..dd23cb77dd 100644 --- a/samples/propgrid/Makefile.in +++ b/samples/propgrid/Makefile.in @@ -43,7 +43,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib PROPGRID_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) \ $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \ diff --git a/samples/regtest/Makefile.in b/samples/regtest/Makefile.in index ffe00a9d14..18d6e92f0f 100644 --- a/samples/regtest/Makefile.in +++ b/samples/regtest/Makefile.in @@ -42,7 +42,7 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 -WX_VERSION = $(WX_RELEASE).0 +WX_VERSION = $(WX_RELEASE).1 LIBDIRNAME = $(wx_top_builddir)/lib REGTEST_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) \ diff --git a/samples/render/Makefile.in b/samples/render/Makefile.in index 54d675b370..8423a762a3 100644 --- a/samples/render/Makefile.in +++ b/samples/render/Makefile.in @@ -51,8 +51,8 @@ wx_top_builddir = @wx_top_builddir@ DESTDIR = WX_RELEASE = 3.1 WX_RELEASE_NODOT = 31 -WX_VERSION = $(WX_RELEASE).0 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION = $(WX_RELEASE).1 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 LIBDIRNAME = $(wx_top_builddir)/lib PLUGINS_INST_DIR = $(libdir)/wx/$(PLUGIN_VERSION0) RENDER_CXXFLAGS = -D__WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) \ diff --git a/samples/render/makefile.bcc b/samples/render/makefile.bcc index bea9a23d54..6dd40d2e90 100644 --- a/samples/render/makefile.bcc +++ b/samples/render/makefile.bcc @@ -22,7 +22,7 @@ BCCDIR = $(MAKEDIR)\.. ### Variables: ### WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = bcc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) diff --git a/samples/render/makefile.gcc b/samples/render/makefile.gcc index 15a5201b65..db9de08669 100644 --- a/samples/render/makefile.gcc +++ b/samples/render/makefile.gcc @@ -14,7 +14,7 @@ include ../../build/msw/config.gcc CPPDEPS = -MT$@ -MF$@.d -MD -MP WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = gcc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG) diff --git a/samples/render/makefile.vc b/samples/render/makefile.vc index 753c6fee99..47f1deaf95 100644 --- a/samples/render/makefile.vc +++ b/samples/render/makefile.vc @@ -13,7 +13,7 @@ ### Variables: ### WX_RELEASE_NODOT = 31 -WX_VERSION_NODOT = $(WX_RELEASE_NODOT)0 +WX_VERSION_NODOT = $(WX_RELEASE_NODOT)1 COMPILER_PREFIX = vc OBJS = \ $(COMPILER_PREFIX)$(COMPILER_VERSION)_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WXDLLFLAG)$(CFG)$(ARCH_SUFFIX) diff --git a/samples/render/render_vc7_renddll.vcproj b/samples/render/render_vc7_renddll.vcproj index 203a104135..618238cd45 100644 --- a/samples/render/render_vc7_renddll.vcproj +++ b/samples/render/render_vc7_renddll.vcproj @@ -36,7 +36,7 @@ BufferSecurityCheck="TRUE" RuntimeTypeInfo="TRUE" ObjectFile="vc_mswuddll\renddll\" - ProgramDataBaseFileName="vc_mswuddll\renddll_mswud310_vc.pdb" + ProgramDataBaseFileName="vc_mswuddll\renddll_mswud311_vc.pdb" WarningLevel="4" SuppressStartupBanner="TRUE" Detect64BitPortabilityProblems="TRUE" @@ -47,12 +47,12 @@ Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib" - OutputFile="vc_mswuddll\renddll_mswud310_vc.dll" + OutputFile="vc_mswuddll\renddll_mswud311_vc.dll" LinkIncremental="2" SuppressStartupBanner="TRUE" AdditionalLibraryDirectories=".\..\..\lib\vc_dll" GenerateDebugInformation="TRUE" - ProgramDatabaseFile="vc_mswuddll\renddll_mswud310_vc.pdb" + ProgramDatabaseFile="vc_mswuddll\renddll_mswud311_vc.pdb" TargetMachine="1"/> diff --git a/samples/render/render_vc8_renddll.vcproj b/samples/render/render_vc8_renddll.vcproj index db3fd66ae4..88fafb9251 100644 --- a/samples/render/render_vc8_renddll.vcproj +++ b/samples/render/render_vc8_renddll.vcproj @@ -62,7 +62,7 @@ BufferSecurityCheck="true" RuntimeTypeInfo="true" ObjectFile="vc_mswuddll\renddll\" - ProgramDataBaseFileName="vc_mswuddll\renddll_mswud310_vc.pdb" + ProgramDataBaseFileName="vc_mswuddll\renddll_mswud311_vc.pdb" WarningLevel="4" SuppressStartupBanner="true" Detect64BitPortabilityProblems="true" @@ -84,13 +84,13 @@ Name="VCLinkerTool" AdditionalOptions="" AdditionalDependencies="wxmsw31ud_core.lib wxbase31ud.lib wxtiffd.lib wxjpegd.lib wxpngd.lib wxzlibd.lib wxregexud.lib wxexpatd.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib winspool.lib winmm.lib shell32.lib shlwapi.lib comctl32.lib ole32.lib oleaut32.lib uuid.lib rpcrt4.lib advapi32.lib version.lib wsock32.lib wininet.lib" - OutputFile="vc_mswuddll\renddll_mswud310_vc.dll" + OutputFile="vc_mswuddll\renddll_mswud311_vc.dll" LinkIncremental="2" SuppressStartupBanner="true" AdditionalLibraryDirectories=".\..\..\lib\vc_dll" GenerateManifest="true" GenerateDebugInformation="true" - ProgramDatabaseFile="vc_mswuddll\renddll_mswud310_vc.pdb" + ProgramDatabaseFile="vc_mswuddll\renddll_mswud311_vc.pdb" TargetMachine="1" /> Date: Thu, 3 Mar 2016 23:43:46 +0100 Subject: [PATCH 13/36] Discourage the use of wxTAB_TRAVERSAL in the documentation This style should almost never be used in the application code, it's mostly an implementation detail (but not quite as it might make sense to turn it off for some wxPanel, at least in theory). --- interface/wx/window.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/interface/wx/window.h b/interface/wx/window.h index 5c145e7464..e3f55cade6 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -150,7 +150,9 @@ enum wxWindowVariant The window is transparent, that is, it will not receive paint events. Windows only. @style{wxTAB_TRAVERSAL} - Use this to enable tab traversal for non-dialog windows. + This style is used by wxWidgets for the windows supporting TAB + navigation among their children, such as wxDialog and wxPanel. It + should almost never be used in the application code. @style{wxWANTS_CHARS} Use this to indicate that the window wants to get all char/key events for all keys - even for keys like TAB or ENTER which are From 5d9c578df302e17301245be168da08c63736b691 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 4 Mar 2016 14:44:52 +0100 Subject: [PATCH 14/36] Fix build with wxUSE_WINRT=1 and wxUSE_UNICODE=0 IShellLink interface methods take narrow strings in non-Unicode build. Closes #17422. --- src/msw/rt/notifmsgrt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/msw/rt/notifmsgrt.cpp b/src/msw/rt/notifmsgrt.cpp index 1d2808d685..cbf9ae1817 100644 --- a/src/msw/rt/notifmsgrt.cpp +++ b/src/msw/rt/notifmsgrt.cpp @@ -348,9 +348,9 @@ public: else { // Create new shortcut - if ( FAILED(shellLink->SetPath(wxStandardPaths::Get().GetExecutablePath().wc_str())) ) + if ( FAILED(shellLink->SetPath(wxStandardPaths::Get().GetExecutablePath().t_str())) ) return false; - if ( FAILED(shellLink->SetArguments(L"")) ) + if ( FAILED(shellLink->SetArguments(wxT(""))) ) return false; writeShortcut = true; From 59b29a3a71939733a40542c58d07c38efc8b593c Mon Sep 17 00:00:00 2001 From: Kolya Kosenko Date: Fri, 4 Mar 2016 14:47:32 +0100 Subject: [PATCH 15/36] Reset wxStaticBitmap image when passed empty bitmap in wxGTK This makes the behaviour consistent with the other ports. Closes #17420. --- src/gtk/statbmp.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/gtk/statbmp.cpp b/src/gtk/statbmp.cpp index bfe5c1ef38..4a56efc6f1 100644 --- a/src/gtk/statbmp.cpp +++ b/src/gtk/statbmp.cpp @@ -59,15 +59,15 @@ void wxStaticBitmap::SetBitmap( const wxBitmap &bitmap ) { m_bitmap = bitmap; + // always use pixbuf, because pixmap mask does not + // work with disabled images in some themes if (m_bitmap.IsOk()) - { - // always use pixbuf, because pixmap mask does not - // work with disabled images in some themes gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget), m_bitmap.GetPixbuf()); + else + gtk_image_set_from_pixbuf(GTK_IMAGE(m_widget), NULL); - InvalidateBestSize(); - SetSize(GetBestSize()); - } + InvalidateBestSize(); + SetSize(GetBestSize()); } // static From 0be596bde2750d187df0c8ee334ace8b749f928a Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 4 Mar 2016 14:49:40 +0100 Subject: [PATCH 16/36] Move micro version in the change log under the correct version It was wrongly merged under 3.1.0 in aa766062872b02cd9684fd2f1e4837e2cc31d33e, move it under 3.1.1 (and reword slightly). --- docs/changes.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index e01e2cfe40..b90c896d10 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -55,6 +55,11 @@ Changes in behaviour which may result in build errors 3.1.1: (not released yet) ---------------------------- +All: + +- Add support for the micro version (third component) to OS and toolkit version + functions. See wxGetOsVersion(), wxPlatformInfo, and wxAppTraits. + wxMSW: - Fix crash when using wxCHMHelpController() in 64 bit builds (Xlord2). @@ -104,8 +109,6 @@ All: - Fix wxStringTokenizer copy ctor and assignment operator. - Added wxASSERT_MSG_AT() and wxFAIL_MSG_AT() macros. - Accept replacement character in wxString::ToAscii() (Stefano D. Mtangoo). -- Add parameter to get the micro version to OS and toolkit version - functions. See wxGetOsVersion(), wxPlatformInfo, and wxAppTraits. Unix: From 148dc11f885a9505bb36d2b30eed30d464f5f984 Mon Sep 17 00:00:00 2001 From: John Roberts Date: Fri, 4 Mar 2016 14:53:30 +0100 Subject: [PATCH 17/36] Fix wxFLP_DEFAULT_STYLE documentation Document that it includes wxFLP_USE_TEXTCTRL under OS X too, not just under MSW as previously stated. Closes #17421. --- interface/wx/filepicker.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/wx/filepicker.h b/interface/wx/filepicker.h index a52f7f8b76..6261f5e023 100644 --- a/interface/wx/filepicker.h +++ b/interface/wx/filepicker.h @@ -36,7 +36,7 @@ wxEventType wxEVT_DIRPICKER_CHANGED; @beginStyleTable @style{wxFLP_DEFAULT_STYLE} The default style: includes wxFLP_OPEN | wxFLP_FILE_MUST_EXIST and, - under wxMSW only, wxFLP_USE_TEXTCTRL. + under wxMSW and wxOSX, wxFLP_USE_TEXTCTRL. @style{wxFLP_USE_TEXTCTRL} Creates a text control to the left of the picker button which is completely managed by the wxFilePickerCtrl and which can be used by From 7c32ef2ba3bc53339df1d8e6aa637dcc6b6a1081 Mon Sep 17 00:00:00 2001 From: John Roberts Date: Fri, 4 Mar 2016 14:56:17 +0100 Subject: [PATCH 18/36] Remove extra borders around wxFilePickerCtrl in wxOSX Don't use extra borders to reserve space for the focus ring, this breaks alignment of wxFilePickerCtrl with the other controls. Closes #17416. --- docs/changes.txt | 1 + include/wx/pickerbase.h | 17 ++--------------- 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index b90c896d10..0820cb4d17 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -66,6 +66,7 @@ wxMSW: wxOSX: +- Remove extra borders around wxFilePickerCtrl (John Roberts). - Turn off automatic quotes substitutions in wxTextCtrl (Xlord2). diff --git a/include/wx/pickerbase.h b/include/wx/pickerbase.h index 6c1f1cb0d0..f4ec165784 100644 --- a/include/wx/pickerbase.h +++ b/include/wx/pickerbase.h @@ -152,25 +152,12 @@ protected: int GetDefaultPickerCtrlFlag() const { - // on macintosh, without additional borders - // there's not enough space for focus rect - return wxALIGN_CENTER_VERTICAL -#ifdef __WXMAC__ - | wxTOP | wxRIGHT | wxBOTTOM -#endif - ; + return wxALIGN_CENTER_VERTICAL; } int GetDefaultTextCtrlFlag() const { - // on macintosh, without wxALL there's not enough space for focus rect - return wxALIGN_CENTER_VERTICAL -#ifdef __WXMAC__ - | wxALL -#else - | wxRIGHT -#endif - ; + return wxALIGN_CENTER_VERTICAL | wxRIGHT; } void PostCreation(); From da7388c9c8f875c4136b79c547e7663fe9bc41f7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 4 Mar 2016 15:17:35 +0100 Subject: [PATCH 19/36] Make wxLogInfo() work even without wxLog::SetVerbose() It's confusing that wxLogInfo() and wxLogVerbose() are exactly the same and the former, and not only the latter, doesn't do anything unless SetVerbose() had been called, even if the log level is wxLOG_Info or higher. Fix this by checking for GetVerbose() in wxLogVerbose() only and making wxLogInfo() check the log level only. This makes it very similar to wxLogMessage() but this is not such a bad thing. Also improve wxLogVerbose() documentation. --- docs/changes.txt | 2 ++ include/wx/log.h | 9 ++++----- interface/wx/log.h | 28 +++++++++++++++++++++++++--- src/generic/logg.cpp | 1 - 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 0820cb4d17..f701982499 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -59,6 +59,8 @@ All: - Add support for the micro version (third component) to OS and toolkit version functions. See wxGetOsVersion(), wxPlatformInfo, and wxAppTraits. +- wxLogInfo() now logs messages if the log level is high enough, even without + wxLog::SetVerbose() which now only affects wxLogVerbose(). wxMSW: diff --git a/include/wx/log.h b/include/wx/log.h index 5775c14d72..cbc15efde9 100644 --- a/include/wx/log.h +++ b/include/wx/log.h @@ -1272,6 +1272,10 @@ WXDLLIMPEXP_BASE const wxChar* wxSysErrorMsg(unsigned long nErrCode = 0); #define wxLogMessage wxDO_LOG_IF_ENABLED(Message) #define wxVLogMessage(format, argptr) wxDO_LOGV(Message, format, argptr) +#define wxLogInfo wxDO_LOG_IF_ENABLED(Info) +#define wxVLogInfo(format, argptr) wxDO_LOGV(Info, format, argptr) + + // this one is special as it only logs if we're in verbose mode #define wxLogVerbose \ if ( !(wxLog::IsLevelEnabled(wxLOG_Info, wxLOG_COMPONENT) && \ @@ -1286,11 +1290,6 @@ WXDLLIMPEXP_BASE const wxChar* wxSysErrorMsg(unsigned long nErrCode = 0); else \ wxDO_LOGV(Info, format, argptr) -// deprecated synonyms for wxLogVerbose() and wxVLogVerbose() -#define wxLogInfo wxLogVerbose -#define wxVLogInfo wxVLogVerbose - - // another special case: the level is passed as first argument of the function // and so is not available to the macro // diff --git a/interface/wx/log.h b/interface/wx/log.h index 6eb75b7f22..d365548d54 100644 --- a/interface/wx/log.h +++ b/interface/wx/log.h @@ -1261,9 +1261,31 @@ void wxVLogMessage(const char* formatString, va_list argPtr); /** @addtogroup group_funcmacro_log */ //@{ /** - For verbose output. Normally, it is suppressed, but might be activated if - the user wishes to know more details about the program progress (another, - but possibly confusing name for the same function could be @c wxLogInfo). + For low priority messages. + + They are handled in the same way as messages logged by wxLogMessage() by + the default logger but could be handled differently by the custom loggers. + + @header{wx/log.h} +*/ +void wxLogInfo(const char* formatString, ... ); +void wxVLogInfo(const char* formatString, va_list argPtr); +//@} + +/** @addtogroup group_funcmacro_log */ +//@{ +/** + For verbose output. + + Messages generated by these functions are suppressed by default, even if + the log level is higher than ::wxLOG_Info and need to be explicitly + activated by calling wxLog::SetVerbose(). + + Notice that this is done automatically by wxWidgets, unless the standard + command line handling is overridden, if @c --verbose option is specified on + the program command line, so using these functions provides a simple way of + having some diagnostic messages not shown by default but which can be + easily shown by the user if needed. @header{wx/log.h} */ diff --git a/src/generic/logg.cpp b/src/generic/logg.cpp index e57f003b2b..36c832d389 100644 --- a/src/generic/logg.cpp +++ b/src/generic/logg.cpp @@ -341,7 +341,6 @@ void wxLogGui::DoLogRecord(wxLogLevel level, switch ( level ) { case wxLOG_Info: - if ( GetVerbose() ) case wxLOG_Message: { m_aMessages.Add(msg); From 54cbd22ded556860cce0ea4fc49a02a1f942ea9e Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 4 Mar 2016 14:17:41 +0100 Subject: [PATCH 20/36] Remove OS X statusbar code targeting MacOS. --- src/osx/carbon/statbrma.cpp | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/src/osx/carbon/statbrma.cpp b/src/osx/carbon/statbrma.cpp index 35e1b86893..9bc4274227 100644 --- a/src/osx/carbon/statbrma.cpp +++ b/src/osx/carbon/statbrma.cpp @@ -125,27 +125,17 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event)) wxPaintDC dc(this); dc.Clear(); - int major, minor; - wxGetOsVersion( &major, &minor ); int w, h; GetSize( &w, &h ); if ( MacIsReallyHilited() ) { wxPen white( *wxWHITE , 1 , wxPENSTYLE_SOLID ); - if (major >= 10) - { - // Finder statusbar border color: (Project Builder similar is 9B9B9B) - if ( MacGetTopLevelWindow()->GetExtraStyle() & wxFRAME_EX_METAL ) - dc.SetPen(wxPen(wxColour(0x40, 0x40, 0x40), 1, wxPENSTYLE_SOLID)); - else - dc.SetPen(wxPen(wxColour(0xB1, 0xB1, 0xB1), 1, wxPENSTYLE_SOLID)); - } + // Finder statusbar border color: (Project Builder similar is 9B9B9B) + if ( MacGetTopLevelWindow()->GetExtraStyle() & wxFRAME_EX_METAL ) + dc.SetPen(wxPen(wxColour(0x40, 0x40, 0x40), 1, wxPENSTYLE_SOLID)); else - { - wxPen black( *wxBLACK , 1 , wxPENSTYLE_SOLID ); - dc.SetPen(black); - } + dc.SetPen(wxPen(wxColour(0xB1, 0xB1, 0xB1), 1, wxPENSTYLE_SOLID)); dc.DrawLine(0, 0, w, 0); dc.SetPen(white); @@ -153,11 +143,8 @@ void wxStatusBarMac::OnPaint(wxPaintEvent& WXUNUSED(event)) } else { - if (major >= 10) - // Finder statusbar border color: (Project Builder similar is 9B9B9B) - dc.SetPen(wxPen(wxColour(0xB1, 0xB1, 0xB1), 1, wxPENSTYLE_SOLID)); - else - dc.SetPen(wxPen(wxColour(0x80, 0x80, 0x80), 1, wxPENSTYLE_SOLID)); + // Finder statusbar border color: (Project Builder similar is 9B9B9B) + dc.SetPen(wxPen(wxColour(0xB1, 0xB1, 0xB1), 1, wxPENSTYLE_SOLID)); dc.DrawLine(0, 0, w, 0); } From d0d4018748f03528f56e319b949102d58c71f6f4 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 4 Mar 2016 14:21:57 +0100 Subject: [PATCH 21/36] Remove unused OS X carbon resource files. --- src/osx/carbon/apprsrc.r | 1 - src/osx/carbon/carbrsrc.r | 7 -- src/osx/carbon/corersrc.r | 159 -------------------------------------- 3 files changed, 167 deletions(-) delete mode 100644 src/osx/carbon/apprsrc.r delete mode 100644 src/osx/carbon/carbrsrc.r delete mode 100644 src/osx/carbon/corersrc.r diff --git a/src/osx/carbon/apprsrc.r b/src/osx/carbon/apprsrc.r deleted file mode 100644 index 4113a172a0..0000000000 --- a/src/osx/carbon/apprsrc.r +++ /dev/null @@ -1 +0,0 @@ -/* not needed anymore */ diff --git a/src/osx/carbon/carbrsrc.r b/src/osx/carbon/carbrsrc.r deleted file mode 100644 index 9326cc3b56..0000000000 --- a/src/osx/carbon/carbrsrc.r +++ /dev/null @@ -1,7 +0,0 @@ -// carbon for 9 -data 'carb' (0) { - $"0000" /* .. */ -}; - -// the plist resource should only be included in the application -// since it contains the bundle information and should not be duplicated diff --git a/src/osx/carbon/corersrc.r b/src/osx/carbon/corersrc.r deleted file mode 100644 index 676a4d3d2a..0000000000 --- a/src/osx/carbon/corersrc.r +++ /dev/null @@ -1,159 +0,0 @@ -#ifdef __UNIX__ - #include -#else - #include - #if UNIVERSAL_INTERFACES_VERSION > 0x320 - #include - #endif -#endif - -resource 'ldes' ( 128 ) -{ - versionZero - { - 0 , - 0 , - 0 , - 0 , - hasVertScroll , - noHorizScroll , - 0 , - noGrowSpace , - } -} ; - -resource 'ldes' ( 129 ) -{ - versionZero - { - 0 , - 0 , - 0 , - 0 , - hasVertScroll , - hasHorizScroll , - 0 , - noGrowSpace , - } -} ; - -data 'CURS' (10) { - $"0000 03E0 0630 0808 1004 31C6 2362 2222" - $"2362 31C6 1004 0808 0630 03E0 0000 0000" - $"0000 03E0 07F0 0FF8 1FFC 3FFE 3FFE 3FFE" - $"3FFE 3FFE 1FFC 0FF8 07F0 03E0 0000 0000" - $"0007 0008" -}; - -data 'CURS' (11) { - $"0000 0000 0000 0000 0000 0000 0000 0000" - $"0000 0000 0000 0000 0000 0000 0000 0000" - $"0000 0000 0000 0000 0000 0000 0000 0000" - $"0000 0000 0000 0000 0000 0000 0000 0000" - $"0000 0000" -}; - -data 'CURS' (12) { - $"00F0 0088 0108 0190 0270 0220 0440 0440" - $"0880 0880 1100 1E00 1C00 1800 1000 0000" - $"00F0 00F8 01F8 01F0 03F0 03E0 07C0 07C0" - $"0F80 0F80 1F00 1E00 1C00 1800 1000 0000" - $"000E 0003" -}; - -data 'CURS' (13) { - $"0000 1E00 2100 4080 4080 4080 4080 2180" - $"1FC0 00E0 0070 0038 001C 000E 0006 0000" - $"3F00 7F80 FFC0 FFC0 FFC0 FFC0 FFC0 7FC0" - $"3FE0 1FF0 00F8 007C 003E 001F 000F 0007" - $"0004 0004" -}; - -data 'CURS' (14) { - $"0000 07E0 1FF0 3838 3C0C 6E0E 6706 6386" - $"61C6 60E6 7076 303C 1C1C 0FF8 07E0 0000" - $"0540 0FF0 3FF8 3C3C 7E0E FF0F 6F86 E7C7" - $"63E6 E1F7 70FE 707E 3C3C 1FFC 0FF0 0540" - $"0007 0007" -}; - -data 'CURS' (15) { - $"0000 0380 0380 0380 0380 0380 0380 0FE0" - $"1FF0 1FF0 0000 1FF0 1FF0 1550 1550 1550" - $"07C0 07C0 07C0 07C0 07C0 07C0 0FE0 1FF0" - $"3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8 3FF8" - $"000B 0007" -}; - -data 'CURS' (16) { - $"00C0 0140 0640 08C0 3180 47FE 8001 8001" - $"81FE 8040 01C0 0040 03C0 C080 3F80 0000" - $"00C0 01C0 07C0 0FC0 3F80 7FFE FFFF FFFF" - $"FFFE FFC0 FFC0 FFC0 FFC0 FF80 3F80 0000" - $"0006 000F" -}; - -data 'CURS' (17) { - $"0100 0280 0260 0310 018C 7FE3 8000 8000" - $"7F80 0200 0380 0200 03C0 0107 01F8 0000" - $"0100 0380 03E0 03F0 01FC 7FFF FFFF FFFF" - $"FFFF 03FF 03FF 03FF 03FF 01FF 01F8 0000" - $"0006 0000" -}; - -data 'CURS' (18) { - $"0000 4078 60FC 71CE 7986 7C06 7E0E 7F1C" - $"7FB8 7C30 6C30 4600 0630 0330 0300 0000" - $"C078 E0FC F1FE FBFF FFCF FF8F FF1F FFBE" - $"FFFC FE78 FF78 EFF8 CFF8 87F8 07F8 0300" - $"0001 0001" -}; - -data 'CURS' (19) { - $"0000 0002 0006 000E 001E 003E 007E 00FE" - $"01FE 003E 0036 0062 0060 00C0 00C0 0000" - $"0003 0007 000F 001F 003F 007F 00FF 01FF" - $"03FF 07FF 007F 00F7 00F3 01E1 01E0 01C0" - $"0001 000E" -}; - -data 'CURS' (20) { - $"0000 0080 01C0 03E0 0080 0080 0080 1FFC" - $"1FFC 0080 0080 0080 03E0 01C0 0080 0000" - $"0080 01C0 03E0 07F0 0FF8 01C0 3FFE 3FFE" - $"3FFE 3FFE 01C0 0FF8 07F0 03E0 01C0 0080" - $"0007 0008" -}; - -data 'CURS' (21) { - $"0000 0080 01C0 03E0 0080 0888 188C 3FFE" - $"188C 0888 0080 03E0 01C0 0080 0000 0000" - $"0080 01C0 03E0 07F0 0BE8 1DDC 3FFE 7FFF" - $"3FFE 1DDC 0BE8 07F0 03E0 01C0 0080 0000" - $"0007 0008" -}; - -data 'CURS' (22) { - $"0000 001E 000E 060E 0712 03A0 01C0 00E0" - $"0170 1238 1C18 1C00 1E00 0000 0000 0000" - $"007F 003F 0E1F 0F0F 0F97 07E3 03E1 21F0" - $"31F8 3A7C 3C3C 3E1C 3F00 3F80 0000 0000" - $"0006 0009" -}; - -data 'CURS' (23) { - $"0000 7800 7000 7060 48E0 05C0 0380 0700" - $"0E80 1C48 1838 0038 0078 0000 0000 0000" - $"FE00 FC00 F870 F0F0 E9F0 C7E0 87C0 0F84" - $"1F8C 3E5C 3C3C 387C 00FC 01FC 0000 0000" - $"0006 0006" -}; - -data 'CURS' (24) { - $"0006 000E 001C 0018 0020 0040 00F8 0004" - $"1FF4 200C 2AA8 1FF0 1F80 3800 6000 8000" - $"000F 001F 003E 007C 0070 00E0 01FC 3FF6" - $"7FF6 7FFE 7FFC 7FF8 3FF0 7FC0 F800 E000" - $"000A 0006" -}; - From 1125dd8c126b58a37cce4ed6b2c088596cd0d3b9 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 4 Mar 2016 14:28:56 +0100 Subject: [PATCH 22/36] Remove remaining unused carbon implementation code. Remove code and files which should have already been removed in 5ba67c67e47d069f65d648ab16dfc505c5400bfc. --- Makefile.in | 28 - build/bakefiles/files.bkl | 1 - build/files | 1 - build/osx/wxcocoa.xcodeproj/project.pbxproj | 8 - build/osx/wxiphone.xcodeproj/project.pbxproj | 4 - include/wx/osx/glcanvas.h | 7 - src/osx/carbon/combobox.cpp | 668 ---------------- src/osx/carbon/combobxc.cpp | 783 ------------------- src/osx/carbon/dirmac.cpp | 256 ------ 9 files changed, 1756 deletions(-) delete mode 100644 src/osx/carbon/combobox.cpp delete mode 100644 src/osx/carbon/combobxc.cpp delete mode 100644 src/osx/carbon/dirmac.cpp diff --git a/Makefile.in b/Makefile.in index ab6beaf2f4..f94b6b0086 100644 --- a/Makefile.in +++ b/Makefile.in @@ -13209,7 +13209,6 @@ COND_PLATFORM_MACOSX_1___OSX_COMMON_SRC_OBJECTS = \ monodll_carbon_gdiobj.o \ monodll_carbon_icon.o \ monodll_carbon_app.o \ - monodll_carbon_combobox.o \ monodll_carbon_control.o \ monodll_carbon_dataobj.o \ monodll_carbon_dcclient.o \ @@ -13354,7 +13353,6 @@ COND_PLATFORM_MACOSX_1___OSX_COMMON_SRC_OBJECTS_0 = \ monolib_carbon_gdiobj.o \ monolib_carbon_icon.o \ monolib_carbon_app.o \ - monolib_carbon_combobox.o \ monolib_carbon_control.o \ monolib_carbon_dataobj.o \ monolib_carbon_dcclient.o \ @@ -13499,7 +13497,6 @@ COND_PLATFORM_MACOSX_1___OSX_COMMON_SRC_OBJECTS_8 = \ coredll_carbon_gdiobj.o \ coredll_carbon_icon.o \ coredll_carbon_app.o \ - coredll_carbon_combobox.o \ coredll_carbon_control.o \ coredll_carbon_dataobj.o \ coredll_carbon_dcclient.o \ @@ -13629,7 +13626,6 @@ COND_PLATFORM_MACOSX_1___OSX_COMMON_SRC_OBJECTS_9 = \ corelib_carbon_gdiobj.o \ corelib_carbon_icon.o \ corelib_carbon_app.o \ - corelib_carbon_combobox.o \ corelib_carbon_control.o \ corelib_carbon_dataobj.o \ corelib_carbon_dcclient.o \ @@ -19314,12 +19310,6 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monodll_carbon_app.o: $(srcdir)/src/osx/carbon/app.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/app.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(MONODLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monodll_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(MONODLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_carbon_control.o: $(srcdir)/src/osx/carbon/control.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/control.cpp @@ -24141,12 +24131,6 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monolib_carbon_app.o: $(srcdir)/src/osx/carbon/app.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/app.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(MONOLIB_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monolib_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(MONOLIB_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_carbon_control.o: $(srcdir)/src/osx/carbon/control.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/control.cpp @@ -29022,12 +29006,6 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_carbon_app.o: $(srcdir)/src/osx/carbon/app.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/app.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(COREDLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(COREDLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_control.o: $(srcdir)/src/osx/carbon/control.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/control.cpp @@ -32415,12 +32393,6 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_carbon_app.o: $(srcdir)/src/osx/carbon/app.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/app.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(CORELIB_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_carbon_combobox.o: $(srcdir)/src/osx/carbon/combobox.cpp $(CORELIB_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/combobox.cpp - @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_control.o: $(srcdir)/src/osx/carbon/control.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/control.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 98b0d840da..e51be9d6fc 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2275,7 +2275,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/osx/carbon/gdiobj.cpp src/osx/carbon/icon.cpp src/osx/carbon/app.cpp - src/osx/carbon/combobox.cpp src/osx/carbon/control.cpp src/osx/carbon/dataobj.cpp src/osx/carbon/dcclient.cpp diff --git a/build/files b/build/files index 216467bc67..66520c08de 100644 --- a/build/files +++ b/build/files @@ -2117,7 +2117,6 @@ OSX_COMMON_SRC = src/osx/carbon/gdiobj.cpp src/osx/carbon/icon.cpp src/osx/carbon/app.cpp - src/osx/carbon/combobox.cpp src/osx/carbon/control.cpp src/osx/carbon/dataobj.cpp src/osx/carbon/dcclient.cpp diff --git a/build/osx/wxcocoa.xcodeproj/project.pbxproj b/build/osx/wxcocoa.xcodeproj/project.pbxproj index ef21984639..9783fbdf30 100644 --- a/build/osx/wxcocoa.xcodeproj/project.pbxproj +++ b/build/osx/wxcocoa.xcodeproj/project.pbxproj @@ -2027,9 +2027,6 @@ BAFF04F1680F32DA988EB03D /* stockitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B180290089B139F18B0C7BBA /* stockitem.cpp */; }; BAFF04F1680F32DA988EB03E /* stockitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B180290089B139F18B0C7BBA /* stockitem.cpp */; }; BAFF04F1680F32DA988EB03F /* stockitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B180290089B139F18B0C7BBA /* stockitem.cpp */; }; - BB31D65BA1253A1CB64CE9D2 /* combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F26F539473705AA82411D /* combobox.cpp */; }; - BB31D65BA1253A1CB64CE9D3 /* combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F26F539473705AA82411D /* combobox.cpp */; }; - BB31D65BA1253A1CB64CE9D4 /* combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F26F539473705AA82411D /* combobox.cpp */; }; BB6FE851028C3DE7A070C213 /* convauto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20B922D61CDB3CCEB59A5194 /* convauto.cpp */; }; BB6FE851028C3DE7A070C214 /* convauto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20B922D61CDB3CCEB59A5194 /* convauto.cpp */; }; BB6FE851028C3DE7A070C215 /* convauto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20B922D61CDB3CCEB59A5194 /* convauto.cpp */; }; @@ -4272,7 +4269,6 @@ 7A1CE0B28CB73F90AE92B5AB /* richtooltipcmn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = richtooltipcmn.cpp; path = ../../src/common/richtooltipcmn.cpp; sourceTree = ""; }; 7A24E9101688368296C21EBE /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = gzclose.c; path = ../../src/zlib/gzclose.c; sourceTree = ""; }; 7A34C5BBBA543DC0A50DE1B6 /* event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = event.cpp; path = ../../src/common/event.cpp; sourceTree = ""; }; - 7A3F26F539473705AA82411D /* combobox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = combobox.cpp; path = ../../src/osx/carbon/combobox.cpp; sourceTree = ""; }; 7AF8F8A78A5130DCB4D46729 /* LexCmake.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexCmake.cxx; path = ../../src/stc/scintilla/lexers/LexCmake.cxx; sourceTree = ""; }; 7B389A14D6BF3AFD8CCE0807 /* protocol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = protocol.cpp; path = ../../src/common/protocol.cpp; sourceTree = ""; }; 7BA6ADD758693BD180D3275B /* treebase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = treebase.cpp; path = ../../src/common/treebase.cpp; sourceTree = ""; }; @@ -5326,7 +5322,6 @@ 377056CEB1FC3EEB8526E7A6 /* gdiobj.cpp */, F5DAF1F49F0F3F41A427A21D /* icon.cpp */, 757B31FCCA1F381C95B30DF8 /* app.cpp */, - 7A3F26F539473705AA82411D /* combobox.cpp */, 12363D1F50FE301DAEE7F04A /* control.cpp */, 271B4B77622B3411A7BF6634 /* dataobj.cpp */, B17772732159304AA7312D72 /* dcclient.cpp */, @@ -7527,7 +7522,6 @@ 692FCCABFB963696AFC1E124 /* gdiobj.cpp in Sources */, 01D4C5F2147F3942A7CE91AC /* icon.cpp in Sources */, B0E94A59C83637C09FAAE71E /* app.cpp in Sources */, - BB31D65BA1253A1CB64CE9D4 /* combobox.cpp in Sources */, EB52C6A91594381393294500 /* control.cpp in Sources */, 45AB45C6B24A3983B22E56A7 /* dataobj.cpp in Sources */, D088E7DDE38C31DC9C9B3419 /* dcclient.cpp in Sources */, @@ -8201,7 +8195,6 @@ 692FCCABFB963696AFC1E123 /* gdiobj.cpp in Sources */, 01D4C5F2147F3942A7CE91AB /* icon.cpp in Sources */, B0E94A59C83637C09FAAE71D /* app.cpp in Sources */, - BB31D65BA1253A1CB64CE9D3 /* combobox.cpp in Sources */, EB52C6A915943813932944FF /* control.cpp in Sources */, 45AB45C6B24A3983B22E56A6 /* dataobj.cpp in Sources */, D088E7DDE38C31DC9C9B3418 /* dcclient.cpp in Sources */, @@ -9410,7 +9403,6 @@ 692FCCABFB963696AFC1E122 /* gdiobj.cpp in Sources */, 01D4C5F2147F3942A7CE91AA /* icon.cpp in Sources */, B0E94A59C83637C09FAAE71C /* app.cpp in Sources */, - BB31D65BA1253A1CB64CE9D2 /* combobox.cpp in Sources */, EB52C6A915943813932944FE /* control.cpp in Sources */, 45AB45C6B24A3983B22E56A5 /* dataobj.cpp in Sources */, D088E7DDE38C31DC9C9B3417 /* dcclient.cpp in Sources */, diff --git a/build/osx/wxiphone.xcodeproj/project.pbxproj b/build/osx/wxiphone.xcodeproj/project.pbxproj index 4046c2ab1e..f175d3774a 100644 --- a/build/osx/wxiphone.xcodeproj/project.pbxproj +++ b/build/osx/wxiphone.xcodeproj/project.pbxproj @@ -605,7 +605,6 @@ BAA75384DA82370298672333 /* helpctrl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42E433D1700631A8907B8227 /* helpctrl.cpp */; }; BAAB6B1D80A33843A8436B10 /* appunix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B40E0F6AA0273ACD9BDEAD72 /* appunix.cpp */; }; BAFF04F1680F32DA988EB03D /* stockitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B180290089B139F18B0C7BBA /* stockitem.cpp */; }; - BB31D65BA1253A1CB64CE9D2 /* combobox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A3F26F539473705AA82411D /* combobox.cpp */; }; BB6FE851028C3DE7A070C213 /* convauto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20B922D61CDB3CCEB59A5194 /* convauto.cpp */; }; BBAABF3C693E37D3B0FF2502 /* colrdlgg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 66AC0EA493AB3B6A86DAE174 /* colrdlgg.cpp */; }; BCD81FD3D1EC305F801E1C1B /* sckipc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F6E23CCDC1932BC985EFBD2 /* sckipc.cpp */; }; @@ -1246,7 +1245,6 @@ 7A1CE0B28CB73F90AE92B5AB /* richtooltipcmn.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = richtooltipcmn.cpp; path = ../../src/common/richtooltipcmn.cpp; sourceTree = ""; }; 7A24E9101688368296C21EBE /* gzclose.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = gzclose.c; path = ../../src/zlib/gzclose.c; sourceTree = ""; }; 7A34C5BBBA543DC0A50DE1B6 /* event.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = event.cpp; path = ../../src/common/event.cpp; sourceTree = ""; }; - 7A3F26F539473705AA82411D /* combobox.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = combobox.cpp; path = ../../src/osx/carbon/combobox.cpp; sourceTree = ""; }; 7AF8F8A78A5130DCB4D46729 /* LexCmake.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LexCmake.cxx; path = ../../src/stc/scintilla/lexers/LexCmake.cxx; sourceTree = ""; }; 7B389A14D6BF3AFD8CCE0807 /* protocol.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = protocol.cpp; path = ../../src/common/protocol.cpp; sourceTree = ""; }; 7BA6ADD758693BD180D3275B /* treebase.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = treebase.cpp; path = ../../src/common/treebase.cpp; sourceTree = ""; }; @@ -1972,7 +1970,6 @@ 377056CEB1FC3EEB8526E7A6 /* gdiobj.cpp */, F5DAF1F49F0F3F41A427A21D /* icon.cpp */, 757B31FCCA1F381C95B30DF8 /* app.cpp */, - 7A3F26F539473705AA82411D /* combobox.cpp */, 12363D1F50FE301DAEE7F04A /* control.cpp */, 271B4B77622B3411A7BF6634 /* dataobj.cpp */, B17772732159304AA7312D72 /* dcclient.cpp */, @@ -3023,7 +3020,6 @@ 692FCCABFB963696AFC1E122 /* gdiobj.cpp in Sources */, 01D4C5F2147F3942A7CE91AA /* icon.cpp in Sources */, B0E94A59C83637C09FAAE71C /* app.cpp in Sources */, - BB31D65BA1253A1CB64CE9D2 /* combobox.cpp in Sources */, EB52C6A915943813932944FE /* control.cpp in Sources */, 45AB45C6B24A3983B22E56A5 /* dataobj.cpp in Sources */, D088E7DDE38C31DC9C9B3417 /* dcclient.cpp in Sources */, diff --git a/include/wx/osx/glcanvas.h b/include/wx/osx/glcanvas.h index 268b5d43a5..24cac5b5d2 100644 --- a/include/wx/osx/glcanvas.h +++ b/include/wx/osx/glcanvas.h @@ -161,13 +161,6 @@ protected: WXGLPixelFormat m_glFormat; wxGLAttributes m_GLAttrs; -#if wxOSX_USE_CARBON - bool m_macCanvasIsShown, - m_needsUpdate; - WXGLContext m_dummyContext; - GLint m_bufferName; -#endif - wxDECLARE_EVENT_TABLE(); wxDECLARE_CLASS(wxGLCanvas); }; diff --git a/src/osx/carbon/combobox.cpp b/src/osx/carbon/combobox.cpp deleted file mode 100644 index 263276c4e9..0000000000 --- a/src/osx/carbon/combobox.cpp +++ /dev/null @@ -1,668 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/carbon/combobox.cpp -// Purpose: wxComboBox class -// Author: Stefan Csomor, Dan "Bud" Keith (composite combobox) -// Modified by: -// Created: 1998-01-01 -// Copyright: (c) Stefan Csomor -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/wxprec.h" - -#if wxUSE_COMBOBOX && wxOSX_USE_CARBON - -#include "wx/combobox.h" - -#ifndef WX_PRECOMP - #include "wx/button.h" - #include "wx/menu.h" - #include "wx/containr.h" - #include "wx/toplevel.h" - #include "wx/textctrl.h" -#endif - -#include "wx/osx/private.h" - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// the margin between the text control and the choice -// margin should be bigger on OS X due to blue highlight -// around text control. -static const wxCoord MARGIN = 4; -// this is the border a focus rect on OSX is needing -static const int TEXTFOCUSBORDER = 3 ; - - -// ---------------------------------------------------------------------------- -// wxComboBoxText: text control forwards events to combobox -// ---------------------------------------------------------------------------- - -class wxComboBoxText : public wxTextCtrl -{ -public: - wxComboBoxText( wxComboBox * cb ) - : wxTextCtrl( cb , 1 ) - { - m_cb = cb; - } - -protected: - void OnChar( wxKeyEvent& event ) - { - // Allows processing the tab key to go to the next control - if (event.GetKeyCode() == WXK_TAB) - { - wxNavigationKeyEvent NavEvent; - NavEvent.SetEventObject(this); - NavEvent.SetDirection(!event.ShiftDown()); - NavEvent.SetWindowChange(false); - - // Get the parent of the combo and have it process the navigation? - if (m_cb->GetParent()->HandleWindowEvent(NavEvent)) - return; - } - - // send the event to the combobox class in case the user has bound EVT_CHAR - wxKeyEvent kevt(event); - kevt.SetEventObject(m_cb); - if (m_cb->HandleWindowEvent(kevt)) - // If the event was handled and not skipped then we're done - return; - - if ( event.GetKeyCode() == WXK_RETURN ) - { - wxCommandEvent event(wxEVT_TEXT_ENTER, m_cb->GetId()); - event.SetString( GetValue() ); - event.SetInt( m_cb->GetSelection() ); - event.SetEventObject( m_cb ); - - // This will invoke the dialog default action, - // such as the clicking the default button. - if (!m_cb->HandleWindowEvent( event )) - { - wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - if ( tlw && tlw->GetDefaultItem() ) - { - wxButton *def = wxDynamicCast(tlw->GetDefaultItem(), wxButton); - if ( def && def->IsEnabled() ) - { - wxCommandEvent event( wxEVT_BUTTON, def->GetId() ); - event.SetEventObject(def); - def->Command(event); - } - } - - return; - } - } - - event.Skip(); - } - - void OnKeyUp( wxKeyEvent& event ) - { - event.SetEventObject(m_cb); - event.SetId(m_cb->GetId()); - if (! m_cb->HandleWindowEvent(event)) - event.Skip(); - } - - void OnKeyDown( wxKeyEvent& event ) - { - event.SetEventObject(m_cb); - event.SetId(m_cb->GetId()); - if (! m_cb->HandleWindowEvent(event)) - event.Skip(); - } - - void OnText( wxCommandEvent& event ) - { - event.SetEventObject(m_cb); - event.SetId(m_cb->GetId()); - if (! m_cb->HandleWindowEvent(event)) - event.Skip(); - } - - void OnFocus( wxFocusEvent& event ) - { - // in case the textcontrol gets the focus we propagate - // it to the parent's handlers. - wxFocusEvent evt2(event.GetEventType(),m_cb->GetId()); - evt2.SetEventObject(m_cb); - m_cb->GetEventHandler()->ProcessEvent(evt2); - - event.Skip(); - } - -private: - wxComboBox *m_cb; - - wxDECLARE_EVENT_TABLE(); -}; - -wxBEGIN_EVENT_TABLE(wxComboBoxText, wxTextCtrl) - EVT_KEY_DOWN(wxComboBoxText::OnKeyDown) - EVT_CHAR(wxComboBoxText::OnChar) - EVT_KEY_UP(wxComboBoxText::OnKeyUp) - EVT_SET_FOCUS(wxComboBoxText::OnFocus) - EVT_KILL_FOCUS(wxComboBoxText::OnFocus) - EVT_TEXT(wxID_ANY, wxComboBoxText::OnText) -wxEND_EVENT_TABLE() - -class wxComboBoxChoice : public wxChoice -{ -public: - wxComboBoxChoice( wxComboBox *cb, int style ) - : wxChoice( cb , 1 , wxDefaultPosition , wxDefaultSize , 0 , NULL , style & (wxCB_SORT) ) - { - m_cb = cb; - } - - int GetPopupWidth() const - { - switch ( GetWindowVariant() ) - { - case wxWINDOW_VARIANT_NORMAL : - case wxWINDOW_VARIANT_LARGE : - return 24 ; - - default : - return 21 ; - } - } - -protected: - void OnChoice( wxCommandEvent& e ) - { - wxString s = e.GetString(); - - m_cb->DelegateChoice( s ); - wxCommandEvent event2(wxEVT_COMBOBOX, m_cb->GetId() ); - event2.SetInt(m_cb->GetSelection()); - event2.SetEventObject(m_cb); - event2.SetString(m_cb->GetStringSelection()); - m_cb->ProcessCommand(event2); - - // For consistency with MSW and GTK, also send a text updated event - // After all, the text is updated when a selection is made - wxCommandEvent TextEvent( wxEVT_TEXT, m_cb->GetId() ); - TextEvent.SetString( m_cb->GetStringSelection() ); - TextEvent.SetEventObject( m_cb ); - m_cb->ProcessCommand( TextEvent ); - } - - virtual wxSize DoGetBestSize() const - { - wxSize sz = wxChoice::DoGetBestSize() ; - if (! m_cb->HasFlag(wxCB_READONLY) ) - sz.x = GetPopupWidth() ; - - return sz ; - } - -private: - wxComboBox *m_cb; - - friend class wxComboBox; - - wxDECLARE_EVENT_TABLE(); -}; - -wxBEGIN_EVENT_TABLE(wxComboBoxChoice, wxChoice) - EVT_CHOICE(wxID_ANY, wxComboBoxChoice::OnChoice) -wxEND_EVENT_TABLE() - -wxComboBox::~wxComboBox() -{ - // delete the controls now, don't leave them alive even though they would - // still be eventually deleted by our parent - but it will be too late, the - // user code expects them to be gone now - wxDELETE(m_text); - wxDELETE(m_choice); -} - -// ---------------------------------------------------------------------------- -// geometry -// ---------------------------------------------------------------------------- - -wxSize wxComboBox::DoGetBestSize() const -{ - if (!m_choice && !m_text) - return GetSize(); - - wxSize size = m_choice->GetBestSize(); - - if ( m_text != NULL ) - { - wxSize sizeText = m_text->GetBestSize(); - if (sizeText.y + 2 * TEXTFOCUSBORDER > size.y) - size.y = sizeText.y + 2 * TEXTFOCUSBORDER; - - size.x = m_choice->GetPopupWidth() + sizeText.x + MARGIN; - size.x += TEXTFOCUSBORDER ; - } - else - { - // clipping is too tight - size.y += 1 ; - } - - return size; -} - -void wxComboBox::DoMoveWindow(int x, int y, int width, int height) -{ - wxControl::DoMoveWindow( x, y, width , height ); - - if ( m_text == NULL ) - { - // we might not be fully constructed yet, therefore watch out... - if ( m_choice ) - m_choice->SetSize(0, 0 , width, -1); - } - else - { - wxCoord wText = width - m_choice->GetPopupWidth() - MARGIN; - m_text->SetSize(TEXTFOCUSBORDER, TEXTFOCUSBORDER, wText, -1); - wxSize tSize = m_text->GetSize(); - wxSize cSize = m_choice->GetSize(); - - int yOffset = ( tSize.y + 2 * TEXTFOCUSBORDER - cSize.y ) / 2; - - // put it at an inset of 1 to have outer area shadows drawn as well - m_choice->SetSize(TEXTFOCUSBORDER + wText + MARGIN - 1 , yOffset, m_choice->GetPopupWidth() , -1); - } -} - -// ---------------------------------------------------------------------------- -// operations forwarded to the subcontrols -// ---------------------------------------------------------------------------- - -bool wxComboBox::Enable(bool enable) -{ - if ( !wxControl::Enable(enable) ) - return false; - - if (m_text) - m_text->Enable(enable); - - return true; -} - -bool wxComboBox::Show(bool show) -{ - if ( !wxControl::Show(show) ) - return false; - - return true; -} - -void wxComboBox::DelegateTextChanged( const wxString& value ) -{ - SetStringSelection( value ); -} - -void wxComboBox::DelegateChoice( const wxString& value ) -{ - SetStringSelection( value ); -} - -bool wxComboBox::Create(wxWindow *parent, - wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - const wxArrayString& choices, - long style, - const wxValidator& validator, - const wxString& name) -{ - if ( !Create( parent, id, value, pos, size, 0, NULL, - style, validator, name ) ) - return false; - - Append(choices); - - return true; -} - -bool wxComboBox::Create(wxWindow *parent, - wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, - const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - if ( !wxControl::Create(parent, id, wxDefaultPosition, wxDefaultSize, style , - validator, name) ) - { - return false; - } - - wxSize csize = size; - if ( style & wxCB_READONLY ) - { - m_text = NULL; - } - else - { - m_text = new wxComboBoxText(this); - if ( size.y == -1 ) - { - csize.y = m_text->GetSize().y ; - csize.y += 2 * TEXTFOCUSBORDER ; - } - } - m_choice = new wxComboBoxChoice(this, style ); - - DoSetSize(pos.x, pos.y, csize.x, csize.y); - - Append( n, choices ); - - // Needed because it is a wxControlWithItems - SetInitialSize(size); - SetStringSelection(value); - - return true; -} - -void wxComboBox::EnableTextChangedEvents(bool enable) -{ - if ( m_text ) - m_text->ForwardEnableTextChangedEvents(enable); -} - -wxString wxComboBox::DoGetValue() const -{ - wxCHECK_MSG( m_text, wxString(), "can't be called for read-only combobox" ); - - return m_text->GetValue(); -} - -wxString wxComboBox::GetValue() const -{ - wxString result; - - if ( m_text == NULL ) - result = m_choice->GetString( m_choice->GetSelection() ); - else - result = m_text->GetValue(); - - return result; -} - -unsigned int wxComboBox::GetCount() const -{ - return m_choice->GetCount() ; -} - -void wxComboBox::SetValue(const wxString& value) -{ - if ( HasFlag(wxCB_READONLY) ) - SetStringSelection( value ) ; - else - m_text->SetValue( value ); -} - -void wxComboBox::WriteText(const wxString& text) -{ - m_text->WriteText(text); -} - -void wxComboBox::GetSelection(long *from, long *to) const -{ - m_text->GetSelection(from, to); -} - -// Clipboard operations - -void wxComboBox::Copy() -{ - if ( m_text != NULL ) - m_text->Copy(); -} - -void wxComboBox::Cut() -{ - if ( m_text != NULL ) - m_text->Cut(); -} - -void wxComboBox::Paste() -{ - if ( m_text != NULL ) - m_text->Paste(); -} - -void wxComboBox::SetEditable(bool editable) -{ - if ( ( m_text == NULL ) && editable ) - { - m_text = new wxComboBoxText( this ); - } - else if ( !editable ) - { - wxDELETE(m_text); - } - - int currentX, currentY; - GetPosition( ¤tX, ¤tY ); - - int currentW, currentH; - GetSize( ¤tW, ¤tH ); - - DoMoveWindow( currentX, currentY, currentW, currentH ); -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - if ( m_text ) - m_text->SetInsertionPoint(pos); -} - -void wxComboBox::SetInsertionPointEnd() -{ - if ( m_text ) - m_text->SetInsertionPointEnd(); -} - -long wxComboBox::GetInsertionPoint() const -{ - if ( m_text ) - return m_text->GetInsertionPoint(); - return 0; -} - -wxTextPos wxComboBox::GetLastPosition() const -{ - if ( m_text ) - return m_text->GetLastPosition(); - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - if ( m_text ) - m_text->Replace(from,to,value); -} - -void wxComboBox::Remove(long from, long to) -{ - if ( m_text ) - m_text->Remove(from,to); -} - -void wxComboBox::SetSelection(long from, long to) -{ - if ( m_text ) - m_text->SetSelection(from,to); -} - -int wxComboBox::DoInsertItems(const wxArrayStringsAdapter& items, - unsigned int pos, - void **clientData, - wxClientDataType type) -{ - return m_choice->DoInsertItems(items, pos, clientData, type); -} - -void wxComboBox::DoSetItemClientData(unsigned int n, void* clientData) -{ - return m_choice->DoSetItemClientData( n , clientData ) ; -} - -void* wxComboBox::DoGetItemClientData(unsigned int n) const -{ - return m_choice->DoGetItemClientData( n ) ; -} - -wxClientDataType wxComboBox::GetClientDataType() const -{ - return m_choice->GetClientDataType(); -} - -void wxComboBox::SetClientDataType(wxClientDataType clientDataItemsType) -{ - m_choice->SetClientDataType(clientDataItemsType); -} - -void wxComboBox::DoDeleteOneItem(unsigned int n) -{ - m_choice->DoDeleteOneItem( n ); -} - -void wxComboBox::DoClear() -{ - m_choice->DoClear(); -} - -int wxComboBox::GetSelection() const -{ - return m_choice->GetSelection(); -} - -void wxComboBox::SetSelection(int n) -{ - m_choice->SetSelection( n ); - - if ( m_text != NULL ) - m_text->SetValue(n != wxNOT_FOUND ? GetString(n) : wxString(wxEmptyString)); -} - -int wxComboBox::FindString(const wxString& s, bool bCase) const -{ - return m_choice->FindString( s, bCase ); -} - -wxString wxComboBox::GetString(unsigned int n) const -{ - return m_choice->GetString( n ); -} - -wxString wxComboBox::GetStringSelection() const -{ - int sel = GetSelection(); - if (sel != wxNOT_FOUND) - return wxString(this->GetString((unsigned int)sel)); - else - return wxEmptyString; -} - -void wxComboBox::SetString(unsigned int n, const wxString& s) -{ - m_choice->SetString( n , s ); -} - -bool wxComboBox::IsEditable() const -{ - return m_text != NULL && !HasFlag(wxCB_READONLY); -} - -void wxComboBox::Undo() -{ - if (m_text != NULL) - m_text->Undo(); -} - -void wxComboBox::Redo() -{ - if (m_text != NULL) - m_text->Redo(); -} - -void wxComboBox::SelectAll() -{ - if (m_text != NULL) - m_text->SelectAll(); -} - -bool wxComboBox::CanCopy() const -{ - if (m_text != NULL) - return m_text->CanCopy(); - else - return false; -} - -bool wxComboBox::CanCut() const -{ - if (m_text != NULL) - return m_text->CanCut(); - else - return false; -} - -bool wxComboBox::CanPaste() const -{ - if (m_text != NULL) - return m_text->CanPaste(); - else - return false; -} - -bool wxComboBox::CanUndo() const -{ - if (m_text != NULL) - return m_text->CanUndo(); - else - return false; -} - -bool wxComboBox::CanRedo() const -{ - if (m_text != NULL) - return m_text->CanRedo(); - else - return false; -} - -bool wxComboBox::OSXHandleClicked( double WXUNUSED(timestampsec) ) -{ -/* - For consistency with other platforms, clicking in the text area does not constitute a selection - wxCommandEvent event(wxEVT_COMBOBOX, m_windowId ); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - ProcessCommand(event); -*/ - - return true ; -} - -wxTextWidgetImpl* wxComboBox::GetTextPeer() const -{ - if (m_text) - return m_text->GetTextPeer(); - - return NULL; -} - -#endif // wxUSE_COMBOBOX && wxOSX_USE_CARBON diff --git a/src/osx/carbon/combobxc.cpp b/src/osx/carbon/combobxc.cpp deleted file mode 100644 index e6aaa1857f..0000000000 --- a/src/osx/carbon/combobxc.cpp +++ /dev/null @@ -1,783 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/carbon/combobxc.cpp -// Purpose: wxComboBox class using HIView ComboBox -// Author: Stefan Csomor -// Modified by: -// Created: 1998-01-01 -// Copyright: (c) Stefan Csomor -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#include "wx/wxprec.h" - -#include "wx/combobox.h" - -#ifndef WX_PRECOMP - #include "wx/button.h" - #include "wx/menu.h" -#endif - -#include "wx/osx/uma.h" -#if TARGET_API_MAC_OSX -#ifndef __HIVIEW__ - #include -#endif -#endif - -#if TARGET_API_MAC_OSX -#define USE_HICOMBOBOX 1 //use hi combobox define -#else -#define USE_HICOMBOBOX 0 -#endif - -static int nextPopUpMenuId = 1000; -MenuHandle NewUniqueMenu() -{ - MenuHandle handle = NewMenu( nextPopUpMenuId , "\pMenu" ); - nextPopUpMenuId++; - return handle; -} - -#if USE_HICOMBOBOX -static const EventTypeSpec eventList[] = -{ - { kEventClassTextField , kEventTextAccepted } , -}; - -static pascal OSStatus wxMacComboBoxEventHandler( EventHandlerCallRef handler , EventRef event , void *data ) -{ - OSStatus result = eventNotHandledErr; - wxComboBox* cb = (wxComboBox*) data; - - wxMacCarbonEvent cEvent( event ); - - switch( cEvent.GetClass() ) - { - case kEventClassTextField : - switch( cEvent.GetKind() ) - { - case kEventTextAccepted : - { - wxCommandEvent event( wxEVT_COMBOBOX, cb->GetId() ); - event.SetInt( cb->GetSelection() ); - event.SetString( cb->GetStringSelection() ); - event.SetEventObject( cb ); - cb->HandleWindowEvent( event ); - } - break; - default : - break; - } - break; - default : - break; - } - - - return result; -} - -DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacComboBoxEventHandler ) - -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// the margin between the text control and the choice -static const wxCoord MARGIN = 2; -#if TARGET_API_MAC_OSX -static const int POPUPWIDTH = 24; -#else -static const int POPUPWIDTH = 18; -#endif -static const int POPUPHEIGHT = 23; - -// ---------------------------------------------------------------------------- -// wxComboBoxText: text control forwards events to combobox -// ---------------------------------------------------------------------------- - -class wxComboBoxText : public wxTextCtrl -{ -public: - wxComboBoxText( wxComboBox * cb ) - : wxTextCtrl( cb , 1 ) - { - m_cb = cb; - } - -protected: - void OnChar( wxKeyEvent& event ) - { - if ( event.GetKeyCode() == WXK_RETURN ) - { - wxString value = GetValue(); - - if ( m_cb->GetCount() == 0 ) - { - // make Enter generate "selected" event if there is only one item - // in the combobox - without it, it's impossible to select it at - // all! - wxCommandEvent event( wxEVT_COMBOBOX, m_cb->GetId() ); - event.SetInt( 0 ); - event.SetString( value ); - event.SetEventObject( m_cb ); - m_cb->HandleWindowEvent( event ); - } - else - { - // add the item to the list if it's not there yet - if ( m_cb->FindString(value) == wxNOT_FOUND ) - { - m_cb->Append(value); - m_cb->SetStringSelection(value); - - // and generate the selected event for it - wxCommandEvent event( wxEVT_COMBOBOX, m_cb->GetId() ); - event.SetInt( m_cb->GetCount() - 1 ); - event.SetString( value ); - event.SetEventObject( m_cb ); - m_cb->HandleWindowEvent( event ); - } - - // This will invoke the dialog default action, such - // as the clicking the default button. - - wxTopLevelWindow *tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - if ( tlw && tlw->GetDefaultItem() ) - { - wxButton *def = wxDynamicCast(tlw->GetDefaultItem(), wxButton); - if ( def && def->IsEnabled() ) - { - wxCommandEvent event(wxEVT_BUTTON, def->GetId() ); - event.SetEventObject(def); - def->Command(event); - return; - } - } - - return; - } - } - - event.Skip(); - } -private: - wxComboBox *m_cb; - - wxDECLARE_EVENT_TABLE(); -}; - -wxBEGIN_EVENT_TABLE(wxComboBoxText, wxTextCtrl) - EVT_CHAR( wxComboBoxText::OnChar) -wxEND_EVENT_TABLE() - -class wxComboBoxChoice : public wxChoice -{ -public: - wxComboBoxChoice(wxComboBox *cb, int style) - : wxChoice( cb , 1 ) - { - m_cb = cb; - } - -protected: - void OnChoice( wxCommandEvent& e ) - { - wxString s = e.GetString(); - - m_cb->DelegateChoice( s ); - wxCommandEvent event2(wxEVT_COMBOBOX, m_cb->GetId() ); - event2.SetInt(m_cb->GetSelection()); - event2.SetEventObject(m_cb); - event2.SetString(m_cb->GetStringSelection()); - m_cb->ProcessCommand(event2); - } - virtual wxSize DoGetBestSize() const - { - wxSize sz = wxChoice::DoGetBestSize(); - sz.x = POPUPWIDTH; - return sz; - } - -private: - wxComboBox *m_cb; - - wxDECLARE_EVENT_TABLE(); -}; - -wxBEGIN_EVENT_TABLE(wxComboBoxChoice, wxChoice) - EVT_CHOICE(wxID_ANY, wxComboBoxChoice::OnChoice) -wxEND_EVENT_TABLE() - -wxComboBox::~wxComboBox() -{ - // delete the controls now, don't leave them alive even though they would - // still be eventually deleted by our parent - but it will be too late, the - // user code expects them to be gone now - wxDELETE( m_text ); - wxDELETE( m_choice ); -} - - -// ---------------------------------------------------------------------------- -// geometry -// ---------------------------------------------------------------------------- - -wxSize wxComboBox::DoGetBestSize() const -{ -#if USE_HICOMBOBOX - return wxControl::DoGetBestSize(); -#else - wxSize size = m_choice->GetBestSize(); - - if ( m_text != NULL ) - { - wxSize sizeText = m_text->GetBestSize(); - - size.x = POPUPWIDTH + sizeText.x + MARGIN; - } - - return size; -#endif -} - -void wxComboBox::DoMoveWindow(int x, int y, int width, int height) { -#if USE_HICOMBOBOX - wxControl::DoMoveWindow(x, y, width, height); -#else - height = POPUPHEIGHT; - - wxControl::DoMoveWindow(x, y, width, height); - - if ( m_text == NULL ) - { - // we might not be fully constructed yet, therefore watch out... - if ( m_choice ) - m_choice->SetSize(0, 0 , width, wxDefaultCoord); - } - else - { - wxCoord wText = width - POPUPWIDTH - MARGIN; - m_text->SetSize(0, 0, wText, height); - m_choice->SetSize(0 + wText + MARGIN, 0, POPUPWIDTH, wxDefaultCoord); - } -#endif -} - - - -// ---------------------------------------------------------------------------- -// operations forwarded to the subcontrols -// ---------------------------------------------------------------------------- - -bool wxComboBox::Enable(bool enable) -{ - if ( !wxControl::Enable(enable) ) - return false; - - return true; -} - -bool wxComboBox::Show(bool show) -{ - if ( !wxControl::Show(show) ) - return false; - - return true; -} - -void wxComboBox::SetFocus() -{ -#if USE_HICOMBOBOX - wxControl::SetFocus(); -#else - if ( m_text != NULL) { - m_text->SetFocus(); - } -#endif -} - - -void wxComboBox::DelegateTextChanged( const wxString& value ) -{ - SetStringSelection( value ); -} - - -void wxComboBox::DelegateChoice( const wxString& value ) -{ - SetStringSelection( value ); -} - - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - const wxArrayString& choices, - long style, - const wxValidator& validator, - const wxString& name) -{ - wxCArrayString chs( choices ); - - return Create( parent, id, value, pos, size, chs.GetCount(), - chs.GetStrings(), style, validator, name ); -} - - -bool wxComboBox::Create(wxWindow *parent, wxWindowID id, - const wxString& value, - const wxPoint& pos, - const wxSize& size, - int n, const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name) -{ - m_text = NULL; - m_choice = NULL; -#if USE_HICOMBOBOX - DontCreatePeer(); -#endif - if ( !wxControl::Create(parent, id, wxDefaultPosition, wxDefaultSize, style , - wxDefaultValidator, name) ) - { - return false; - } -#if USE_HICOMBOBOX - Rect bounds = wxMacGetBoundsForControl( this , pos , size ); - HIRect hiRect; - - hiRect.origin.x = 20; //bounds.left; - hiRect.origin.y = 25; //bounds.top; - hiRect.size.width = 120;// bounds.right - bounds.left; - hiRect.size.height = 24; - - //For some reason, this code causes the combo box not to be displayed at all. - //hiRect.origin.x = bounds.left; - //hiRect.origin.y = bounds.top; - //hiRect.size.width = bounds.right - bounds.left; - //hiRect.size.height = bounds.bottom - bounds.top; - //printf("left = %d, right = %d, top = %d, bottom = %d\n", bounds.left, bounds.right, bounds.top, bounds.bottom); - //printf("x = %d, y = %d, width = %d, height = %d\n", hibounds.origin.x, hibounds.origin.y, hibounds.size.width, hibounds.size.height); - m_peer = new wxMacControl(this); - verify_noerr( HIComboBoxCreate( &hiRect, CFSTR(""), NULL, NULL, kHIComboBoxStandardAttributes, m_peer->GetControlRefAddr() ) ); - - - m_peer->SetMinimum( 0 ); - m_peer->SetMaximum( 100); - if ( n > 0 ) - m_peer->SetValue( 1 ); - - MacPostControlCreate(pos,size); - - Append( choices[ i ] ); - - HIViewSetVisible( m_peer->GetControlRef(), true ); - SetSelection(0); - EventHandlerRef comboEventHandler; - InstallControlEventHandler( m_peer->GetControlRef(), GetwxMacComboBoxEventHandlerUPP(), - GetEventTypeCount(eventList), eventList, this, - (EventHandlerRef *)&comboEventHandler); -#else - m_choice = new wxComboBoxChoice(this, style ); - m_choice->SetMinSize( wxSize( POPUPWIDTH , POPUPHEIGHT ) ); - - wxSize csize = size; - if ( style & wxCB_READONLY ) - { - m_text = NULL; - } - else - { - m_text = new wxComboBoxText(this); - if ( size.y == wxDefaultCoord ) { - csize.y = m_text->GetSize().y; - } - } - - DoSetSize(pos.x, pos.y, csize.x, csize.y); - - m_choice->Append( n, choices ); - SetInitialSize(csize); // Needed because it is a wxControlWithItems -#endif - - return true; -} - -wxString wxComboBox::GetValue() const -{ -#if USE_HICOMBOBOX - CFStringRef myString; - HIComboBoxCopyTextItemAtIndex( m_peer->GetControlRef(), (CFIndex)GetSelection(), &myString ); - return wxMacCFStringHolder( myString, GetFont().GetEncoding() ).AsString(); -#else - wxString result; - - if ( m_text == NULL ) - { - result = m_choice->GetString( m_choice->GetSelection() ); - } - else - { - result = m_text->GetValue(); - } - - return result; -#endif -} - -void wxComboBox::SetValue(const wxString& value) -{ -#if USE_HICOMBOBOX - -#else - int s = FindString (value); - if (s == wxNOT_FOUND && !HasFlag(wxCB_READONLY) ) - { - m_choice->Append(value); - } - SetStringSelection( value ); -#endif -} - -// Clipboard operations -void wxComboBox::Copy() -{ - if ( m_text != NULL ) - { - m_text->Copy(); - } -} - -void wxComboBox::Cut() -{ - if ( m_text != NULL ) - { - m_text->Cut(); - } -} - -void wxComboBox::Paste() -{ - if ( m_text != NULL ) - { - m_text->Paste(); - } -} - -void wxComboBox::SetEditable(bool editable) -{ - if ( ( m_text == NULL ) && editable ) - { - m_text = new wxComboBoxText( this ); - } - else if ( !editable ) - { - wxDELETE(m_text); - } - - int currentX, currentY; - GetPosition( ¤tX, ¤tY ); - - int currentW, currentH; - GetSize( ¤tW, ¤tH ); - - DoMoveWindow( currentX, currentY, currentW, currentH ); -} - -void wxComboBox::SetInsertionPoint(long pos) -{ - // TODO -} - -void wxComboBox::SetInsertionPointEnd() -{ - // TODO -} - -long wxComboBox::GetInsertionPoint() const -{ - // TODO - return 0; -} - -wxTextPos wxComboBox::GetLastPosition() const -{ - // TODO - return 0; -} - -void wxComboBox::Replace(long from, long to, const wxString& value) -{ - // TODO -} - -void wxComboBox::Remove(long from, long to) -{ - // TODO -} - -void wxComboBox::SetSelection(long from, long to) -{ - // TODO -} - -int wxComboBox::DoInsertItems(const wxArrayStringsAdapter& items, - unsigned int pos, - void **clientData, wxClientDataType type) -{ -#if USE_HICOMBOBOX - const unsigned int count = items.GetCount(); - for ( unsigned int i = 0; i < count; ++i, ++pos ) - { - HIComboBoxInsertTextItemAtIndex(m_peer->GetControlRef(), - (CFIndex)pos, - wxMacCFStringHolder(items[i], - GetFont().GetEncoding())); - AssignNewItemClientData(pos, clientData, i, type); - } - - //SetControl32BitMaximum( m_peer->GetControlRef(), GetCount() ); - - return pos - 1; -#else - return m_choice->DoInsertItems( items, pos, clientData, type ); -#endif -} - -void wxComboBox::DoSetItemClientData(unsigned int n, void* clientData) -{ -#if USE_HICOMBOBOX - return; //TODO -#else - return m_choice->DoSetItemClientData( n , clientData ); -#endif -} - -void* wxComboBox::DoGetItemClientData(unsigned int n) const -{ -#if USE_HICOMBOBOX - return NULL; //TODO -#else - return m_choice->DoGetItemClientData( n ); -#endif -} - -unsigned int wxComboBox::GetCount() const { -#if USE_HICOMBOBOX - return (unsigned int) HIComboBoxGetItemCount( m_peer->GetControlRef() ); -#else - return m_choice->GetCount(); -#endif -} - -void wxComboBox::DoDeleteOneItem(unsigned int n) -{ -#if USE_HICOMBOBOX - HIComboBoxRemoveItemAtIndex( m_peer->GetControlRef(), (CFIndex)n ); -#else - m_choice->Delete( n ); -#endif -} - -void wxComboBox::DoClear() -{ -#if USE_HICOMBOBOX - for ( CFIndex i = GetCount() - 1; i >= 0; ++ i ) - verify_noerr( HIComboBoxRemoveItemAtIndex( m_peer->GetControlRef(), i ) ); - m_peer->SetData(kHIComboBoxEditTextPart,kControlEditTextCFStringTag,CFSTR("")); -#else - m_choice->Clear(); -#endif -} - -int wxComboBox::GetSelection() const -{ -#if USE_HICOMBOBOX - return FindString( GetStringSelection() ); -#else - return m_choice->GetSelection(); -#endif -} - -void wxComboBox::SetSelection(int n) -{ -#if USE_HICOMBOBOX - SetControl32BitValue( m_peer->GetControlRef() , n + 1 ); -#else - m_choice->SetSelection( n ); - - if ( m_text != NULL ) - { - m_text->SetValue(GetString(n)); - } -#endif -} - -int wxComboBox::FindString(const wxString& s, bool bCase) const -{ -#if USE_HICOMBOBOX - for( unsigned int i = 0 ; i < GetCount() ; i++ ) - { - if (GetString(i).IsSameAs(s, bCase) ) - return i ; - } - return wxNOT_FOUND; -#else - return m_choice->FindString( s, bCase ); -#endif -} - -wxString wxComboBox::GetString(unsigned int n) const -{ -#if USE_HICOMBOBOX - CFStringRef itemText; - HIComboBoxCopyTextItemAtIndex( m_peer->GetControlRef(), (CFIndex)n, &itemText ); - return wxMacCFStringHolder(itemText).AsString(); -#else - return m_choice->GetString( n ); -#endif -} - -wxString wxComboBox::GetStringSelection() const -{ -#if USE_HICOMBOBOX - return wxMacCFStringHolder(m_peer->GetData(kHIComboBoxEditTextPart,kControlEditTextCFStringTag)).AsString(); -#else - int sel = GetSelection (); - if (sel != wxNOT_FOUND) - return wxString(this->GetString((unsigned int)sel)); - else - return wxEmptyString; -#endif -} - -void wxComboBox::SetString(unsigned int n, const wxString& s) -{ -#if USE_HICOMBOBOX - verify_noerr ( HIComboBoxInsertTextItemAtIndex( m_peer->GetControlRef(), (CFIndex) n, - wxMacCFStringHolder(s, GetFont().GetEncoding()) ) ); - verify_noerr ( HIComboBoxRemoveItemAtIndex( m_peer->GetControlRef(), (CFIndex) n + 1 ) ); -#else - m_choice->SetString( n , s ); -#endif -} - -bool wxComboBox::IsEditable() const -{ -#if USE_HICOMBOBOX - // TODO - return !HasFlag(wxCB_READONLY); -#else - return m_text != NULL && !HasFlag(wxCB_READONLY); -#endif -} - -void wxComboBox::Undo() -{ -#if USE_HICOMBOBOX - // TODO -#else - if (m_text != NULL) - m_text->Undo(); -#endif -} - -void wxComboBox::Redo() -{ -#if USE_HICOMBOBOX - // TODO -#else - if (m_text != NULL) - m_text->Redo(); -#endif -} - -void wxComboBox::SelectAll() -{ -#if USE_HICOMBOBOX - // TODO -#else - if (m_text != NULL) - m_text->SelectAll(); -#endif -} - -bool wxComboBox::CanCopy() const -{ -#if USE_HICOMBOBOX - // TODO - return false; -#else - if (m_text != NULL) - return m_text->CanCopy(); - else - return false; -#endif -} - -bool wxComboBox::CanCut() const -{ -#if USE_HICOMBOBOX - // TODO - return false; -#else - if (m_text != NULL) - return m_text->CanCut(); - else - return false; -#endif -} - -bool wxComboBox::CanPaste() const -{ -#if USE_HICOMBOBOX - // TODO - return false; -#else - if (m_text != NULL) - return m_text->CanPaste(); - else - return false; -#endif -} - -bool wxComboBox::CanUndo() const -{ -#if USE_HICOMBOBOX - // TODO - return false; -#else - if (m_text != NULL) - return m_text->CanUndo(); - else - return false; -#endif -} - -bool wxComboBox::CanRedo() const -{ -#if USE_HICOMBOBOX - // TODO - return false; -#else - if (m_text != NULL) - return m_text->CanRedo(); - else - return false; -#endif -} - -bool wxComboBox::OSXHandleClicked( double timestampsec ) -{ - wxCommandEvent event(wxEVT_COMBOBOX, m_windowId ); - event.SetInt(GetSelection()); - event.SetEventObject(this); - event.SetString(GetStringSelection()); - ProcessCommand(event); - return true; -} diff --git a/src/osx/carbon/dirmac.cpp b/src/osx/carbon/dirmac.cpp deleted file mode 100644 index f565a30688..0000000000 --- a/src/osx/carbon/dirmac.cpp +++ /dev/null @@ -1,256 +0,0 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/carbon/dirmac.cpp -// Purpose: wxDir implementation for Mac -// Author: Stefan Csomor -// Modified by: -// Created: 08.12.99 -// Copyright: (c) 1999 Stefan Csomor -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -// ============================================================================ -// declarations -// ============================================================================ - -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- - -// For compilers that support precompilation, includes "wx.h". -#include "wx/wxprec.h" - -#ifdef __BORLANDC__ - #pragma hdrstop -#endif - -#include "wx/dir.h" - -#ifndef WX_PRECOMP - #include "wx/intl.h" - #include "wx/log.h" -#endif // PCH - -#include "wx/filename.h" -#include "wx/osx/private.h" - -// ---------------------------------------------------------------------------- -// private classes -// ---------------------------------------------------------------------------- - -// this class stores everything we need to enumerate the files -class wxDirData -{ -public: - wxDirData(const wxString& dirname); - ~wxDirData(); - - void Close() ; - void SetFileSpec(const wxString& filespec) { m_filespec = filespec; } - void SetFlags(int flags) { m_flags = flags; } - - bool Read(wxString *filename); // reads the next - void Rewind() ; - - const wxString& GetName() const { return m_dirname; } - -private: - FSIterator m_iterator ; - - wxString m_dirname; - wxString m_filespec; - - int m_flags; -}; - -// ============================================================================ -// implementation -// ============================================================================ - -// ---------------------------------------------------------------------------- -// wxDirData -// ---------------------------------------------------------------------------- - -wxDirData::wxDirData(const wxString& dirname) - : m_dirname(dirname) -{ - // throw away the trailing slashes - size_t n = m_dirname.length(); - wxCHECK_RET( n, wxT("empty dir name in wxDir") ); - - while ( n > 0 && wxIsPathSeparator(m_dirname[--n]) ) - ; - - m_dirname.Truncate(n + 1); - m_iterator = NULL ; -} - -wxDirData::~wxDirData() -{ - Close() ; -} - -void wxDirData::Close() -{ - if ( m_iterator ) - { - FSCloseIterator( m_iterator ) ; - m_iterator = NULL ; - } -} - -void wxDirData::Rewind() -{ - Close() ; -} - -bool wxDirData::Read(wxString *filename) -{ - wxString result; - OSStatus err = noErr ; - if ( NULL == m_iterator ) - { - FSRef dirRef; - err = wxMacPathToFSRef( m_dirname , &dirRef ) ; - if ( err == noErr ) - { - err = FSOpenIterator(&dirRef, kFSIterateFlat, &m_iterator); - } - if ( err ) - { - Close() ; - return false ; - } - } - - wxString name ; - wxString lowerfilespec = m_filespec.Lower(); - - while( noErr == err ) - { - HFSUniStr255 uniname ; - FSRef fileRef; - FSCatalogInfo catalogInfo; - ItemCount fetched = 0; - - err = FSGetCatalogInfoBulk( m_iterator, 1, &fetched, NULL, kFSCatInfoNodeFlags | kFSCatInfoFinderInfo , &catalogInfo , &fileRef, NULL, &uniname ); - - // expected error codes - - if ( errFSNoMoreItems == err ) - return false ; - if ( afpAccessDenied == err ) - return false ; - - if ( noErr != err ) - break ; - - name = wxMacHFSUniStrToString( &uniname ) ; - wxString lowername = name.Lower(); - - if ( ( name == wxT(".") || name == wxT("..") ) && !(m_flags & wxDIR_DOTDOT) ) - continue; - - if ( ( name[0U] == '.' ) && !(m_flags & wxDIR_HIDDEN ) ) - continue ; - - if ( (((FileInfo*)&catalogInfo.finderInfo)->finderFlags & kIsInvisible ) && !(m_flags & wxDIR_HIDDEN ) ) - continue ; - - // its a dir and we don't want it - if ( (catalogInfo.nodeFlags & kFSNodeIsDirectoryMask) && !(m_flags & wxDIR_DIRS) ) - continue ; - - // its a file but we don't want it - if ( (catalogInfo.nodeFlags & kFSNodeIsDirectoryMask) == 0 && !(m_flags & wxDIR_FILES ) ) - continue ; - - if ( m_filespec.empty() || m_filespec == wxT("*.*") || m_filespec == wxT("*") ) - { - } - else if ( !wxMatchWild(lowerfilespec, lowername , false) ) - { - continue ; - } - - break ; - } - if ( err != noErr ) - { - return false ; - } - - *filename = name ; - return true; -} - -// ---------------------------------------------------------------------------- -// wxDir construction/destruction -// ---------------------------------------------------------------------------- - -wxDir::wxDir(const wxString& dirname) -{ - m_data = NULL; - - (void)Open(dirname); -} - -bool wxDir::Open(const wxString& dirname) -{ - delete m_data; - m_data = new wxDirData(dirname); - - return true; -} - -bool wxDir::IsOpened() const -{ - return m_data != NULL; -} - -wxString wxDir::GetName() const -{ - wxString name; - if ( m_data ) - { - name = m_data->GetName(); - if ( !name.empty() && (name.Last() == wxT('/')) ) - { - // chop off the last (back)slash - name.Truncate(name.length() - 1); - } - } - - return name; -} - -wxDir::~wxDir() -{ - wxDELETE(m_data); -} - -// ---------------------------------------------------------------------------- -// wxDir enumerating -// ---------------------------------------------------------------------------- - -bool wxDir::GetFirst(wxString *filename, - const wxString& filespec, - int flags) const -{ - wxCHECK_MSG( IsOpened(), false, wxT("must wxDir::Open() first") ); - - m_data->Rewind(); - - m_data->SetFileSpec(filespec); - m_data->SetFlags(flags); - - return GetNext(filename); -} - -bool wxDir::GetNext(wxString *filename) const -{ - wxCHECK_MSG( IsOpened(), false, wxT("must wxDir::Open() first") ); - - wxCHECK_MSG( filename, false, wxT("bad pointer in wxDir::GetNext()") ); - - return m_data->Read(filename); -} From c17202c6965c0829fa755ed805c5c7376a72a669 Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 4 Mar 2016 15:16:04 +0100 Subject: [PATCH 23/36] Remove extra handling of wxAppTraits::GetStandardPaths() on OS X. Since the removal of carbon in 5ba67c67e47d069f65d648ab16dfc505c5400bfc there is no longer any special handling required. --- include/wx/apptrait.h | 1 - include/wx/unix/apptrait.h | 3 --- src/osx/core/utilsexc_cf.cpp | 20 -------------------- 3 files changed, 24 deletions(-) diff --git a/include/wx/apptrait.h b/include/wx/apptrait.h index d69a7b964c..51168eb5d6 100644 --- a/include/wx/apptrait.h +++ b/include/wx/apptrait.h @@ -73,7 +73,6 @@ public: virtual wxRendererNative *CreateRenderer() = 0; // wxStandardPaths object is normally the same for wxBase and wxGUI - // except in the case of wxMac and wxCocoa virtual wxStandardPaths& GetStandardPaths(); diff --git a/include/wx/unix/apptrait.h b/include/wx/unix/apptrait.h index dc96980526..1095a3c37b 100644 --- a/include/wx/unix/apptrait.h +++ b/include/wx/unix/apptrait.h @@ -58,9 +58,6 @@ public: virtual void MutexGuiLeave() wxOVERRIDE; #endif -#if defined(__WXMAC__) && wxUSE_STDPATHS - virtual wxStandardPaths& GetStandardPaths() wxOVERRIDE; -#endif wxPortId GetToolkitVersion(int *majVer = NULL, int *minVer = NULL, int *microVer = NULL) const wxOVERRIDE; diff --git a/src/osx/core/utilsexc_cf.cpp b/src/osx/core/utilsexc_cf.cpp index e071bd255f..2614cb4fc4 100644 --- a/src/osx/core/utilsexc_cf.cpp +++ b/src/osx/core/utilsexc_cf.cpp @@ -152,26 +152,6 @@ wxEventLoopSourcesManagerBase* wxGUIAppTraits::GetEventLoopSourcesManager() ///////////////////////////////////////////////////////////////////////////// -// NOTE: This doesn't really belong here but this was a handy file to -// put it in because it's already compiled for wxCocoa and wxMac GUI lib. -#if wxUSE_STDPATHS -wxStandardPaths& wxGUIAppTraits::GetStandardPaths() -{ - // Derive a class just to be able to create it: wxStandardPaths ctor is - // protected to prevent its misuse, but it also means we can't create an - // object of this class directly. - class wxStandardPathsDefault : public wxStandardPaths - { - public: - wxStandardPathsDefault() { } - }; - - static wxStandardPathsDefault gs_stdPaths; - - return gs_stdPaths; -} -#endif - #if wxUSE_SOCKETS // we need to implement this method in a file of the core library as it should From 7dd279c49e5f81523e29f8973d248d98946538cc Mon Sep 17 00:00:00 2001 From: Tobias Taschner Date: Fri, 4 Mar 2016 15:29:33 +0100 Subject: [PATCH 24/36] Remove duplicate wxmac icon file. osx/carbon/wxmac.icns contained an older version of the logo and was used when building samples. --- src/osx/carbon/wxmac.icns | Bin 36901 -> 45458 bytes src/osx/wxmac.icns | Bin 45458 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/osx/wxmac.icns diff --git a/src/osx/carbon/wxmac.icns b/src/osx/carbon/wxmac.icns index 2c4e6f097d2f4315aaabf16668dbab4f4db6ebd0..5ec807b5d66d0e6f9b78cbee335154826d2e64e0 100644 GIT binary patch literal 45458 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 KIRZa^1pXfZSr0V; literal 36901 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 KIRZa^1pXfZSr0V; From e495ff2246fe6c666712ca3020d32f98dd8cad36 Mon Sep 17 00:00:00 2001 From: nick863 Date: Fri, 4 Mar 2016 19:43:53 +0100 Subject: [PATCH 25/36] Set up extensions filter correctly in wxFileDialog in wxOSX We need to call DoOnFilterSelected() to restrict the files that can be initially selected by the user to the filter. Closes #17415. --- docs/changes.txt | 1 + src/osx/cocoa/filedlg.mm | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index f701982499..31d43b9b23 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -69,6 +69,7 @@ wxMSW: wxOSX: - Remove extra borders around wxFilePickerCtrl (John Roberts). +- Set up extensions filter correctly in wxFileDialog (nick863). - Turn off automatic quotes substitutions in wxTextCtrl (Xlord2). diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 540358f757..3316b3e414 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -606,7 +606,18 @@ int wxFileDialog::ShowModal() [oPanel setMessage:cf.AsNSString()]; [oPanel setAllowsMultipleSelection: (HasFlag(wxFD_MULTIPLE) ? YES : NO )]; - [oPanel setAllowedFileTypes: (m_delegate == nil ? types : nil)]; + // Note that the test here is intentionally different from the one + // above, in the wxFD_SAVE case: we need to call DoOnFilterSelected() + // even for m_firstFileTypeFilter == 0, i.e. when using the default + // filter. + if ( m_firstFileTypeFilter >= 0 ) + { + DoOnFilterSelected(m_firstFileTypeFilter); + } + else + { + [oPanel setAllowedFileTypes: (m_delegate == nil ? types : nil)]; + } if ( !m_dir.IsEmpty() ) [oPanel setDirectoryURL:[NSURL fileURLWithPath:dir.AsNSString() isDirectory:YES]]; From b07ce632b608fd2b3585681fd45a811d898898b6 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 5 Mar 2016 02:51:37 +0100 Subject: [PATCH 26/36] Regenerate configure for 3.1.1 Forgot to do this in 7eee3576cf473d20438f00b620995848644074d8 --- configure | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/configure b/configure index 49e5978fa5..fefaac3757 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for wxWidgets 3.1.0. +# Generated by GNU Autoconf 2.69 for wxWidgets 3.1.1. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='wxWidgets' PACKAGE_TARNAME='wxwidgets' -PACKAGE_VERSION='3.1.0' -PACKAGE_STRING='wxWidgets 3.1.0' +PACKAGE_VERSION='3.1.1' +PACKAGE_STRING='wxWidgets 3.1.1' PACKAGE_BUGREPORT='wx-dev@googlegroups.com' PACKAGE_URL='' @@ -715,7 +715,6 @@ COND_TOOLKIT_OSX_COCOA_WXUNIV_0 COND_TOOLKIT_OSX_COCOA_USE_GUI_1 COND_TOOLKIT_OSX_COCOA COND_TOOLKIT_OSX_CARBON -COND_TOOLKIT_MSW_WXUNIV_0 COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0 COND_TOOLKIT_MSW_USE_GUI_1 COND_TOOLKIT_MSW @@ -1946,7 +1945,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures wxWidgets 3.1.0 to adapt to many kinds of systems. +\`configure' configures wxWidgets 3.1.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -2015,7 +2014,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of wxWidgets 3.1.0:";; + short | recursive ) echo "Configuration of wxWidgets 3.1.1:";; esac cat <<\_ACEOF @@ -2469,7 +2468,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -wxWidgets configure 3.1.0 +wxWidgets configure 3.1.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -3195,7 +3194,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by wxWidgets $as_me 3.1.0, which was +It was created by wxWidgets $as_me 3.1.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3658,7 +3657,7 @@ fi wx_major_version_number=3 wx_minor_version_number=1 -wx_release_number=0 +wx_release_number=1 wx_subrelease_number=0 WX_RELEASE=$wx_major_version_number.$wx_minor_version_number @@ -38824,11 +38823,6 @@ EOF COND_TOOLKIT_MSW_USE_GUI_1_WXUNIV_0="" fi - COND_TOOLKIT_MSW_WXUNIV_0="#" - if test "x$TOOLKIT" = "xMSW" -a "x$WXUNIV" = "x0" ; then - COND_TOOLKIT_MSW_WXUNIV_0="" - fi - COND_TOOLKIT_OSX_CARBON="#" if test "x$TOOLKIT" = "xOSX_CARBON" ; then COND_TOOLKIT_OSX_CARBON="" @@ -40109,7 +40103,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by wxWidgets $as_me 3.1.0, which was +This file was extended by wxWidgets $as_me 3.1.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -40175,7 +40169,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -wxWidgets config.status 3.1.0 +wxWidgets config.status 3.1.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" From 6ea8ba1e9c5c9a0ab1c8ea8c9e00b55ce0f04c41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Sat, 5 Mar 2016 02:48:55 +0100 Subject: [PATCH 27/36] Add GstPlayer 1.7.2.1+ based GStreamer backend Use new simpler API available in the latest GStreamer if available. Closes #226. --- Makefile.in | 72 ++++- build/bakefiles/files.bkl | 1 + build/files | 1 + configure | 102 +++++- configure.in | 23 +- docs/changes.txt | 4 + setup.h.in | 2 + src/unix/mediactrl.cpp | 8 +- src/unix/mediactrl_gstplayer.cpp | 514 +++++++++++++++++++++++++++++++ 9 files changed, 695 insertions(+), 32 deletions(-) create mode 100644 src/unix/mediactrl_gstplayer.cpp diff --git a/Makefile.in b/Makefile.in index f94b6b0086..acec86397c 100644 --- a/Makefile.in +++ b/Makefile.in @@ -6055,8 +6055,11 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_1 = \ @COND_TOOLKIT_X11@__ADVANCED_UNIV_SRC_OBJECTS = monodll_animateg.o @COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS = \ @COND_TOOLKIT_COCOA@ monodll_src_cocoa_mediactrl.o -@COND_TOOLKIT_GTK@__MEDIA_PLATFORM_SRC_OBJECTS = monodll_unix_mediactrl.o -@COND_TOOLKIT_MOTIF@__MEDIA_PLATFORM_SRC_OBJECTS = monodll_unix_mediactrl.o +@COND_TOOLKIT_GTK@__MEDIA_PLATFORM_SRC_OBJECTS = \ +@COND_TOOLKIT_GTK@ monodll_unix_mediactrl.o monodll_mediactrl_gstplayer.o +@COND_TOOLKIT_MOTIF@__MEDIA_PLATFORM_SRC_OBJECTS = \ +@COND_TOOLKIT_MOTIF@ monodll_unix_mediactrl.o \ +@COND_TOOLKIT_MOTIF@ monodll_mediactrl_gstplayer.o @COND_TOOLKIT_MSW@__MEDIA_PLATFORM_SRC_OBJECTS = \ @COND_TOOLKIT_MSW@ monodll_mediactrl_am.o monodll_mediactrl_wmp10.o \ @COND_TOOLKIT_MSW@ monodll_mediactrl_qt.o @@ -6065,7 +6068,8 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_1 = \ @COND_TOOLKIT_OSX_IPHONE@__MEDIA_PLATFORM_SRC_OBJECTS \ @COND_TOOLKIT_OSX_IPHONE@ = monodll_osx_cocoa_mediactrl.o @COND_TOOLKIT_QT@__MEDIA_PLATFORM_SRC_OBJECTS = monodll_qt_mediactrl.o -@COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS = monodll_unix_mediactrl.o +@COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS = \ +@COND_TOOLKIT_X11@ monodll_unix_mediactrl.o monodll_mediactrl_gstplayer.o @COND_PLATFORM_MACOSX_1@__HTML_SRC_PLATFORM_OBJECTS = monodll_chm.o @COND_PLATFORM_UNIX_1@__HTML_SRC_PLATFORM_OBJECTS = monodll_chm.o @COND_TOOLKIT_MSW@__HTML_SRC_PLATFORM_OBJECTS = \ @@ -8066,9 +8070,10 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_3 = \ @COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \ @COND_TOOLKIT_COCOA@ monolib_src_cocoa_mediactrl.o @COND_TOOLKIT_GTK@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \ -@COND_TOOLKIT_GTK@ monolib_unix_mediactrl.o +@COND_TOOLKIT_GTK@ monolib_unix_mediactrl.o monolib_mediactrl_gstplayer.o @COND_TOOLKIT_MOTIF@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \ -@COND_TOOLKIT_MOTIF@ monolib_unix_mediactrl.o +@COND_TOOLKIT_MOTIF@ monolib_unix_mediactrl.o \ +@COND_TOOLKIT_MOTIF@ monolib_mediactrl_gstplayer.o @COND_TOOLKIT_MSW@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \ @COND_TOOLKIT_MSW@ monolib_mediactrl_am.o monolib_mediactrl_wmp10.o \ @COND_TOOLKIT_MSW@ monolib_mediactrl_qt.o @@ -8077,7 +8082,8 @@ COND_TOOLKIT_X11___ADVANCED_PLATFORM_SRC_OBJECTS_3 = \ @COND_TOOLKIT_OSX_IPHONE@__MEDIA_PLATFORM_SRC_OBJECTS_1 \ @COND_TOOLKIT_OSX_IPHONE@ = monolib_osx_cocoa_mediactrl.o @COND_TOOLKIT_QT@__MEDIA_PLATFORM_SRC_OBJECTS_1 = monolib_qt_mediactrl.o -@COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS_1 = monolib_unix_mediactrl.o +@COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS_1 = \ +@COND_TOOLKIT_X11@ monolib_unix_mediactrl.o monolib_mediactrl_gstplayer.o @COND_PLATFORM_MACOSX_1@__HTML_SRC_PLATFORM_OBJECTS_1 = monolib_chm.o @COND_PLATFORM_UNIX_1@__HTML_SRC_PLATFORM_OBJECTS_1 = monolib_chm.o @COND_TOOLKIT_MSW@__HTML_SRC_PLATFORM_OBJECTS_1 = \ @@ -12131,9 +12137,11 @@ COND_USE_SOVERSOLARIS_1___mediadll___so_symlinks_uninst_cmd = rm -f \ @COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS_2 = \ @COND_TOOLKIT_COCOA@ mediadll_src_cocoa_mediactrl.o @COND_TOOLKIT_GTK@__MEDIA_PLATFORM_SRC_OBJECTS_2 = \ -@COND_TOOLKIT_GTK@ mediadll_unix_mediactrl.o +@COND_TOOLKIT_GTK@ mediadll_unix_mediactrl.o \ +@COND_TOOLKIT_GTK@ mediadll_mediactrl_gstplayer.o @COND_TOOLKIT_MOTIF@__MEDIA_PLATFORM_SRC_OBJECTS_2 = \ -@COND_TOOLKIT_MOTIF@ mediadll_unix_mediactrl.o +@COND_TOOLKIT_MOTIF@ mediadll_unix_mediactrl.o \ +@COND_TOOLKIT_MOTIF@ mediadll_mediactrl_gstplayer.o COND_TOOLKIT_MSW___MEDIA_PLATFORM_SRC_OBJECTS_2 = \ mediadll_mediactrl_am.o \ mediadll_mediactrl_wmp10.o \ @@ -12145,7 +12153,8 @@ COND_TOOLKIT_MSW___MEDIA_PLATFORM_SRC_OBJECTS_2 = \ @COND_TOOLKIT_OSX_IPHONE@ = mediadll_osx_cocoa_mediactrl.o @COND_TOOLKIT_QT@__MEDIA_PLATFORM_SRC_OBJECTS_2 = mediadll_qt_mediactrl.o @COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS_2 = \ -@COND_TOOLKIT_X11@ mediadll_unix_mediactrl.o +@COND_TOOLKIT_X11@ mediadll_unix_mediactrl.o \ +@COND_TOOLKIT_X11@ mediadll_mediactrl_gstplayer.o COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1___medialib___depname = \ $(LIBDIRNAME)/$(LIBPREFIX)wx_$(PORTNAME)$(WXUNIVNAME)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_media-$(WX_RELEASE)$(HOST_SUFFIX)$(LIBEXT) @COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1@__medialib___depname = $(COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1___medialib___depname) @@ -12161,9 +12170,11 @@ COND_MONOLITHIC_0_SHARED_0_USE_GUI_1_USE_MEDIA_1___medialib___depname = \ @COND_TOOLKIT_COCOA@__MEDIA_PLATFORM_SRC_OBJECTS_3 = \ @COND_TOOLKIT_COCOA@ medialib_src_cocoa_mediactrl.o @COND_TOOLKIT_GTK@__MEDIA_PLATFORM_SRC_OBJECTS_3 = \ -@COND_TOOLKIT_GTK@ medialib_unix_mediactrl.o +@COND_TOOLKIT_GTK@ medialib_unix_mediactrl.o \ +@COND_TOOLKIT_GTK@ medialib_mediactrl_gstplayer.o @COND_TOOLKIT_MOTIF@__MEDIA_PLATFORM_SRC_OBJECTS_3 = \ -@COND_TOOLKIT_MOTIF@ medialib_unix_mediactrl.o +@COND_TOOLKIT_MOTIF@ medialib_unix_mediactrl.o \ +@COND_TOOLKIT_MOTIF@ medialib_mediactrl_gstplayer.o COND_TOOLKIT_MSW___MEDIA_PLATFORM_SRC_OBJECTS_3 = \ medialib_mediactrl_am.o \ medialib_mediactrl_wmp10.o \ @@ -12175,7 +12186,8 @@ COND_TOOLKIT_MSW___MEDIA_PLATFORM_SRC_OBJECTS_3 = \ @COND_TOOLKIT_OSX_IPHONE@ = medialib_osx_cocoa_mediactrl.o @COND_TOOLKIT_QT@__MEDIA_PLATFORM_SRC_OBJECTS_3 = medialib_qt_mediactrl.o @COND_TOOLKIT_X11@__MEDIA_PLATFORM_SRC_OBJECTS_3 = \ -@COND_TOOLKIT_X11@ medialib_unix_mediactrl.o +@COND_TOOLKIT_X11@ medialib_unix_mediactrl.o \ +@COND_TOOLKIT_X11@ medialib_mediactrl_gstplayer.o @COND_SHARED_1@____wxmedia_namedll_DEP = $(__mediadll___depname) @COND_SHARED_0@____wxmedia_namelib_DEP = $(__medialib___depname) COND_MONOLITHIC_0_SHARED_1_USE_GUI_1_USE_HTML_1___htmldll___depname = \ @@ -20339,6 +20351,15 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_X11_USE_GUI_1@monodll_unix_mediactrl.o: $(srcdir)/src/unix/mediactrl.cpp $(MONODLL_ODEP) @COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl.cpp +@COND_TOOLKIT_MOTIF_USE_GUI_1@monodll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_GTK_USE_GUI_1@monodll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@monodll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONODLL_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monodll_chm.o: $(srcdir)/src/html/chm.cpp $(MONODLL_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/html/chm.cpp @@ -25160,6 +25181,15 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_X11_USE_GUI_1@monolib_unix_mediactrl.o: $(srcdir)/src/unix/mediactrl.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl.cpp +@COND_TOOLKIT_MOTIF_USE_GUI_1@monolib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_MOTIF_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_GTK_USE_GUI_1@monolib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_GTK_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_X11_USE_GUI_1@monolib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MONOLIB_ODEP) +@COND_TOOLKIT_X11_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + @COND_TOOLKIT_MSW_USE_GUI_1@monolib_chm.o: $(srcdir)/src/html/chm.cpp $(MONOLIB_ODEP) @COND_TOOLKIT_MSW_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/html/chm.cpp @@ -33929,6 +33959,15 @@ mediadll_qt_mediactrl.o: $(srcdir)/src/qt/mediactrl.cpp $(MEDIADLL_ODEP) @COND_TOOLKIT_X11@mediadll_unix_mediactrl.o: $(srcdir)/src/unix/mediactrl.cpp $(MEDIADLL_ODEP) @COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MEDIADLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl.cpp +@COND_TOOLKIT_MOTIF@mediadll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIADLL_ODEP) +@COND_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MEDIADLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_GTK@mediadll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIADLL_ODEP) +@COND_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MEDIADLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_X11@mediadll_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIADLL_ODEP) +@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MEDIADLL_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + medialib_mediactrlcmn.o: $(srcdir)/src/common/mediactrlcmn.cpp $(MEDIALIB_ODEP) $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/common/mediactrlcmn.cpp @@ -33962,6 +34001,15 @@ medialib_qt_mediactrl.o: $(srcdir)/src/qt/mediactrl.cpp $(MEDIALIB_ODEP) @COND_TOOLKIT_X11@medialib_unix_mediactrl.o: $(srcdir)/src/unix/mediactrl.cpp $(MEDIALIB_ODEP) @COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl.cpp +@COND_TOOLKIT_MOTIF@medialib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIALIB_ODEP) +@COND_TOOLKIT_MOTIF@ $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_GTK@medialib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIALIB_ODEP) +@COND_TOOLKIT_GTK@ $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + +@COND_TOOLKIT_X11@medialib_mediactrl_gstplayer.o: $(srcdir)/src/unix/mediactrl_gstplayer.cpp $(MEDIALIB_ODEP) +@COND_TOOLKIT_X11@ $(CXXC) -c -o $@ $(MEDIALIB_CXXFLAGS) $(srcdir)/src/unix/mediactrl_gstplayer.cpp + htmldll_version_rc.o: $(srcdir)/src/msw/version.rc $(HTMLDLL_ODEP) $(WINDRES) -i$< -o$@ --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_67) $(__DEBUG_DEFINE_p_66) $(__EXCEPTIONS_DEFINE_p_65) $(__RTTI_DEFINE_p_65) $(__THREAD_DEFINE_p_65) --define WXBUILDING --define WXDLLNAME=$(WXDLLNAMEPREFIXGUI)$(WXUNICODEFLAG)$(WXDEBUGFLAG)$(WX_LIB_FLAVOUR)_html$(WXCOMPILER)$(VENDORTAG)$(WXDLLVERSIONTAG) $(__RCDEFDIR_p) --include-dir $(top_srcdir)/include $(__INC_TIFF_BUILD_p_66) $(__INC_TIFF_p_66) $(__INC_JPEG_p_66) $(__INC_PNG_p_65) $(__INC_ZLIB_p_67) $(__INC_REGEX_p_65) $(__INC_EXPAT_p_65) --define WXUSINGDLL --define WXMAKINGDLL_HTML diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index e51be9d6fc..9660bf0066 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2990,6 +2990,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/unix/mediactrl.cpp + src/unix/mediactrl_gstplayer.cpp diff --git a/build/files b/build/files index 66520c08de..9ac55577b9 100644 --- a/build/files +++ b/build/files @@ -2732,6 +2732,7 @@ MEDIA_COCOA_HDR = MEDIA_UNIX_SRC = src/unix/mediactrl.cpp + src/unix/mediactrl_gstplayer.cpp MEDIA_UNIX_HDR = MEDIA_GTK_SRC = diff --git a/configure b/configure index fefaac3757..ae980109fa 100755 --- a/configure +++ b/configure @@ -35905,6 +35905,89 @@ pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST" >&5 $as_echo_n "checking for GST... " >&6; } +if test -n "$PKG_CONFIG"; then + if test -n "$GST_CFLAGS"; then + pkg_cv_GST_CFLAGS="$GST_CFLAGS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gstreamer-\$GST_VERSION gstreamer-video-\$GST_VERSION gstreamer-player-\$GST_VERSION >= 1.7.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GST_CFLAGS=`$PKG_CONFIG --cflags "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi +if test -n "$PKG_CONFIG"; then + if test -n "$GST_LIBS"; then + pkg_cv_GST_LIBS="$GST_LIBS" + else + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gstreamer-\$GST_VERSION gstreamer-video-\$GST_VERSION gstreamer-player-\$GST_VERSION >= 1.7.2.1\""; } >&5 + ($PKG_CONFIG --exists --print-errors "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_GST_LIBS=`$PKG_CONFIG --libs "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1" 2>/dev/null` +else + pkg_failed=yes +fi + fi +else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + GST_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1"` + else + GST_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1"` + fi + # Put the nasty error message in config.log where it belongs + echo "$GST_PKG_ERRORS" >&5 + + + { $as_echo "$as_me:${as_lineno-$LINENO}: GStreamer 1.7.2+ not available. Not using GstPlayer and falling back to 1.0" >&5 +$as_echo "$as_me: GStreamer 1.7.2+ not available. Not using GstPlayer and falling back to 1.0" >&6;} + + +elif test $pkg_failed = untried; then + + { $as_echo "$as_me:${as_lineno-$LINENO}: GStreamer 1.7.2+ not available. Not using GstPlayer and falling back to 1.0" >&5 +$as_echo "$as_me: GStreamer 1.7.2+ not available. Not using GstPlayer and falling back to 1.0" >&6;} + + +else + GST_CFLAGS=$pkg_cv_GST_CFLAGS + GST_LIBS=$pkg_cv_GST_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + wxUSE_GSTREAMER="yes" + $as_echo "#define wxUSE_GSTREAMER_PLAYER 1" >>confdefs.h + + +fi + + if test $wxUSE_GSTREAMER = "no"; then + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST" >&5 +$as_echo_n "checking for GST... " >&6; } + if test -n "$PKG_CONFIG"; then if test -n "$GST_CFLAGS"; then pkg_cv_GST_CFLAGS="$GST_CFLAGS" @@ -35960,20 +36043,20 @@ fi echo "$GST_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&5 $as_echo "$as_me: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&2;} - GST_VERSION_MAJOR=0 - GST_VERSION_MINOR=10 - GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR + GST_VERSION_MAJOR=0 + GST_VERSION_MINOR=10 + GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR elif test $pkg_failed = untried; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&5 + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&5 $as_echo "$as_me: WARNING: GStreamer 1.0 not available, falling back to 0.10" >&2;} - GST_VERSION_MAJOR=0 - GST_VERSION_MINOR=10 - GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR + GST_VERSION_MAJOR=0 + GST_VERSION_MINOR=10 + GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR else @@ -35982,9 +36065,10 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - wxUSE_GSTREAMER="yes" + wxUSE_GSTREAMER="yes" fi + fi if test $GST_VERSION_MINOR = "10"; then diff --git a/configure.in b/configure.in index d0c441f1c3..41d34cdcc2 100644 --- a/configure.in +++ b/configure.in @@ -7260,18 +7260,31 @@ if test "$wxUSE_MEDIACTRL" = "yes" -o "$wxUSE_MEDIACTRL" = "auto"; then GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR PKG_CHECK_MODULES(GST, - [gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION], + [gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION gstreamer-player-$GST_VERSION >= 1.7.2.1], [ wxUSE_GSTREAMER="yes" + AC_DEFINE(wxUSE_GSTREAMER_PLAYER) ], [ - AC_MSG_WARN([GStreamer 1.0 not available, falling back to 0.10]) - GST_VERSION_MAJOR=0 - GST_VERSION_MINOR=10 - GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR + AC_MSG_NOTICE([GStreamer 1.7.2+ not available. Not using GstPlayer and falling back to 1.0]) ] ) + if test $wxUSE_GSTREAMER = "no"; then + PKG_CHECK_MODULES(GST, + [gstreamer-$GST_VERSION gstreamer-video-$GST_VERSION], + [ + wxUSE_GSTREAMER="yes" + ], + [ + AC_MSG_WARN([GStreamer 1.0 not available, falling back to 0.10]) + GST_VERSION_MAJOR=0 + GST_VERSION_MINOR=10 + GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR + ] + ) + fi + if test $GST_VERSION_MINOR = "10"; then PKG_CHECK_MODULES(GST, [gstreamer-$GST_VERSION gstreamer-plugins-base-$GST_VERSION], diff --git a/docs/changes.txt b/docs/changes.txt index 31d43b9b23..ecd554c980 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -72,6 +72,10 @@ wxOSX: - Set up extensions filter correctly in wxFileDialog (nick863). - Turn off automatic quotes substitutions in wxTextCtrl (Xlord2). +Unix: + +- Support new gstreamer API in 1.7.2+ in wxMediaCtrl (Sebastian Dröge). + 3.1.0: (released 2016-02-29) ---------------------------- diff --git a/setup.h.in b/setup.h.in index ee9d346573..6965f925da 100644 --- a/setup.h.in +++ b/setup.h.in @@ -635,6 +635,8 @@ */ #define wxUSE_GSTREAMER 0 +#define wxUSE_GSTREAMER_PLAYER 0 + /* --- start MSW options --- */ diff --git a/src/unix/mediactrl.cpp b/src/unix/mediactrl.cpp index 81da7425b0..c38c20efd6 100644 --- a/src/unix/mediactrl.cpp +++ b/src/unix/mediactrl.cpp @@ -11,12 +11,10 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" -#if wxUSE_MEDIACTRL +#if wxUSE_MEDIACTRL && wxUSE_GSTREAMER && !wxUSE_GSTREAMER_PLAYER #include "wx/mediactrl.h" -#if wxUSE_GSTREAMER - #include // main gstreamer header #if GST_CHECK_VERSION(1,0,0) @@ -1589,10 +1587,8 @@ double wxGStreamerMediaBackend::GetVolume() return dVolume; } -#endif //wxUSE_GSTREAMER - // Force link into main library so this backend can be loaded #include "wx/html/forcelnk.h" FORCE_LINK_ME(basewxmediabackends) -#endif //wxUSE_MEDIACTRL +#endif // wxUSE_MEDIACTRL && wxUSE_GSTREAMER && !wxUSE_GSTREAMER_PLAYER diff --git a/src/unix/mediactrl_gstplayer.cpp b/src/unix/mediactrl_gstplayer.cpp new file mode 100644 index 0000000000..b7c22c0a04 --- /dev/null +++ b/src/unix/mediactrl_gstplayer.cpp @@ -0,0 +1,514 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/unix/mediactrl.cpp +// Purpose: GStreamer backend for Unix +// Author: Sebastian Dröge +// Created: 2016-02-28 +// Copyright: (c) 2004-2005 Ryan Norton +// (c) 2016 Sebastian Dröge +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#if wxUSE_MEDIACTRL && wxUSE_GSTREAMER && wxUSE_GSTREAMER_PLAYER + +#include "wx/mediactrl.h" + +#include // main gstreamer player header + +#ifndef WX_PRECOMP + #include "wx/log.h" // wxLogDebug/wxLogSysError/wxLogTrace + #include "wx/app.h" // wxTheApp->argc, wxTheApp->argv + #include "wx/timer.h" // wxTimer +#endif + +#include "wx/filesys.h" // FileNameToURL() +#include "wx/thread.h" // wxMutex/wxMutexLocker +#include "wx/vector.h" // wxVector + +#ifdef __WXGTK__ + #include + #include + #include "wx/gtk/private/gtk2-compat.h" +#endif + +//============================================================================= +// Declarations +//============================================================================= +//----------------------------------------------------------------------------- +// wxLogTrace mask string +//----------------------------------------------------------------------------- +#define wxTRACE_GStreamer wxT("GStreamer") + +//----------------------------------------------------------------------------- +// +// wxGStreamerMediaBackend +// +//----------------------------------------------------------------------------- +class WXDLLIMPEXP_MEDIA + wxGStreamerMediaBackend : public wxMediaBackendCommonBase +{ +public: + + wxGStreamerMediaBackend(); + virtual ~wxGStreamerMediaBackend(); + + virtual bool CreateControl(wxControl* ctrl, wxWindow* parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name) wxOVERRIDE; + + virtual bool Play() wxOVERRIDE; + virtual bool Pause() wxOVERRIDE; + virtual bool Stop() wxOVERRIDE; + + virtual bool Load(const wxString& fileName) wxOVERRIDE; + virtual bool Load(const wxURI& location) wxOVERRIDE; + virtual bool Load(const wxURI& location, + const wxURI& proxy) wxOVERRIDE + { return wxMediaBackendCommonBase::Load(location, proxy); } + + + virtual bool SetPosition(wxLongLong where) wxOVERRIDE; + virtual wxLongLong GetPosition() wxOVERRIDE; + virtual wxLongLong GetDuration() wxOVERRIDE; + + virtual void Move(int x, int y, int w, int h) wxOVERRIDE; + wxSize GetVideoSize() const wxOVERRIDE; + + virtual double GetPlaybackRate() wxOVERRIDE; + virtual bool SetPlaybackRate(double dRate) wxOVERRIDE; + + virtual wxMediaState GetState() wxOVERRIDE; + + virtual bool SetVolume(double dVolume) wxOVERRIDE; + virtual double GetVolume() wxOVERRIDE; + + virtual wxLongLong GetDownloadProgress() wxOVERRIDE; + virtual wxLongLong GetDownloadTotal() wxOVERRIDE; + + bool DoLoad(const wxString& locstring); + wxMediaCtrl* GetControl() { return m_ctrl; } // for C Callbacks + + void VideoDimensionsChanged(int width, int height); + void StateChanged(GstPlayerState state); + void EndOfStream(); + + GstPlayer *m_player; + GstPlayerVideoRenderer *m_video_renderer; + wxSize m_videoSize; + wxMediaState m_last_state; + bool m_loaded; + + wxDECLARE_DYNAMIC_CLASS(wxGStreamerMediaBackend); +}; + +//============================================================================= +// Implementation +//============================================================================= + +wxIMPLEMENT_DYNAMIC_CLASS(wxGStreamerMediaBackend, wxMediaBackend); + +//----------------------------------------------------------------------------- +// +// C Callbacks +// +//----------------------------------------------------------------------------- + +//----------------------------------------------------------------------------- +// "expose_event" from m_ctrl->m_wxwindow +// +// Handle GTK expose event from our window - here we hopefully +// redraw the video in the case of pausing and other instances... +// (Returns TRUE to pass to other handlers, FALSE if not) +// +//----------------------------------------------------------------------------- +#ifdef __WXGTK__ +static gboolean +#ifdef __WXGTK3__ +draw_callback(GtkWidget* widget, cairo_t* cr, wxGStreamerMediaBackend* be) +#else +expose_event_callback(GtkWidget* widget, GdkEventExpose* event, wxGStreamerMediaBackend* be) +#endif +{ + // If we have actual video..... + if(!(be->m_videoSize.x==0&&be->m_videoSize.y==0)) + { + // GST Doesn't redraw automatically while paused + // Plus, the video sometimes doesn't redraw when it looses focus + // or is painted over so we just tell it to redraw... + gst_player_video_overlay_video_renderer_expose(GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER(be->m_video_renderer)); + } + else + { + // draw a black background like some other backends do.... +#ifdef __WXGTK3__ + GtkAllocation a; + gtk_widget_get_allocation(widget, &a); + cairo_rectangle(cr, 0, 0, a.width, a.height); + cairo_set_source_rgb(cr, 0, 0, 0); + cairo_fill(cr); +#else + gdk_draw_rectangle (event->window, widget->style->black_gc, TRUE, 0, 0, + widget->allocation.width, + widget->allocation.height); +#endif + } + + return FALSE; +} +#endif // wxGTK + +//----------------------------------------------------------------------------- +// "realize" from m_ctrl->m_wxwindow +// +// If the window wasn't realized when Load was called, this is the +// callback for when it is - the purpose of which is to tell +// GStreamer to play the video in our control +//----------------------------------------------------------------------------- +#ifdef __WXGTK__ +extern "C" { +static void realize_callback(GtkWidget* widget, wxGStreamerMediaBackend* be) +{ + gdk_flush(); + + GdkWindow* window = gtk_widget_get_window(widget); + wxASSERT(window); + + gst_player_video_overlay_video_renderer_set_window_handle(GST_PLAYER_VIDEO_OVERLAY_VIDEO_RENDERER(be->m_video_renderer), + (gpointer) GDK_WINDOW_XID(window) + ); + GtkWidget* w = be->GetControl()->m_wxwindow; +#ifdef __WXGTK3__ + g_signal_connect(w, "draw", G_CALLBACK(draw_callback), be); +#else + g_signal_connect(w, "expose_event", G_CALLBACK(expose_event_callback), be); +#endif +} +} +#endif // wxGTK + +wxGStreamerMediaBackend::wxGStreamerMediaBackend() + : m_player(0), m_video_renderer(0), m_videoSize(0, 0), m_last_state(wxMEDIASTATE_STOPPED), m_loaded(false) +{ + +} + +wxGStreamerMediaBackend::~wxGStreamerMediaBackend() +{ + m_video_renderer = NULL; + if (m_player) + gst_object_unref(m_player); + m_player = NULL; +} + +extern "C" { +static void video_dimensions_changed_callback(GstPlayer * WXUNUSED(player), gint width, gint height, wxGStreamerMediaBackend* be) +{ + be->VideoDimensionsChanged(width, height); +} + +static void state_changed_callback(GstPlayer * WXUNUSED(player), GstPlayerState state, wxGStreamerMediaBackend* be) +{ + be->StateChanged(state); +} + +static void end_of_stream_callback(GstPlayer * WXUNUSED(player), wxGStreamerMediaBackend* be) +{ + be->EndOfStream(); +} +} + +bool wxGStreamerMediaBackend::CreateControl(wxControl* ctrl, wxWindow* parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name) +{ + // + //init gstreamer + // + + //Convert arguments to unicode if enabled +#if wxUSE_UNICODE + int i; + char **argvGST = new char*[wxTheApp->argc + 1]; + for ( i = 0; i < wxTheApp->argc; i++ ) + { + argvGST[i] = wxStrdupA(wxTheApp->argv[i].utf8_str()); + } + + argvGST[wxTheApp->argc] = NULL; + + int argcGST = wxTheApp->argc; +#else +#define argcGST wxTheApp->argc +#define argvGST wxTheApp->argv +#endif + + //Really init gstreamer + gboolean bInited; + GError* error = NULL; + bInited = gst_init_check(&argcGST, &argvGST, &error); + + // Cleanup arguments for unicode case +#if wxUSE_UNICODE + for ( i = 0; i < argcGST; i++ ) + { + free(argvGST[i]); + } + + delete [] argvGST; +#endif + + if(!bInited) //gst_init_check fail? + { + if(error) + { + wxLogSysError(wxT("Could not initialize GStreamer\n") + wxT("Error Message:%s"), + (const wxChar*) wxConvUTF8.cMB2WX(error->message) + ); + g_error_free(error); + } + else + wxLogSysError(wxT("Could not initialize GStreamer")); + + return false; + } + + // + // wxControl creation + // + m_ctrl = wxStaticCast(ctrl, wxMediaCtrl); + +#ifdef __WXGTK__ + // We handle our own GTK expose events + m_ctrl->m_noExpose = true; +#endif + + if( !m_ctrl->wxControl::Create(parent, id, pos, size, + style, // TODO: remove borders??? + validator, name) ) + { + wxFAIL_MSG(wxT("Could not create wxControl!!!")); + return false; + } + +#ifdef __WXGTK__ + // Turn off double-buffering so that + // so it doesn't draw over the video and cause sporadic + // disappearances of the video + gtk_widget_set_double_buffered(m_ctrl->m_wxwindow, FALSE); +#endif + + // don't erase the background of our control window + // so that resizing is a bit smoother + m_ctrl->SetBackgroundStyle(wxBG_STYLE_CUSTOM); + + // Tell gstreamer to play in our window + gpointer window_handle = NULL; +#ifdef __WXGTK__ + if (!gtk_widget_get_realized(m_ctrl->m_wxwindow)) + { + // Not realized yet - set to connect at realization time + g_signal_connect (m_ctrl->m_wxwindow, + "realize", + G_CALLBACK (realize_callback), + this); + } + else + { + GdkWindow* window = gtk_widget_get_window(m_ctrl->m_wxwindow); + wxASSERT(window); + window_handle = (gpointer) GDK_WINDOW_XID(window); + + GtkWidget* w = m_ctrl->m_wxwindow; +#ifdef __WXGTK3__ + g_signal_connect(w, "draw", G_CALLBACK(draw_callback), this); +#else + g_signal_connect(w, "expose_event", G_CALLBACK(expose_event_callback), this); +#endif + } +#else + window_handle = ctrl->GetHandle(); +#endif + + m_video_renderer = gst_player_video_overlay_video_renderer_new(window_handle); + m_player = gst_player_new(m_video_renderer, gst_player_g_main_context_signal_dispatcher_new(NULL)); + + g_signal_connect(m_player, "video-dimensions-changed", G_CALLBACK(video_dimensions_changed_callback), this); + g_signal_connect(m_player, "state-changed", G_CALLBACK(state_changed_callback), this); + g_signal_connect(m_player, "end-of-stream", G_CALLBACK(end_of_stream_callback), this); + + return true; +} + +bool wxGStreamerMediaBackend::Play() +{ + gst_player_play(m_player); + + return true; +} + +bool wxGStreamerMediaBackend::Pause() +{ + gst_player_pause(m_player); + + return true; +} + +bool wxGStreamerMediaBackend::Stop() +{ + gst_player_stop(m_player); + + return true; +} + +bool wxGStreamerMediaBackend::Load(const wxString& fileName) +{ + return DoLoad(wxFileSystem::FileNameToURL(fileName)); +} + +bool wxGStreamerMediaBackend::Load(const wxURI& location) +{ + return DoLoad(location.BuildURI()); +} + +bool wxGStreamerMediaBackend::DoLoad(const wxString& locstring) +{ + // Make sure the passed URI is valid and tell playbin to load it + // non-file uris are encoded + wxASSERT(gst_uri_protocol_is_valid("file")); + wxASSERT(gst_uri_is_valid(locstring.mb_str())); + + gst_player_stop(m_player); + m_loaded = false; + gst_player_set_uri(m_player, (const char*)locstring.mb_str()); + gst_player_pause(m_player); + + return true; +} + +void wxGStreamerMediaBackend::VideoDimensionsChanged(int width, int height) +{ + if (m_loaded) { + m_videoSize.x = width; + m_videoSize.y = height; + NotifyMovieSizeChanged(); + } +} + +void wxGStreamerMediaBackend::StateChanged(GstPlayerState state) +{ + switch (state) { + case GST_PLAYER_STATE_BUFFERING: + case GST_PLAYER_STATE_PAUSED: + if (!m_loaded) { + NotifyMovieLoaded(); + m_loaded = true; + } + + m_last_state = wxMEDIASTATE_PAUSED; + QueuePauseEvent(); + break; + case GST_PLAYER_STATE_PLAYING: + m_last_state = wxMEDIASTATE_PLAYING; + QueuePlayEvent(); + break; + case GST_PLAYER_STATE_STOPPED: + default: + m_last_state = wxMEDIASTATE_STOPPED; + QueueStopEvent(); + break; + } +} + +void wxGStreamerMediaBackend::EndOfStream() +{ + if (SendStopEvent()) + QueueFinishEvent(); +} + +bool wxGStreamerMediaBackend::SetPosition(wxLongLong where) +{ + gst_player_seek(m_player, where.GetValue() * GST_MSECOND); + + return true; +} + +wxLongLong wxGStreamerMediaBackend::GetPosition() +{ + GstClockTime position = gst_player_get_position(m_player); + + return GST_CLOCK_TIME_IS_VALID(position) ? position / GST_MSECOND : 0; +} + +wxLongLong wxGStreamerMediaBackend::GetDuration() +{ + GstClockTime duration = gst_player_get_duration(m_player); + + return GST_CLOCK_TIME_IS_VALID(duration) ? duration / GST_MSECOND : 0; +} + +void wxGStreamerMediaBackend::Move(int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(w), int WXUNUSED(h)) +{ + /* Nothing to be done here, at least for GTK+. For other toolkits we might + * have to call + * gst_player_video_overlay_video_renderer_set_render_rectangle() here + */ +} + +wxSize wxGStreamerMediaBackend::GetVideoSize() const +{ + return m_videoSize; +} + +double wxGStreamerMediaBackend::GetPlaybackRate() +{ + return gst_player_get_rate(m_player); +} + +bool wxGStreamerMediaBackend::SetPlaybackRate(double dRate) +{ + gst_player_set_rate(m_player, dRate); + return true; +} + +wxMediaState wxGStreamerMediaBackend::GetState() +{ + return m_last_state; +} + +bool wxGStreamerMediaBackend::SetVolume(double dVolume) +{ + gst_player_set_volume(m_player, dVolume); + return true; +} + +double wxGStreamerMediaBackend::GetVolume() +{ + return gst_player_get_volume(m_player); +} + +wxLongLong wxGStreamerMediaBackend::GetDownloadProgress() +{ + return 0; +} + +wxLongLong wxGStreamerMediaBackend::GetDownloadTotal() +{ + return 0; +} + +// Force link into main library so this backend can be loaded +#include "wx/html/forcelnk.h" +FORCE_LINK_ME(basewxmediabackends) + +#endif // wxUSE_MEDIACTRL && wxUSE_GSTREAMER && wxUSE_GSTREAMER_PLAYER From cda7209101162517b3cc2e82ef892ed25bf4b6c4 Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 03:09:59 +0100 Subject: [PATCH 28/36] Add wxFileType::GetExpandedCommand() This new method allows to get the command expanded with the given file name for commands other than "Open" and "Print". Closes #17367. --- docs/changes.txt | 1 + include/wx/mimetype.h | 3 +++ include/wx/msw/mimetype.h | 16 ++++++++++++++-- include/wx/osx/core/mimetype.h | 3 +++ include/wx/unix/mimetype.h | 3 +-- interface/wx/mimetype.h | 16 ++++++++++++++++ samples/exec/exec.cpp | 14 +++++++++++--- src/common/mimecmn.cpp | 7 +++++++ src/msw/mimetype.cpp | 28 +++++++--------------------- src/osx/core/mimetype.cpp | 6 ++++++ 10 files changed, 69 insertions(+), 28 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index ecd554c980..a31c66cc36 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -61,6 +61,7 @@ All: functions. See wxGetOsVersion(), wxPlatformInfo, and wxAppTraits. - wxLogInfo() now logs messages if the log level is high enough, even without wxLog::SetVerbose() which now only affects wxLogVerbose(). +- Add wxFileType::GetExpandedCommand() (troelsk). wxMSW: diff --git a/include/wx/mimetype.h b/include/wx/mimetype.h index 07c3880991..c95d7775f9 100644 --- a/include/wx/mimetype.h +++ b/include/wx/mimetype.h @@ -353,6 +353,9 @@ public: // dtor (not virtual, shouldn't be derived from) ~wxFileType(); + wxString + GetExpandedCommand(const wxString& verb, + const wxFileType::MessageParameters& params) const; private: // default ctor is private because the user code never creates us wxFileType(); diff --git a/include/wx/msw/mimetype.h b/include/wx/msw/mimetype.h index aa3880f2b2..77becd7b84 100644 --- a/include/wx/msw/mimetype.h +++ b/include/wx/msw/mimetype.h @@ -42,9 +42,18 @@ public: bool GetIcon(wxIconLocation *iconLoc) const; bool GetDescription(wxString *desc) const; bool GetOpenCommand(wxString *openCmd, - const wxFileType::MessageParameters& params) const; + const wxFileType::MessageParameters& params) const + { + *openCmd = GetExpandedCommand(wxS("open"), params); + return !openCmd->empty(); + } + bool GetPrintCommand(wxString *printCmd, - const wxFileType::MessageParameters& params) const; + const wxFileType::MessageParameters& params) const + { + *printCmd = GetExpandedCommand(wxS("print"), params); + return !printCmd->empty(); + } size_t GetAllCommands(wxArrayString * verbs, wxArrayString * commands, const wxFileType::MessageParameters& params) const; @@ -76,6 +85,9 @@ public: // explicitly. void MSWSuppressNotifications(bool supress); + wxString + GetExpandedCommand(const wxString& verb, + const wxFileType::MessageParameters& params) const; private: // helper function: reads the command corresponding to the specified verb // from the registry (returns an empty string if not found) diff --git a/include/wx/osx/core/mimetype.h b/include/wx/osx/core/mimetype.h index 7f92a990ff..2a97b3cda6 100644 --- a/include/wx/osx/core/mimetype.h +++ b/include/wx/osx/core/mimetype.h @@ -105,6 +105,9 @@ public: bool SetDefaultIcon(const wxString& strIcon = wxEmptyString, int index = 0); bool Unassociate(wxFileType *ft); + wxString + GetExpandedCommand(const wxString& verb, + const wxFileType::MessageParameters& params) const; private: // All that is needed to query type info - UTI and pointer to the manager diff --git a/include/wx/unix/mimetype.h b/include/wx/unix/mimetype.h index df76534aa5..27b303bbe7 100644 --- a/include/wx/unix/mimetype.h +++ b/include/wx/unix/mimetype.h @@ -157,11 +157,10 @@ public: bool SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt = true); bool SetDefaultIcon(const wxString& strIcon = wxEmptyString, int index = 0); -private: wxString GetExpandedCommand(const wxString & verb, const wxFileType::MessageParameters& params) const; - +private: wxMimeTypesManagerImpl *m_manager; wxArrayInt m_index; // in the wxMimeTypesManagerImpl arrays }; diff --git a/interface/wx/mimetype.h b/interface/wx/mimetype.h index 0b220ca107..18426b6f68 100644 --- a/interface/wx/mimetype.h +++ b/interface/wx/mimetype.h @@ -376,6 +376,22 @@ public: bool GetPrintCommand(wxString* command, const MessageParameters& params) const; + + /** + The returned string is the command to be executed in order to + open/print/edit the file of the given type. + + If the string is empty, the lookup for the @a verb failed. + + The name of the file is retrieved from the MessageParameters class. + + @see wxExecute() + + @since 3.1.1 + */ + wxString GetExpandedCommand(const wxString& verb, + const wxFileType::MessageParameters& params) const; + /** Returns the number of commands for this mime type, and fills the verbs and commands arrays with the command information. diff --git a/samples/exec/exec.cpp b/samples/exec/exec.cpp index 53f8535d06..ae59f17575 100644 --- a/samples/exec/exec.cpp +++ b/samples/exec/exec.cpp @@ -50,6 +50,7 @@ #include "wx/sizer.h" #endif +#include "wx/filename.h" #include "wx/txtstrm.h" #include "wx/numdlg.h" #include "wx/textdlg.h" @@ -1078,7 +1079,7 @@ void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event)) if ( !AskUserForFileName() ) return; - wxString ext = gs_lastFile.AfterLast(wxT('.')); + wxString ext = wxFileName(gs_lastFile).GetExt(); wxFileType *ft = wxTheMimeTypesManager->GetFileTypeFromExtension(ext); if ( !ft ) { @@ -1088,8 +1089,15 @@ void MyFrame::OnFileExec(wxCommandEvent& WXUNUSED(event)) } wxString cmd; - bool ok = ft->GetOpenCommand(&cmd, - wxFileType::MessageParameters(gs_lastFile)); + bool ok = false; + const wxFileType::MessageParameters params(gs_lastFile); +#ifdef __WXMSW__ + // try editor, for instance Notepad if extension is .xml + cmd = ft->GetExpandedCommand(wxT("edit"), params); + ok = !cmd.empty(); +#endif + if (!ok) // else try viewer + ok = ft->GetOpenCommand(&cmd, params); delete ft; if ( !ok ) { diff --git a/src/common/mimecmn.cpp b/src/common/mimecmn.cpp index c6904c3d3a..ae86108b92 100644 --- a/src/common/mimecmn.cpp +++ b/src/common/mimecmn.cpp @@ -428,6 +428,13 @@ wxFileType::GetPrintCommand(wxString *printCmd, return m_impl->GetPrintCommand(printCmd, params); } +wxString +wxFileType::GetExpandedCommand(const wxString& verb, + const wxFileType::MessageParameters& params) const +{ + return m_impl->GetExpandedCommand(verb, params); +} + size_t wxFileType::GetAllCommands(wxArrayString *verbs, wxArrayString *commands, diff --git a/src/msw/mimetype.cpp b/src/msw/mimetype.cpp index a94214c990..380a2807ed 100644 --- a/src/msw/mimetype.cpp +++ b/src/msw/mimetype.cpp @@ -338,33 +338,19 @@ wxString wxFileTypeImpl::GetCommand(const wxString& verb) const return command; } -bool -wxFileTypeImpl::GetOpenCommand(wxString *openCmd, - const wxFileType::MessageParameters& params) - const + +wxString +wxFileTypeImpl::GetExpandedCommand(const wxString & verb, + const wxFileType::MessageParameters& params) const { - wxString cmd = GetCommand(wxT("open")); + wxString cmd = GetCommand(verb); // Some viewers don't define the "open" verb but do define "show" one, try // to use it as a fallback. - if ( cmd.empty() ) + if ( cmd.empty() && (verb == wxT("open")) ) cmd = GetCommand(wxT("show")); - *openCmd = wxFileType::ExpandCommand(cmd, params); - - return !openCmd->empty(); -} - -bool -wxFileTypeImpl::GetPrintCommand(wxString *printCmd, - const wxFileType::MessageParameters& params) - const -{ - wxString cmd = GetCommand(wxT("print")); - - *printCmd = wxFileType::ExpandCommand(cmd, params); - - return !printCmd->empty(); + return wxFileType::ExpandCommand(cmd, params); } // ---------------------------------------------------------------------------- diff --git a/src/osx/core/mimetype.cpp b/src/osx/core/mimetype.cpp index 7d5de4bba9..dce5997464 100644 --- a/src/osx/core/mimetype.cpp +++ b/src/osx/core/mimetype.cpp @@ -699,6 +699,12 @@ bool wxFileTypeImpl::Unassociate(wxFileType *WXUNUSED(ft)) return false; } +wxString +wxFileTypeImpl::GetExpandedCommand(const wxString& WXUNUSED(verb), + const wxFileType::MessageParameters& WXUNUSED(params)) const +{ + return wxString(); +} #endif // wxUSE_MIMETYPE From 10a2049093d2154cd60ad8a894e370439825a144 Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 03:21:57 +0100 Subject: [PATCH 29/36] Right align sizes in wxGenericFileDialog Numeric values should be right-aligned. See #17060. --- src/generic/filectrlg.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generic/filectrlg.cpp b/src/generic/filectrlg.cpp index 45765a73b2..4c030d2b14 100644 --- a/src/generic/filectrlg.cpp +++ b/src/generic/filectrlg.cpp @@ -421,7 +421,7 @@ void wxFileListCtrl::ChangeToReportMode() GetTextExtent(txt, &w, &h); InsertColumn( 0, _("Name"), wxLIST_FORMAT_LEFT, w ); - InsertColumn( 1, _("Size"), wxLIST_FORMAT_LEFT, w/2 ); + InsertColumn( 1, _("Size"), wxLIST_FORMAT_RIGHT, w/2 ); InsertColumn( 2, _("Type"), wxLIST_FORMAT_LEFT, w/2 ); InsertColumn( 3, _("Modified"), wxLIST_FORMAT_LEFT, w ); #if defined(__UNIX__) From c9a3a23e5a48796e980f3c558eb0051344e85054 Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 03:33:08 +0100 Subject: [PATCH 30/36] Add wxHtmlPrintout::SetMargins(wxPageSetupDialogData) overload Make it simpler to set the user-configured margins. Closes #16872. --- include/wx/html/htmprint.h | 4 +++- interface/wx/html/htmprint.h | 7 +++++++ src/html/htmprint.cpp | 14 ++++++++------ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/include/wx/html/htmprint.h b/include/wx/html/htmprint.h index 77a34fcde9..6098b9bd94 100644 --- a/include/wx/html/htmprint.h +++ b/include/wx/html/htmprint.h @@ -156,9 +156,11 @@ public: void SetMargins(float top = 25.2f, float bottom = 25.2f, float left = 25.2f, float right = 25.2f, float spaces = 5); - // sets margins in milimeters. Defaults to 1 inch for margins and 0.5cm for space + // sets margins in millimeters. Defaults to 1 inch for margins and 0.5cm for space // between text and header and/or footer + void SetMargins(const wxPageSetupDialogData& pageSetupData); + // wxPrintout stuff: bool OnPrintPage(int page) wxOVERRIDE; bool HasPage(int page) wxOVERRIDE; diff --git a/interface/wx/html/htmprint.h b/interface/wx/html/htmprint.h index 62b011d369..7d0ceaf15e 100644 --- a/interface/wx/html/htmprint.h +++ b/interface/wx/html/htmprint.h @@ -444,5 +444,12 @@ public: float left = 25.2, float right = 25.2, float spaces = 5); + + /** + Sets margins from wxPageSetupDialogData. + + @since 3.1.0 + */ + void SetMargins(const wxPageSetupDialogData& pageSetupData); }; diff --git a/src/html/htmprint.cpp b/src/html/htmprint.cpp index b8b860a5fc..250e807b99 100644 --- a/src/html/htmprint.cpp +++ b/src/html/htmprint.cpp @@ -593,8 +593,13 @@ void wxHtmlPrintout::SetMargins(float top, float bottom, float left, float right m_MarginSpace = spaces; } - - +void wxHtmlPrintout::SetMargins(const wxPageSetupDialogData& pageSetupData) +{ + SetMargins(pageSetupData.GetMarginTopLeft().y, + pageSetupData.GetMarginBottomRight().y, + pageSetupData.GetMarginTopLeft().x, + pageSetupData.GetMarginBottomRight().x); +} void wxHtmlPrintout::SetFonts(const wxString& normal_face, const wxString& fixed_face, const int *sizes) @@ -818,10 +823,7 @@ wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout() p->SetFooter(m_Footers[0], wxPAGE_EVEN); p->SetFooter(m_Footers[1], wxPAGE_ODD); - p->SetMargins(m_PageSetupData->GetMarginTopLeft().y, - m_PageSetupData->GetMarginBottomRight().y, - m_PageSetupData->GetMarginTopLeft().x, - m_PageSetupData->GetMarginBottomRight().x); + p->SetMargins(*m_PageSetupData); return p; } From d5453228aa7ee7e889b96d348af40236589335f4 Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 03:37:02 +0100 Subject: [PATCH 31/36] Fix wxTextEntryDialog parent when using wxTE_MULTILINE Due to a clash between numeric values of wxTE_MULTILINE and wxDIALOG_NO_PARENT text entry dialogs for multiline text didn't have a parent. Fix this by always using a parent for them, which is better than never doing it, even if still not ideal. Closes #17136. --- src/generic/textdlgg.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/generic/textdlgg.cpp b/src/generic/textdlgg.cpp index dd24269a71..979d7cc9e6 100644 --- a/src/generic/textdlgg.cpp +++ b/src/generic/textdlgg.cpp @@ -71,7 +71,13 @@ bool wxTextEntryDialog::Create(wxWindow *parent, long style, const wxPoint& pos) { - if ( !wxDialog::Create(GetParentForModalDialog(parent, style), + // Do not pass style to GetParentForModalDialog() as wxDIALOG_NO_PARENT + // has the same numeric value as wxTE_MULTILINE and so attempting to create + // a dialog for editing multiline text would also prevent it from having a + // parent which is undesirable. As it is, we can't create a text entry + // dialog without a parent which is not ideal neither but is a much less + // important problem. + if ( !wxDialog::Create(GetParentForModalDialog(parent, 0), wxID_ANY, caption, pos, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) ) From 2ae17ee168fcd42991572434248f0767e5a2ea1b Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 03:48:37 +0100 Subject: [PATCH 32/36] Allow customizing wxGenericProgressDialog style and minor cleanup Use wxDEFAULT_DIALOG_STYLE by default but allow changing it before really creating the dialog. Also use CreateStdDialogButtonSizer() to make the code a bit more high level. Closes #17275. --- src/generic/progdlgg.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/generic/progdlgg.cpp b/src/generic/progdlgg.cpp index bbac5945c7..e61586b2c9 100644 --- a/src/generic/progdlgg.cpp +++ b/src/generic/progdlgg.cpp @@ -109,6 +109,8 @@ void wxGenericProgressDialog::Init() m_winDisabler = NULL; m_tempEventLoop = NULL; + + SetWindowStyle(wxDEFAULT_DIALOG_STYLE); } wxGenericProgressDialog::wxGenericProgressDialog() @@ -148,7 +150,7 @@ bool wxGenericProgressDialog::Create( const wxString& title, wxWindow* const realParent = GetParentForModalDialog(parent, GetWindowStyle()); - if (!wxDialog::Create(realParent, wxID_ANY, title)) + if (!wxDialog::Create(realParent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, GetWindowStyle())) return false; SetMaximum(maximum); @@ -238,10 +240,7 @@ bool wxGenericProgressDialog::Create( const wxString& title, } sizerTop->Add(sizerLabels, 0, wxALIGN_CENTER_HORIZONTAL | wxTOP, LAYOUT_MARGIN); - m_btnAbort = - m_btnSkip = NULL; - - wxStdDialogButtonSizer *buttonSizer = new wxStdDialogButtonSizer(); + wxStdDialogButtonSizer *buttonSizer = wxDialog::CreateStdDialogButtonSizer(0); const int borderFlags = wxALL; @@ -259,7 +258,7 @@ bool wxGenericProgressDialog::Create( const wxString& title, { m_btnAbort = new wxButton(this, wxID_CANCEL); - buttonSizer->AddButton(m_btnAbort); + buttonSizer->SetCancelButton(m_btnAbort); } if ( !HasPDFlag(wxPD_CAN_SKIP | wxPD_CAN_ABORT) ) From bc6eba6043d5b7e5688c93bda8bbf10d4c007302 Mon Sep 17 00:00:00 2001 From: Troels Knakkergaard Date: Sat, 5 Mar 2016 04:04:20 +0100 Subject: [PATCH 33/36] Reset the parent MDI menu after destroying MDI child in wxMSW This is necessary to avoid menu corruption in case the child creation fails. Closes #17315. --- docs/changes.txt | 1 + src/msw/mdi.cpp | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/changes.txt b/docs/changes.txt index a31c66cc36..4ab6f1dd5c 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -66,6 +66,7 @@ All: wxMSW: - Fix crash when using wxCHMHelpController() in 64 bit builds (Xlord2). +- Fix MDI menu display after failure to create a child frame (troelsk). wxOSX: diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index 0793cd2ad1..514e4eedfe 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -910,7 +910,9 @@ wxMDIChildFrame::~wxMDIChildFrame() if ( !m_hWnd ) return; - GetMDIParent()->RemoveMDIChild(this); + wxMDIParentFrame * const parent = GetMDIParent(); + + parent->RemoveMDIChild(this); // will be destroyed by DestroyChildren() but reset them before calling it // to avoid using dangling pointers if a callback comes in the meanwhile @@ -925,6 +927,12 @@ wxMDIChildFrame::~wxMDIChildFrame() MDIRemoveWindowMenu(NULL, m_hMenu); + // MDIRemoveWindowMenu() doesn't update the MDI menu when called with NULL + // window, so do it ourselves. + MDISetMenu(parent->GetClientWindow(), + (HMENU)parent->MSWGetActiveMenu(), + GetMDIWindowMenu(parent)); + MSWDestroyWindow(); } From 8fbf2bdc78c7598c48a26838b813488920d88ad7 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 5 Mar 2016 15:34:45 +0100 Subject: [PATCH 34/36] Revert "Manage VC[789] project files with upmake too" This reverts commit ebd33579fd0f2278d16e83ad6b420a3d496518e6 because upmake is not enough for the version updates, we still need to use bakefile for this. --- build/bakefiles/Bakefiles.bkgen | 6 ------ 1 file changed, 6 deletions(-) diff --git a/build/bakefiles/Bakefiles.bkgen b/build/bakefiles/Bakefiles.bkgen index e04de2965d..e715f0b1ee 100644 --- a/build/bakefiles/Bakefiles.bkgen +++ b/build/bakefiles/Bakefiles.bkgen @@ -30,12 +30,6 @@ autoconf,borland,dmars_smake,dmars,mingw,msvc,msvc6prj,msvs2003prj,msvs2005prj,msvs2008prj,watcom - - - msvs2003prj,msvs2005prj,msvs2008prj - - autoconf,msvc6prj,msvs2003prj,msvs2005prj,msvs2008prj From 72e68c9d9d473fe34e2d1b23a556b6b31a31e9c0 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sat, 5 Mar 2016 15:46:15 +0100 Subject: [PATCH 35/36] Update MSVS 200x projects after 3.1.1 version change Rebake them using bakefile to really take the version change into account. --- build/msw/wx_vc7_adv.vcproj | 26 +++++++-------- build/msw/wx_vc7_aui.vcproj | 20 ++++++------ build/msw/wx_vc7_base.vcproj | 20 ++++++------ build/msw/wx_vc7_core.vcproj | 32 +++++++++--------- build/msw/wx_vc7_gl.vcproj | 20 ++++++------ build/msw/wx_vc7_html.vcproj | 20 ++++++------ build/msw/wx_vc7_media.vcproj | 20 ++++++------ build/msw/wx_vc7_net.vcproj | 20 ++++++------ build/msw/wx_vc7_propgrid.vcproj | 20 ++++++------ build/msw/wx_vc7_qa.vcproj | 20 ++++++------ build/msw/wx_vc7_ribbon.vcproj | 20 ++++++------ build/msw/wx_vc7_richtext.vcproj | 20 ++++++------ build/msw/wx_vc7_stc.vcproj | 20 ++++++------ build/msw/wx_vc7_webview.vcproj | 20 ++++++------ build/msw/wx_vc7_xml.vcproj | 20 ++++++------ build/msw/wx_vc7_xrc.vcproj | 20 ++++++------ build/msw/wx_vc8_adv.vcproj | 48 +++++++++++++-------------- build/msw/wx_vc8_aui.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_base.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_core.vcproj | 56 ++++++++++++++++---------------- build/msw/wx_vc8_gl.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_html.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_media.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_net.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_propgrid.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_qa.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_ribbon.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_richtext.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_stc.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_webview.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_xml.vcproj | 40 +++++++++++------------ build/msw/wx_vc8_xrc.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_adv.vcproj | 48 +++++++++++++-------------- build/msw/wx_vc9_aui.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_base.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_core.vcproj | 56 ++++++++++++++++---------------- build/msw/wx_vc9_gl.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_html.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_media.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_net.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_propgrid.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_qa.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_ribbon.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_richtext.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_stc.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_webview.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_xml.vcproj | 40 +++++++++++------------ build/msw/wx_vc9_xrc.vcproj | 40 +++++++++++------------ 48 files changed, 833 insertions(+), 833 deletions(-) diff --git a/build/msw/wx_vc7_adv.vcproj b/build/msw/wx_vc7_adv.vcproj index 38a4a7347d..dd991db016 100644 --- a/build/msw/wx_vc7_adv.vcproj +++ b/build/msw/wx_vc7_adv.vcproj @@ -156,7 +156,7 @@ PrecompiledHeaderThrough="wx/wxprec.h" PrecompiledHeaderFile="vc_mswuddll\wxprec_advdll.pch" ObjectFile="vc_mswuddll\adv\" - ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw310ud_adv_vc_custom.pdb" + ProgramDataBaseFileName="..\..\lib\vc_dll\wxmsw311ud_adv_vc_custom.pdb" WarningLevel="4" SuppressStartupBanner="TRUE" Detect64BitPortabilityProblems="TRUE" @@ -166,14 +166,14 @@ @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> + + @@ -391,9 +394,6 @@ Name="Release|Win32" ExcludedFromBuild="TRUE"/> - - @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> + + @@ -1051,9 +1054,6 @@ - - + + @@ -1637,9 +1640,6 @@ - - @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -254,7 +254,7 @@ Name="VCPreLinkEventTool"/> @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ + + @@ -934,10 +938,6 @@ ExcludedFromBuild="true" /> - - @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ + + @@ -1814,10 +1818,6 @@ RelativePath="..\..\src\msw\window.cpp" > - - + + @@ -2685,10 +2689,6 @@ RelativePath="..\..\include\wx\msw\window.h" > - - @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -253,15 +253,15 @@ @@ -344,15 +344,15 @@ @@ -607,15 +607,15 @@ @@ -698,15 +698,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ + + @@ -930,10 +934,6 @@ ExcludedFromBuild="true" /> - - @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ + + @@ -1810,10 +1814,6 @@ RelativePath="..\..\src\msw\window.cpp" > - - + + @@ -2681,10 +2685,6 @@ RelativePath="..\..\include\wx\msw\window.h" > - - @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ @@ -251,15 +251,15 @@ @@ -342,15 +342,15 @@ @@ -603,15 +603,15 @@ @@ -694,15 +694,15 @@ Date: Sat, 5 Mar 2016 15:47:38 +0100 Subject: [PATCH 36/36] Don't update version in MSVS 200x projects from inc_release script This is now done by bakefile (again). --- misc/scripts/inc_release | 6 ------ 1 file changed, 6 deletions(-) diff --git a/misc/scripts/inc_release b/misc/scripts/inc_release index 76e067b957..e459ef1a67 100755 --- a/misc/scripts/inc_release +++ b/misc/scripts/inc_release @@ -105,12 +105,6 @@ run_sed samples/docview/Info.plist \ "/versionon/s/$ver_for_sed/$ver_string_new/" \ "//s/$ver_for_sed/$ver_string_new/" -msgn " processing MSVS 200x project files ... " -for f in build/msw/wx_vc[789]*.vcproj; do - sed -i -e 's/\(\(msw\|base\)$ver_major$ver_minor\)$ver_release/\1$ver_release_new/g' $f -done -msgc "done" - run_sed build/msw/wx_setup.props \ "//s/\($ver_major$ver_minor\)$ver_release/\1$ver_release_new/"