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:
Vadim Zeitlin
2007-04-21 18:32:29 +00:00
parent 7e0bac9d7d
commit 5f4d182091
3 changed files with 37 additions and 5 deletions

View File

@@ -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))

View File

@@ -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)

View File

@@ -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
// ----------------------------------------------------------------------------