From 15cdc3414964bf024625c67497b2cd5db8934908 Mon Sep 17 00:00:00 2001
From: =?utf8?q?W=C5=82odzimierz=20Skiba?= <abx@abx.art.pl>
Date: Wed, 13 Apr 2005 17:51:16 +0000
Subject: [PATCH] wxStreamToTextRedirector fixes, define
 wxHAS_TEXT_WINDOW_STREAM.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 include/wx/textctrl.h        | 40 +++++++++++++++++-------------------
 samples/widgets/textctrl.cpp | 11 +++++-----
 src/common/textcmn.cpp       |  4 ++--
 3 files changed, 26 insertions(+), 29 deletions(-)

diff --git a/include/wx/textctrl.h b/include/wx/textctrl.h
index 0693fca9a4..0f5ed15747 100644
--- a/include/wx/textctrl.h
+++ b/include/wx/textctrl.h
@@ -28,26 +28,24 @@
 #include "wx/dynarray.h"        // wxArrayInt
 #include "wx/gdicmn.h"          // wxPoint
 
-// 16-bit Borland 4.0 doesn't seem to allow multiple inheritance with wxWindow
-// and streambuf: it complains about deriving a huge class from the huge class
-// streambuf. !! Also, can't use streambuf if making or using a DLL :-(
+// Open Watcom 1.3 does allow only ios::rdbuf() while
+// we want something with streambuf parameter
+// Also, can't use streambuf if making or using a DLL :-(
 
-#if (defined(__BORLANDC__)) || defined(__MWERKS__) || \
+#if defined(__WATCOMC__) || \
+    defined(__MWERKS__) || \
     (defined(__WINDOWS__) && (defined(WXUSINGDLL) || defined(WXMAKINGDLL)))
-    #define NO_TEXT_WINDOW_STREAM
-#endif
-
-#ifndef NO_TEXT_WINDOW_STREAM
-    #if wxUSE_STD_IOSTREAM
-        #include "wx/ioswrap.h"    // derivation: we need the full decls.
-    #else // !wxUSE_STD_IOSTREAM
-        // can't compile this feature in if we don't use streams at all
-        #define NO_TEXT_WINDOW_STREAM
-    #endif // wxUSE_STD_IOSTREAM/!wxUSE_STD_IOSTREAM
+    #define wxHAS_TEXT_WINDOW_STREAM 0
+#elif wxUSE_STD_IOSTREAM
+    #include "wx/ioswrap.h"
+    #define wxHAS_TEXT_WINDOW_STREAM 1
+#else
+    #define wxHAS_TEXT_WINDOW_STREAM 0
 #endif
 
-#if defined(__WXMSW__) && defined(__MINGW32__)
-    #include "wx/msw/winundef.h"
+#if WXWIN_COMPATIBILITY_2_4 && !wxHAS_TEXT_WINDOW_STREAM
+    // define old flag if one could use it somewhere
+    #define NO_TEXT_WINDOW_STREAM
 #endif
 
 class WXDLLEXPORT wxTextCtrl;
@@ -267,7 +265,7 @@ private:
 // ----------------------------------------------------------------------------
 
 class WXDLLEXPORT wxTextCtrlBase : public wxControl
-#ifndef NO_TEXT_WINDOW_STREAM
+#if wxHAS_TEXT_WINDOW_STREAM
                                  , public wxSTD streambuf
 #endif
 
@@ -384,9 +382,9 @@ public:
     virtual void SetEditable(bool editable) = 0;
 
     // override streambuf method
-#ifndef NO_TEXT_WINDOW_STREAM
+#if wxHAS_TEXT_WINDOW_STREAM
     int overflow(int i);
-#endif // NO_TEXT_WINDOW_STREAM
+#endif // wxHAS_TEXT_WINDOW_STREAM
 
     // stream-like insertion operators: these are always available, whether we
     // were, or not, compiled with streambuf support
@@ -503,7 +501,7 @@ typedef void (wxEvtHandler::*wxTextUrlEventFunction)(wxTextUrlEvent&);
 #define EVT_TEXT_URL(id, fn) wx__DECLARE_TEXTURLEVT(URL, id, fn)
 #define EVT_TEXT_MAXLEN(id, fn) wx__DECLARE_TEXTEVT(MAXLEN, id, fn)
 
-#ifndef NO_TEXT_WINDOW_STREAM
+#if wxHAS_TEXT_WINDOW_STREAM
 
 // ----------------------------------------------------------------------------
 // wxStreamToTextRedirector: this class redirects all data sent to the given
@@ -545,7 +543,7 @@ private:
     wxSTD streambuf *m_sbufOld;
 };
 
-#endif // !NO_TEXT_WINDOW_STREAM
+#endif // wxHAS_TEXT_WINDOW_STREAM
 
 #endif // wxUSE_TEXTCTRL
 
diff --git a/samples/widgets/textctrl.cpp b/samples/widgets/textctrl.cpp
index 8377e4c079..e9282d977f 100644
--- a/samples/widgets/textctrl.cpp
+++ b/samples/widgets/textctrl.cpp
@@ -40,6 +40,7 @@
 #endif
 
 #include "wx/sizer.h"
+#include "wx/ioswrap.h"
 
 #include "widgets.h"
 
@@ -554,7 +555,7 @@ wxTextCtrl *TextWidgetsPage::CreateInfoText()
 
     wxTextCtrl *text = new wxTextCtrl(this, wxID_ANY, wxEmptyString,
                                       wxDefaultPosition,
-                                      wxSize(s_maxWidth, -1),
+                                      wxSize(s_maxWidth, wxDefaultCoord),
                                       wxTE_READONLY);
     return text;
 }
@@ -887,13 +888,11 @@ void TextWidgetsPage::OnCheckOrRadioBox(wxCommandEvent& WXUNUSED(event))
 
 void TextWidgetsPage::OnStreamRedirector(wxCommandEvent& WXUNUSED(event))
 {
-// Note, NO_TEXT_WINDOW_STREAM is private flag of wxWidgets header
-// it's simpler to check it rather than duplicate whole
-#ifdef NO_TEXT_WINDOW_STREAM
-    wxMessageBox(_T("This wxWidgets build does not support wxStreamToTextRedirector"));
-#else
+#if wxHAS_TEXT_WINDOW_STREAM
     wxStreamToTextRedirector redirect(m_text);
     wxString str( _T("Outputed to cout, appears in wxTextCtrl!") );
     cout << str << endl;
+#else
+    wxMessageBox(_T("This wxWidgets build does not support wxStreamToTextRedirector"));
 #endif
 }
diff --git a/src/common/textcmn.cpp b/src/common/textcmn.cpp
index 977de53640..a9f1f0b34d 100644
--- a/src/common/textcmn.cpp
+++ b/src/common/textcmn.cpp
@@ -299,7 +299,7 @@ wxTextCtrl& wxTextCtrlBase::operator<<(const wxChar c)
 // streambuf methods implementation
 // ----------------------------------------------------------------------------
 
-#ifndef NO_TEXT_WINDOW_STREAM
+#if wxHAS_TEXT_WINDOW_STREAM
 
 int wxTextCtrlBase::overflow(int c)
 {
@@ -309,7 +309,7 @@ int wxTextCtrlBase::overflow(int c)
     return 0;
 }
 
-#endif // NO_TEXT_WINDOW_STREAM
+#endif // wxHAS_TEXT_WINDOW_STREAM
 
 // ----------------------------------------------------------------------------
 // clipboard stuff
-- 
2.47.2