Don't call wxTextMeasure::BeginMeasuring() when using non-native wxDC.

This is useless as we don't use wxTextMeasure in this case but just forward to
the wxDC itself, and also results in an assert in wxMSW wxTextMeasure
implementation.

Closes #14916.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2012-12-28 16:03:12 +00:00
parent c59fb496ea
commit 31a1584724

View File

@@ -75,6 +75,9 @@ public:
virtual void BeginMeasuring() { }
virtual void EndMeasuring() { }
// This is another method which is only used by MeasuringGuard.
bool IsUsingDCImpl() const { return m_useDCImpl; }
protected:
// RAII wrapper for the two methods above.
class MeasuringGuard
@@ -82,12 +85,16 @@ protected:
public:
MeasuringGuard(wxTextMeasureBase& tm) : m_tm(tm)
{
m_tm.BeginMeasuring();
// BeginMeasuring() should only be called if we have a native DC,
// so don't call it if we delegate to a DC of unknown type.
if ( !m_tm.IsUsingDCImpl() )
m_tm.BeginMeasuring();
}
~MeasuringGuard()
{
m_tm.EndMeasuring();
if ( !m_tm.IsUsingDCImpl() )
m_tm.EndMeasuring();
}
private: