added safe check for Pango version and use it to avoid underline hack in wxDC::DrawText() (modified patch 1702301)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -23,6 +23,16 @@
|
||||
#define GTK_CHECK_VERSION(a, b, c) 0
|
||||
#endif
|
||||
|
||||
// pango_version_check symbol is quite recent ATM (4/2007)... so we
|
||||
// use our own wrapper which implements a smart trick.
|
||||
// Use this function as you'd use pango_version_check:
|
||||
//
|
||||
// if (!wx_pango_version_check(1,18,0))
|
||||
// ... call to a function available only in pango >= 1.18 ...
|
||||
//
|
||||
// and use it only to test for pango versions >= 1.16.0
|
||||
extern const gchar *wx_pango_version_check(int major, int minor, int micro);
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB((s))
|
||||
#define wxGTK_CONV_ENC(s, enc) wxGTK_CONV((s))
|
||||
|
@@ -1472,11 +1472,11 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
|
||||
return;
|
||||
size_t datalen = strlen(data);
|
||||
|
||||
// TODO: as soon as Pango provides a function to check at runtime its
|
||||
// version, we can use it to disable the underline hack for
|
||||
// Pango >= 1.16 as the "underline of leading/trailing spaces"
|
||||
// has been fixed there
|
||||
bool needshack = underlined;
|
||||
// in Pango >= 1.16 the "underline of leading/trailing spaces" bug
|
||||
// has been fixed and thus the hack implemented below should never be used
|
||||
static bool pangoOk = !wx_pango_version_check(1, 16, 0);
|
||||
|
||||
bool needshack = underlined && !pangoOk;
|
||||
char *hackstring = NULL;
|
||||
|
||||
if (needshack)
|
||||
|
@@ -224,6 +224,28 @@ wxCharBuffer wxConvertFromGTK(const wxString& s, wxFontEncoding enc)
|
||||
|
||||
#endif // !wxUSE_UNICODE
|
||||
|
||||
// Returns false if version is certainly greater or equal than major.minor.micro
|
||||
// Returns true if version is lower than major.minor.micro OR it cannot be
|
||||
// determined and one should not rely on the availability of pango version
|
||||
// major.minor.micro, nor the non-availability
|
||||
const gchar *wx_pango_version_check (int major, int minor, int micro)
|
||||
{
|
||||
#ifdef PANGO_VERSION_MAJOR
|
||||
if (!gtk_check_version (2,11,0))
|
||||
{
|
||||
// GTK+ 2.11 requires Pango >= 1.15.3 and pango_version_check
|
||||
// was added in Pango 1.15.2 thus we know for sure the pango lib we're
|
||||
// using has the pango_version_check function:
|
||||
return pango_version_check (major, minor, micro);
|
||||
}
|
||||
|
||||
return "can't check";
|
||||
#else // !PANGO_VERSION_MAJOR
|
||||
return "too old headers";
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// subprocess routines
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user