]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't call wxTextMeasure::BeginMeasuring() when using non-native wxDC.
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 28 Dec 2012 16:03:12 +0000 (16:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 28 Dec 2012 16:03:12 +0000 (16:03 +0000)
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

include/wx/private/textmeasure.h

index 4788c992eda29c2ca3a55bb7356065538519396e..393946e7bf476453e280045f234321f409853c5c 100644 (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: