]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix wxStyledTextCtrl compilation in non-Unicode build.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 13 May 2012 21:37:18 +0000 (21:37 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 13 May 2012 21:37:18 +0000 (21:37 +0000)
The value returned by wx2stc() in non-Unicode build is a simple "char*" and we
can't call length() method on it, add a helper wx2stclen() function to get the
length from the original wxString itself in this case.

Closes #14013.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/stc/private.h
src/stc/stc.cpp

index 7951b3bc50ec9233c6761a0882cd885d5996b941..6a57cb9adb3a2e8a53dbe43d48b3f16090b577fe 100644 (file)
@@ -23,6 +23,15 @@ extern wxString stc2wx(const char* str);
 extern wxString stc2wx(const char* str, size_t len);
 extern const wxWX2MBbuf wx2stc(const wxString& str);
 
+// This function takes both wxString and wxCharBuffer because it uses either
+// one or the other of them depending on the build mode. In Unicode it uses the
+// length of the already converted buffer to avoid doing the conversion again
+// just to compute the length.
+inline size_t wx2stclen(const wxString& WXUNUSED(str), const wxCharBuffer& buf)
+{
+    return buf.length() - 1;
+}
+
 #else // not UNICODE
 
 inline wxString stc2wx(const char* str) {
@@ -35,6 +44,12 @@ inline const wxWX2MBbuf wx2stc(const wxString& str) {
     return str.mbc_str();
 }
 
+// As explained above, the buffer argument is only used in Unicode build.
+inline size_t wx2stclen(const wxString& str, const char* WXUNUSED(buf))
+{
+    return str.length();
+}
+
 #endif // UNICODE
 
 #endif // _WX_STC_PRIVATE_H_
index 02e366969a7455e56eee90878b93dc82ffdc6d85..e55e329d6f20a8758177c56ed1e2445787a0830d 100644 (file)
@@ -259,7 +259,7 @@ void wxStyledTextCtrl::SetHScrollBar(wxScrollBar* bar)  {
 // Add text to the document at current position.
 void wxStyledTextCtrl::AddText(const wxString& text) {
                     wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-                    SendMsg(2001, buf.length()-1, (sptr_t)(const char*)buf);
+                    SendMsg(2001, wx2stclen(text, buf), (sptr_t)(const char*)buf);
 }
 
 // Add array of cells to document.
@@ -1709,7 +1709,7 @@ int wxStyledTextCtrl::GetTargetEnd() const
 
      int wxStyledTextCtrl::ReplaceTarget(const wxString& text) {
          wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-         return SendMsg(2194, buf.length()-1, (sptr_t)(const char*)buf);
+         return SendMsg(2194, wx2stclen(text, buf), (sptr_t)(const char*)buf);
 }
 
 // Replace the target text with the argument text after \d processing.
@@ -1721,7 +1721,7 @@ int wxStyledTextCtrl::GetTargetEnd() const
 
      int wxStyledTextCtrl::ReplaceTargetRE(const wxString& text) {
          wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-         return SendMsg(2195, buf.length()-1, (sptr_t)(const char*)buf);
+         return SendMsg(2195, wx2stclen(text, buf), (sptr_t)(const char*)buf);
 }
 
 // Search for a counted string in the target and set the target to the found
@@ -1730,7 +1730,7 @@ int wxStyledTextCtrl::GetTargetEnd() const
 
      int wxStyledTextCtrl::SearchInTarget(const wxString& text) {
          wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-         return SendMsg(2197, buf.length()-1, (sptr_t)(const char*)buf);
+         return SendMsg(2197, wx2stclen(text, buf), (sptr_t)(const char*)buf);
 }
 
 // Set the search flags used by SearchInTarget.
@@ -2086,7 +2086,7 @@ bool wxStyledTextCtrl::GetUseVerticalScrollBar() const
 // Append a string to the end of the document without changing the selection.
 void wxStyledTextCtrl::AppendText(const wxString& text) {
                     wxWX2MBbuf buf = (wxWX2MBbuf)wx2stc(text);
-                    SendMsg(2282, buf.length()-1, (sptr_t)(const char*)buf);
+                    SendMsg(2282, wx2stclen(text, buf), (sptr_t)(const char*)buf);
 }
 
 // Is drawing done in two phases with backgrounds drawn before foregrounds?