]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/carbon/private/mactext.h
fixing overrelease and out-of-bounds write, fixes #13725
[wxWidgets.git] / include / wx / osx / carbon / private / mactext.h
index 2ef0cbcaed7f19bed129af40cfd5b37c83aa42a5..f80834800930c807343594464ac377f3518e0be2 100644 (file)
@@ -1,10 +1,10 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        mactext.h
+// Name:        wx/osx/carbon/private/mactext.h
 // Purpose:     private wxMacTextControl base class
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     03/02/99
 // Purpose:     private wxMacTextControl base class
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     03/02/99
-// RCS-ID:      $Id
+// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 #ifndef _WX_MAC_PRIVATE_MACTEXT_H_
 #define _WX_MAC_PRIVATE_MACTEXT_H_
 
 #ifndef _WX_MAC_PRIVATE_MACTEXT_H_
 #define _WX_MAC_PRIVATE_MACTEXT_H_
 
-#include "wx/mac/private.h"
+#include "wx/osx/private.h"
 
 
-// common interface for all implementations
-class wxMacTextControl : public wxMacControl
-{
-public :
-    wxMacTextControl( wxTextCtrl *peer ) ;
-    virtual ~wxMacTextControl() ;
-
-    virtual wxString GetStringValue() const = 0 ;
-    virtual void SetStringValue( const wxString &val ) = 0 ;
-    virtual void SetSelection( long from, long to ) = 0 ;
-    virtual void GetSelection( long* from, long* to ) const = 0 ;
-    virtual void WriteText( const wxString& str ) = 0 ;
-
-    virtual void SetStyle( long start, long end, const wxTextAttr& style ) ;
-    virtual void Copy() ;
-    virtual void Cut() ;
-    virtual void Paste() ;
-    virtual bool CanPaste() const ;
-    virtual void SetEditable( bool editable ) ;
-    virtual wxTextPos GetLastPosition() const ;
-    virtual void Replace( long from, long to, const wxString &str ) ;
-    virtual void Remove( long from, long to ) ;
-
-
-    virtual bool HasOwnContextMenu() const
-        { return false ; }
-
-    virtual bool SetupCursor( const wxPoint& WXUNUSED(pt) )
-        { return false ; }
-
-    virtual void Clear() ;
-    virtual bool CanUndo() const;
-    virtual void Undo() ;
-    virtual bool CanRedo() const;
-    virtual void Redo() ;
-    virtual int GetNumberOfLines() const ;
-    virtual long XYToPosition(long x, long y) const;
-    virtual bool PositionToXY(long pos, long *x, long *y) const ;
-    virtual void ShowPosition(long WXUNUSED(pos)) ;
-    virtual int GetLineLength(long lineNo) const ;
-    virtual wxString GetLineText(long lineNo) const ;
-    virtual void CheckSpelling(bool WXUNUSED(check)) { }
-    virtual void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle );    
-} ;
+// implementation exposed, so that search control can pull it
 
 
-class wxMacUnicodeTextControl : public wxMacTextControl
+class wxMacUnicodeTextControl : public wxMacControl, public wxTextWidgetImpl
 {
 public :
     wxMacUnicodeTextControl( wxTextCtrl *wxPeer ) ;
 {
 public :
     wxMacUnicodeTextControl( wxTextCtrl *wxPeer ) ;
@@ -69,10 +26,8 @@ public :
                              const wxSize& size, long style ) ;
     virtual ~wxMacUnicodeTextControl();
 
                              const wxSize& size, long style ) ;
     virtual ~wxMacUnicodeTextControl();
 
-    virtual bool Create( wxTextCtrl *wxPeer,
-                         const wxString& str,
-                         const wxPoint& pos,
-                         const wxSize& size, long style ) ;
+    virtual bool CanFocus() const
+                  { return true; }
     virtual void VisibilityChanged(bool shown);
     virtual wxString GetStringValue() const ;
     virtual void SetStringValue( const wxString &str) ;
     virtual void VisibilityChanged(bool shown);
     virtual wxString GetStringValue() const ;
     virtual void SetStringValue( const wxString &str) ;
@@ -86,10 +41,11 @@ public :
     virtual void WriteText(const wxString& str) ;
 
 protected :
     virtual void WriteText(const wxString& str) ;
 
 protected :
-       virtual void CreateControl( wxTextCtrl* peer, const Rect* bounds, CFStringRef cfr );
+    void    InstallEventHandlers();
 
     // contains the tag for the content (is different for password and non-password controls)
     OSType m_valueTag ;
 
     // contains the tag for the content (is different for password and non-password controls)
     OSType m_valueTag ;
+    WXEVENTHANDLERREF    m_macTextCtrlEventHandler ;
 public :
     ControlEditTextSelectionRec m_selection ;
 };
 public :
     ControlEditTextSelectionRec m_selection ;
 };