Add micro version to toolkit version functions

Support micro versions in wxAppTraits::GetToolkitVersion and
wxPlatformInfo functions related to toolkit versions.
This commit is contained in:
Dimitri Schoolwerth
2015-06-24 08:54:34 +04:00
committed by Tobias Taschner
parent ea439c278b
commit 1e78bf639e
15 changed files with 98 additions and 32 deletions

View File

@@ -130,7 +130,9 @@ public:
// runtime (not compile-time) version. // runtime (not compile-time) version.
// returns wxPORT_BASE for console applications and one of the remaining // returns wxPORT_BASE for console applications and one of the remaining
// wxPORT_* values for GUI applications. // 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 // return true if the port is using wxUniversal for the GUI, false if not
virtual bool IsUsingUniversalWidgets() const = 0; virtual bool IsUsingUniversalWidgets() const = 0;
@@ -209,13 +211,16 @@ public:
virtual bool HasStderr() wxOVERRIDE; virtual bool HasStderr() wxOVERRIDE;
// the GetToolkitVersion for console application is always the same // 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) // no toolkits (wxBase is for console applications without GUI support)
// NB: zero means "no toolkit", -1 means "not initialized yet" // NB: zero means "no toolkit", -1 means "not initialized yet"
// so we must use zero here! // so we must use zero here!
if (verMaj) *verMaj = 0; if (verMaj) *verMaj = 0;
if (verMin) *verMin = 0; if (verMin) *verMin = 0;
if (verMicro) *verMicro = 0;
return wxPORT_BASE; return wxPORT_BASE;
} }

View File

@@ -49,7 +49,9 @@ public:
virtual bool DoMessageFromThreadWait(); virtual bool DoMessageFromThreadWait();
virtual WXDWORD WaitForThread(WXHANDLE hThread, int flags); virtual WXDWORD WaitForThread(WXHANDLE hThread, int flags);
#endif // wxUSE_THREADS #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 CanUseStderr();
virtual bool WriteToStderr(const wxString& text); virtual bool WriteToStderr(const wxString& text);
@@ -77,7 +79,9 @@ public:
virtual WXDWORD WaitForThread(WXHANDLE hThread, int WXUNUSED(flags)) virtual WXDWORD WaitForThread(WXHANDLE hThread, int WXUNUSED(flags))
{ return DoSimpleWaitForThread(hThread); } { return DoSimpleWaitForThread(hThread); }
#endif // wxUSE_THREADS #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 CanUseStderr() { return false; }
virtual bool WriteToStderr(const wxString& WXUNUSED(text)) { return false; } virtual bool WriteToStderr(const wxString& WXUNUSED(text)) { return false; }

View File

@@ -198,15 +198,17 @@ public:
{ return m_tkVersionMajor; } { return m_tkVersionMajor; }
int GetToolkitMinorVersion() const int GetToolkitMinorVersion() const
{ return m_tkVersionMinor; } { 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(), return DoCheckVersion(GetToolkitMajorVersion(),
GetToolkitMinorVersion(), GetToolkitMinorVersion(),
0, GetToolkitMicroVersion(),
major, major,
minor, minor,
0); micro);
} }
bool IsUsingUniversalWidgets() const bool IsUsingUniversalWidgets() const
@@ -260,8 +262,12 @@ public:
m_osVersionMicro = micro; m_osVersionMicro = micro;
} }
void SetToolkitVersion(int major, int minor) void SetToolkitVersion(int major, int minor, int micro = 0)
{ m_tkVersionMajor=major; m_tkVersionMinor=minor; } {
m_tkVersionMajor = major;
m_tkVersionMinor = minor;
m_tkVersionMicro = micro;
}
void SetOperatingSystemId(wxOperatingSystemId n) void SetOperatingSystemId(wxOperatingSystemId n)
{ m_os = n; } { m_os = n; }
@@ -290,6 +296,7 @@ public:
m_os != wxOS_UNKNOWN && m_os != wxOS_UNKNOWN &&
!m_osDesc.IsEmpty() && !m_osDesc.IsEmpty() &&
m_tkVersionMajor != -1 && m_tkVersionMinor != -1 && m_tkVersionMajor != -1 && m_tkVersionMinor != -1 &&
m_tkVersionMicro != -1 &&
m_port != wxPORT_UNKNOWN && m_port != wxPORT_UNKNOWN &&
m_arch != wxARCH_INVALID && m_arch != wxARCH_INVALID &&
m_endian != wxENDIAN_INVALID; m_endian != wxENDIAN_INVALID;
@@ -340,7 +347,7 @@ protected:
// Version of the underlying toolkit // Version of the underlying toolkit
// (-1 means not initialized yet; zero means no 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 // name of the wxWidgets port
wxPortId m_port; wxPortId m_port;

View File

@@ -61,7 +61,9 @@ public:
#if defined(__WXMAC__) && wxUSE_STDPATHS #if defined(__WXMAC__) && wxUSE_STDPATHS
virtual wxStandardPaths& GetStandardPaths() wxOVERRIDE; virtual wxStandardPaths& GetStandardPaths() wxOVERRIDE;
#endif #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__ #ifdef __WXGTK20__
virtual wxString GetDesktopEnvironment() const wxOVERRIDE; virtual wxString GetDesktopEnvironment() const wxOVERRIDE;

View File

@@ -100,8 +100,8 @@ public:
/** /**
Returns the wxWidgets port ID used by the running program and eventually 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 fills the given pointers with the values of the major, minor, and micro
of the native toolkit currently used. digits of the native toolkit currently used.
The version numbers returned are thus detected at run-time and not compile-time The version numbers returned are thus detected at run-time and not compile-time
(except when this is not possible e.g. wxMotif). (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 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. and put in given pointers the versions of the GTK library in use.
See wxPlatformInfo for more details. 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. Returns @true if @c fprintf(stderr) goes somewhere, @false otherwise.

View File

@@ -185,13 +185,12 @@ public:
bool CheckOSVersion(int major, int minor, int micro = 0) const; 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(), @see GetToolkitMajorVersion(), GetToolkitMinorVersion(),
GetToolkitMinorVersion(), CheckOSVersion() 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. Returns @true if this instance is fully initialized with valid values.
@@ -417,6 +416,21 @@ public:
*/ */
int GetToolkitMinorVersion() const; 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. 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. Sets the operating system description associated with this wxPlatformInfo instance.

View File

@@ -139,6 +139,7 @@ wxPlatformInfo::wxPlatformInfo(wxPortId pid, int tkMajor, int tkMinor,
m_tkVersionMajor = tkMajor; m_tkVersionMajor = tkMajor;
m_tkVersionMinor = tkMinor; m_tkVersionMinor = tkMinor;
m_tkVersionMicro = -1;
m_port = pid; m_port = pid;
m_usingUniversal = usingUniversal; m_usingUniversal = usingUniversal;
@@ -155,6 +156,7 @@ bool wxPlatformInfo::operator==(const wxPlatformInfo &t) const
{ {
return m_tkVersionMajor == t.m_tkVersionMajor && return m_tkVersionMajor == t.m_tkVersionMajor &&
m_tkVersionMinor == t.m_tkVersionMinor && m_tkVersionMinor == t.m_tkVersionMinor &&
m_tkVersionMicro == t.m_tkVersionMicro &&
m_osVersionMajor == t.m_osVersionMajor && m_osVersionMajor == t.m_osVersionMajor &&
m_osVersionMinor == t.m_osVersionMinor && m_osVersionMinor == t.m_osVersionMinor &&
m_osVersionMicro == t.m_osVersionMicro && m_osVersionMicro == t.m_osVersionMicro &&
@@ -181,11 +183,12 @@ void wxPlatformInfo::InitForCurrentPlatform()
m_port = wxPORT_UNKNOWN; m_port = wxPORT_UNKNOWN;
m_usingUniversal = false; m_usingUniversal = false;
m_tkVersionMajor = m_tkVersionMajor =
m_tkVersionMinor = 0; m_tkVersionMinor = m_tkVersionMicro = 0;
} }
else else
{ {
m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor); m_port = traits->GetToolkitVersion(&m_tkVersionMajor, &m_tkVersionMinor,
&m_tkVersionMicro);
m_usingUniversal = traits->IsUsingUniversalWidgets(); m_usingUniversal = traits->IsUsingUniversalWidgets();
m_desktopEnv = traits->GetDesktopEnvironment(); m_desktopEnv = traits->GetDesktopEnvironment();
} }

View File

@@ -30,10 +30,13 @@
// toolkit info // 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 ( verMaj ) *verMaj = DIRECTFB_MAJOR_VERSION;
if ( verMin ) *verMaj = DIRECTFB_MINOR_VERSION; if ( verMin ) *verMaj = DIRECTFB_MINOR_VERSION;
if ( verMicro ) *verMicro = DIRECTFB_MICRO_VERSION;
return wxPORT_DFB; return wxPORT_DFB;
} }

View File

@@ -183,12 +183,16 @@ const gchar *wx_pango_version_check (int major, int minor, int micro)
// wxPlatformInfo-related // wxPlatformInfo-related
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj,
int *verMin,
int *verMicro) const
{ {
if ( verMaj ) if ( verMaj )
*verMaj = gtk_major_version; *verMaj = gtk_major_version;
if ( verMin ) if ( verMin )
*verMin = gtk_minor_version; *verMin = gtk_minor_version;
if ( verMicro )
*verMicro = gtk_micro_version;
return wxPORT_GTK; return wxPORT_GTK;
} }

View File

@@ -136,12 +136,16 @@ wxTimerImpl* wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
// wxPlatformInfo-related // wxPlatformInfo-related
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj,
int *verMin,
int *verMicro) const
{ {
if ( verMaj ) if ( verMaj )
*verMaj = gtk_major_version; *verMaj = gtk_major_version;
if ( verMin ) if ( verMin )
*verMin = gtk_minor_version; *verMin = gtk_minor_version;
if ( verMicro )
*verMicro = gtk_micro_version;
return wxPORT_GTK; return wxPORT_GTK;
} }

View File

@@ -176,13 +176,17 @@ void wxBell()
XBell (wxGlobalDisplay(), 0); 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 // XmVERSION and XmREVISION are defined in Xm/Xm.h
if ( verMaj ) if ( verMaj )
*verMaj = XmVERSION; *verMaj = XmVERSION;
if ( verMin ) if ( verMin )
*verMin = XmREVISION; *verMin = XmREVISION;
if ( verMicro )
*verMicro = 0;
return wxPORT_MOTIF; return wxPORT_MOTIF;
} }

View File

@@ -238,11 +238,13 @@ WXDWORD wxGUIAppTraits::WaitForThread(WXHANDLE hThread, int flags)
} }
#endif // wxUSE_THREADS #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 // on Windows, the toolkit version is the same of the OS version
// as Windows integrates the OS kernel with the GUI toolkit. // as Windows integrates the OS kernel with the GUI toolkit.
wxGetOsVersion(majVer, minVer); wxGetOsVersion(majVer, minVer, microVer);
return wxPORT_MSW; return wxPORT_MSW;
} }

View File

@@ -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 // We suppose that toolkit version is the same as OS version under Mac
wxGetOsVersion(verMaj, verMin); wxGetOsVersion(verMaj, verMin, verMicro);
return wxPORT_OSX; return wxPORT_OSX;
} }

View File

@@ -39,12 +39,16 @@ wxTimerImpl *wxGUIAppTraits::CreateTimerImpl(wxTimer *timer)
// #endif // #endif
wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer, int *minVer) const wxPortId wxGUIAppTraits::GetToolkitVersion(int *majVer,
int *minVer,
int *microVer) const
{ {
if ( majVer ) if ( majVer )
*majVer = QT_VERSION >> 16; *majVer = QT_VERSION >> 16;
if ( minVer ) if ( minVer )
*minVer = (QT_VERSION >> 8) & 0xFF; *minVer = (QT_VERSION >> 8) & 0xFF;
if ( microVer )
*microVer = QT_VERSION & 0xFF;
return wxPORT_QT; return wxPORT_QT;
} }

View File

@@ -100,7 +100,9 @@ void wxBell()
XBell ((Display*) wxGetDisplay(), 0); 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 // get X protocol version
Display *display = wxGlobalDisplay(); Display *display = wxGlobalDisplay();
@@ -110,6 +112,8 @@ wxPortId wxGUIAppTraits::GetToolkitVersion(int *verMaj, int *verMin) const
*verMaj = ProtocolVersion (display); *verMaj = ProtocolVersion (display);
if ( verMin ) if ( verMin )
*verMin = ProtocolRevision (display); *verMin = ProtocolRevision (display);
if ( verMicro )
*verMicro = 0;
} }
return wxPORT_X11; return wxPORT_X11;