]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
VC++ compilation correction; doc file corrections
[wxWidgets.git] / src / msw / textctrl.cpp
index 65fe3eac812a85c4169ff3a67722793d00e98c2f..614be2e193084f1011ac9da7c906a6fbc3ed4dd0 100644 (file)
@@ -23,6 +23,9 @@
 #ifndef WX_PRECOMP
 #include "wx/textctrl.h"
 #include "wx/settings.h"
+#include "wx/brush.h"
+#include "wx/utils.h"
+#include "wx/log.h"
 #endif
 
 #if wxUSE_CLIPBOARD
 #endif
 
 #include <sys/types.h>
+#ifndef __MWERKS__
 #include <sys/stat.h>
+#else
+#include <stat.h>
+#endif
 #if defined(__BORLANDC__) && !defined(__WIN32__)
 #include <alloc.h>
 #else
@@ -200,9 +207,9 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
 
   SubclassWin(GetHWND());
 
-  if ( parent->GetFont() && parent->GetFont()->Ok() )
+  if ( parent->GetFont().Ok() && parent->GetFont().Ok() )
   {
-  SetFont(* parent->GetFont());
+    SetFont(parent->GetFont());
   }
   else
   {
@@ -328,7 +335,7 @@ void wxTextCtrl::SetSize(int x, int y, int width, int height, int sizeFlags)
   int cx; // button font dimensions
   int cy;
 
-  wxGetCharSize(GetHWND(), &cx, &cy,GetFont());
+  wxGetCharSize(GetHWND(), &cx, &cy, & GetFont());
 
   int control_width, control_height, control_x, control_y;
 
@@ -510,7 +517,7 @@ void wxTextCtrl::SetSelection(long from, long to)
 
 bool wxTextCtrl::LoadFile(const wxString& file)
 {
-  if (!FileExists(WXSTRINGCAST file))
+  if (!wxFileExists(WXSTRINGCAST file))
     return FALSE;
 
   m_fileName = file;
@@ -740,16 +747,20 @@ void wxTextCtrl::OnDropFiles(wxDropFilesEvent& event)
 // or when "endl" is output (Borland 4.5)
 //=========================================================================
 // Class declaration using multiple inheritance doesn't work properly for
-// Borland. See note in wb_text.h.
+// Borland. See note in textctrl.h.
 #ifndef NO_TEXT_WINDOW_STREAM
 int wxTextCtrl::overflow(int c)
 {
   // Make sure there is a holding area
+  // this is not needed in <iostream> usage as it automagically allocates
+  // it, but does someone want to emulate it for safety's sake?
+#if wxUSE_IOSTREAMH
   if ( allocate()==EOF )
   {
-    wxError("Streambuf allocation failed","Internal error");
+    wxLogError("Streambuf allocation failed");
     return EOF;
   }
+#endif
   
   // Verify that there are no characters in get area
   if ( gptr() && gptr() < egptr() )
@@ -766,7 +777,12 @@ int wxTextCtrl::overflow(int c)
   {
 /* This doesn't seem to be fatal so comment out error message */
 //    wxError("Put area not opened","Internal error");
-    setp( base(), base() );
+
+#if wxUSE_IOSTREAMH
+         setp( base(), base() );
+#else
+         setp( pbase(), pbase() );
+#endif
   }
 
   // Determine how many characters have been inserted but no consumed
@@ -928,6 +944,22 @@ WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND pWnd, WXUINT nCtlColor,
 
 void wxTextCtrl::OnChar(wxKeyEvent& event)
 {
+    // Fix by Marcel Rasche to allow Alt-Ctrl insertion of special characters
+  switch(event.KeyCode())
+  {
+  case '{':
+  case '}':
+  case '[':
+  case ']':
+  case '|':
+  case '~':
+  case '\\':
+   {
+    char c=(char)event.KeyCode();
+    *this << c;
+   }
+   break;
+  }
   if ( (event.KeyCode() == WXK_RETURN) && (m_windowStyle & wxPROCESS_ENTER))
   {
     wxCommandEvent event(wxEVT_COMMAND_TEXT_ENTER, m_windowId);
@@ -951,10 +983,13 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
 long wxTextCtrl::MSWGetDlgCode()
 {
   long lRc = DLGC_WANTCHARS | DLGC_WANTARROWS;
-  if ( m_windowStyle & wxPROCESS_ENTER )
+  if ( m_windowStyle & wxTE_PROCESS_ENTER )
     lRc |= DLGC_WANTMESSAGE;
   else if ( m_windowStyle & wxTE_MULTILINE )
     lRc |= DLGC_WANTMESSAGE;
+  // ??
+  if ( m_windowStyle & wxTE_PROCESS_TAB )
+    lRc |= DLGC_WANTTAB;
 
   return lRc;
 }
@@ -1025,7 +1060,7 @@ bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
                                                  : wxEVT_SET_FOCUS,
                            m_windowId);
         event.SetEventObject( this );
-        ProcessEvent(event);
+        GetEventHandler()->ProcessEvent(event);
       }
       break;
 
@@ -1074,7 +1109,7 @@ bool wxTextCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam)
   event.SetEventObject( this );
   event.SetEventType(eventType);
 
-  if ( !ProcessEvent(event) )
+  if ( !GetEventHandler()->ProcessEvent(event) )
     return FALSE;
 
     return TRUE;