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
|
#define GTK_CHECK_VERSION(a, b, c) 0
|
||||||
#endif
|
#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
|
#if wxUSE_UNICODE
|
||||||
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB((s))
|
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB((s))
|
||||||
#define wxGTK_CONV_ENC(s, enc) wxGTK_CONV((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;
|
return;
|
||||||
size_t datalen = strlen(data);
|
size_t datalen = strlen(data);
|
||||||
|
|
||||||
// TODO: as soon as Pango provides a function to check at runtime its
|
// in Pango >= 1.16 the "underline of leading/trailing spaces" bug
|
||||||
// version, we can use it to disable the underline hack for
|
// has been fixed and thus the hack implemented below should never be used
|
||||||
// Pango >= 1.16 as the "underline of leading/trailing spaces"
|
static bool pangoOk = !wx_pango_version_check(1, 16, 0);
|
||||||
// has been fixed there
|
|
||||||
bool needshack = underlined;
|
bool needshack = underlined && !pangoOk;
|
||||||
char *hackstring = NULL;
|
char *hackstring = NULL;
|
||||||
|
|
||||||
if (needshack)
|
if (needshack)
|
||||||
|
@@ -224,6 +224,28 @@ wxCharBuffer wxConvertFromGTK(const wxString& s, wxFontEncoding enc)
|
|||||||
|
|
||||||
#endif // !wxUSE_UNICODE
|
#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
|
// subprocess routines
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user