Allow constructing wxGTK wxTextMeasure with NULL font.
The font is explicitly documented as being possibly NULL in the base class and wxMSW handles NULL font just fine, so also handle it in the GTK version. See #14706. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
18764039ab
commit
e0da9e871a
@ -49,7 +49,6 @@ protected:
|
||||
wxArrayInt& widths,
|
||||
double scaleX);
|
||||
|
||||
|
||||
// This class is only used for DC text measuring with GTK+ 2 as GTK+ 3 uses
|
||||
// Cairo and not Pango for this. However it's still used even with GTK+ 3
|
||||
// for window text measuring, so the context and the layout are still
|
||||
|
@ -23,7 +23,8 @@ class wxTextMeasureBase
|
||||
{
|
||||
public:
|
||||
// The first ctor argument must be non-NULL, i.e. each object of this class
|
||||
// is associated with either a valid wxDC or a valid wxWindow.
|
||||
// is associated with either a valid wxDC or a valid wxWindow. The font can
|
||||
// be NULL to use the current DC/window font or can be specified explicitly.
|
||||
wxTextMeasureBase(const wxDC *dc, const wxFont *theFont);
|
||||
wxTextMeasureBase(const wxWindow *win, const wxFont *theFont);
|
||||
|
||||
@ -123,6 +124,10 @@ protected:
|
||||
wxCoord *descent = NULL,
|
||||
wxCoord *externalLeading = NULL);
|
||||
|
||||
// Return a valid font: if one was given to us in the ctor, use this one,
|
||||
// otherwise use the current font of the associated wxDC or wxWindow.
|
||||
wxFont GetFont() const;
|
||||
|
||||
|
||||
// Exactly one of m_dc and m_win is non-NULL for any given object of this
|
||||
// class.
|
||||
|
@ -53,6 +53,13 @@ wxTextMeasureBase::wxTextMeasureBase(const wxWindow *win, const wxFont *theFont)
|
||||
m_useDCImpl = false;
|
||||
}
|
||||
|
||||
wxFont wxTextMeasureBase::GetFont() const
|
||||
{
|
||||
return m_font ? *m_font
|
||||
: m_win ? m_win->GetFont()
|
||||
: m_dc->GetFont();
|
||||
}
|
||||
|
||||
void wxTextMeasureBase::CallGetTextExtent(const wxString& string,
|
||||
wxCoord *width,
|
||||
wxCoord *height,
|
||||
|
@ -40,8 +40,6 @@
|
||||
|
||||
void wxTextMeasure::Init()
|
||||
{
|
||||
wxASSERT_MSG( m_font, wxT("wxTextMeasure needs a valid wxFont") );
|
||||
|
||||
m_context = NULL;
|
||||
m_layout = NULL;
|
||||
|
||||
@ -87,7 +85,7 @@ void wxTextMeasure::BeginMeasuring()
|
||||
if ( m_layout )
|
||||
{
|
||||
pango_layout_set_font_description(m_layout,
|
||||
m_font->GetNativeFontInfo()->description);
|
||||
GetFont().GetNativeFontInfo()->description);
|
||||
}
|
||||
}
|
||||
|
||||
@ -124,7 +122,7 @@ void wxTextMeasure::DoGetTextExtent(const wxString& string,
|
||||
}
|
||||
|
||||
// Set layout's text
|
||||
const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, *m_font);
|
||||
const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, GetFont());
|
||||
if ( !dataUTF8 )
|
||||
{
|
||||
// hardly ideal, but what else can we do if conversion failed?
|
||||
@ -167,7 +165,7 @@ bool wxTextMeasure::DoGetPartialTextExtents(const wxString& text,
|
||||
double WXUNUSED(scaleX))
|
||||
{
|
||||
// Set layout's text
|
||||
const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(text, *m_font);
|
||||
const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(text, GetFont());
|
||||
if ( !dataUTF8 )
|
||||
{
|
||||
// hardly ideal, but what else can we do if conversion failed?
|
||||
|
Loading…
Reference in New Issue
Block a user