$(CCLEX) -c $(CPPFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c
 
 $(COMMDIR)/y_tab.c:     $(COMMDIR)/dosyacc.c
-       copy ..\common\dosyacc.c ..\common\y_tab.c
+       copy ..\\common\\dosyacc.c ..\\common\\y_tab.c
 
 $(COMMDIR)/lex_yy.c:    $(COMMDIR)/doslex.c
-       copy ..\common\doslex.c ..\common\lex_yy.c
+       copy ..\\common\doslex.c ..\\common\\lex_yy.c
 
 # Replace lex with flex if you run into compilation
 # problems with lex_yy.c. See also note about LEX_SCANNER
 #      mv y.tab.c $(COMMDIR)/y_tab.c
 
 clean:
-       rm -f *.o
-       rm -f *.bak
-       rm -f core
-       rm -f ..\common\y_tab.c
-       rm -f ..\common\lex_yy.c
-       rm -f ..\common\*.o
-       rm -f ..\common\*.bak
-       rm -f ..\generic\*.o
-       rm -f ..\generic\*.bak
-       rm -f ..\html\*.o
-       rm -f ..\png\*.o
-       rm -f ..\png\*.bak
-       rm -f ..\zlib\*.o
-       rm -f ..\zlib\*.bak
-       rm -f ..\jpeg\*.o
-       rm -f ..\..\lib\libwx.a
+       -$(RM) *.o
+       -$(RM) *.bak
+       -$(RM) core
+       -$(RM) ..\common\y_tab.c
+       -$(RM) ..\common\lex_yy.c
+       -$(RM) ..\common\*.o
+       -$(RM) ..\common\*.bak
+       -$(RM) ..\generic\*.o
+       -$(RM) ..\generic\*.bak
+       -$(RM) ..\html\*.o
+       -$(RM) ..\png\*.o
+       -$(RM) ..\png\*.bak
+       -$(RM) ..\zlib\*.o
+       -$(RM) ..\zlib\*.bak
+       -$(RM) ..\jpeg\*.o
+       -$(RM) ..\..\lib\libwx.a
 
 cleanall: clean
 
 Size'. In Dialog Editor project, set to 'Customize: Favor Small
 Code' (and no others). This will then work.
 
+Similarly, in VC++ 4, optimization can cause internal compiler
+errors, so edit src\makevc.env and change /O1 to /Od before
+trying build a release version of the library.
+
 Note (4): some crash problems can be due to inconsistent compiler
 options. If strange/weird/impossible things start to happen please
 check (dumping IDE project file as makefile and doing text comparison
 
     void OnSize( wxSizeEvent& );
     void OnMouse( wxMouseEvent& );
     void OnKeyDown( wxKeyEvent& );
-    void OnText( wxKeyEvent& );
+    void OnText( wxCommandEvent& );
     void OnGridScroll( wxScrollEvent& );
 
     void SelectCell( const wxGridCellCoords& coords );
 
 // Text updated in an edit control - either a text control or a
 // combo box
 //
-void wxGrid::OnText( wxKeyEvent& ev )
+void wxGrid::OnText( wxCommandEvent& ev )
 {
     if ( !m_inOnText )
     {
 
 # Set to the version you have
 MINGW32VERSION=2.95
 
+# Set to the appropriate remove command
+RM=rm -f 
+
 ########################## Compiler ##################################
 
 # C++ compiler
 
        $(RANLIB) $@
 
 clean:
-       rm -f $(OBJECTS) $(LIBTARGET) core *.rsc *.res
+       -$(RM) $(OBJECTS) $(LIBTARGET) core *.rsc *.res
 
        $(RESCOMP) $(RCINPUTSWITCH) $(TARGET).rc $(RCOUTPUTSWITCH) $(TARGET)_resources.o $(RESFLAGS)
 
 clean:
-       rm -f *.o
-       rm -f $(TARGET)_resources.o
-       rm -f $(TARGET).exe 
-       rm -f core 
-       rm -f *.rsc
-       rm -f *.res
+       -$(RM) *.o
+       -$(RM) $(TARGET)_resources.o
+       -$(RM) $(TARGET).exe 
+       -$(RM) core 
+       -$(RM) *.rsc
+       -$(RM) *.res
 
        $(CCLEX) -c $(CPPFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS -o $@ $(COMMDIR)/y_tab.c
 
 $(COMMDIR)/y_tab.c:     $(COMMDIR)/dosyacc.c
-       copy ..\common\dosyacc.c ..\common\y_tab.c
+       copy ..\\common\\dosyacc.c ..\\common\\y_tab.c
 
 $(COMMDIR)/lex_yy.c:    $(COMMDIR)/doslex.c
-       copy ..\common\doslex.c ..\common\lex_yy.c
+       copy ..\\common\\doslex.c ..\\common\\lex_yy.c
 
 # Replace lex with flex if you run into compilation
 # problems with lex_yy.c. See also note about LEX_SCANNER
 #      mv y.tab.c $(COMMDIR)/y_tab.c
 
 clean:
-       rm -f *.o
-       rm -f *.bak
-       rm -f core
-       rm -f ..\common\y_tab.c
-       rm -f ..\common\lex_yy.c
-       rm -f ..\common\*.o
-       rm -f ..\common\*.bak
-       rm -f ..\generic\*.o
-       rm -f ..\generic\*.bak
-       rm -f ..\html\*.o
-       rm -f ..\png\*.o
-       rm -f ..\png\*.bak
-       rm -f ..\zlib\*.o
-       rm -f ..\zlib\*.bak
-       rm -f ..\jpeg\*.o
-       rm -f ..\..\lib\libwx.a
+       -$(RM) *.o
+       -$(RM) *.bak
+       -$(RM) core
+       -$(RM) ..\common\y_tab.c
+       -$(RM) ..\common\lex_yy.c
+       -$(RM) ..\common\*.o
+       -$(RM) ..\common\*.bak
+       -$(RM) ..\generic\*.o
+       -$(RM) ..\generic\*.bak
+       -$(RM) ..\html\*.o
+       -$(RM) ..\png\*.o
+       -$(RM) ..\png\*.bak
+       -$(RM) ..\zlib\*.o
+       -$(RM) ..\zlib\*.bak
+       -$(RM) ..\jpeg\*.o
+       -$(RM) ..\..\lib\libwx.a
 
 cleanall: clean
 
 #ifndef __GNUWIN32__
 #if defined(__BORLANDC__) || defined(__WATCOMC__)
     LPNM_UPDOWN lpnmud = (LPNM_UPDOWN)lParam;
-#elif defined(__VISUALC__) && (__VISUALC__ == 1010)
+#elif defined(__VISUALC__) && (__VISUALC__ >= 1000) && (__VISUALC__ < 1020)
     LPNM_UPDOWN lpnmud = (LPNM_UPDOWN)lParam;
 #else
     LPNMUPDOWN lpnmud = (LPNMUPDOWN)lParam;
 
 #if !defined( __GNUWIN32__ ) && !defined( __BORLANDC__ ) && !defined(wxUSE_NORLANDER_HEADERS)
     // we emulate the multiple selection tree controls by using checkboxes: set
     // up the image list we need for this if we do have multiple selections
-#if !defined(__VISUALC__) || (__VISUALC__ != 1010)
+#if !defined(__VISUALC__) || (__VISUALC__ > 1010)
     if ( m_windowStyle & wxTR_MULTIPLE )
         wstyle |= TVS_CHECKBOXES;
 #endif