- m_macControl = ::NewControl( parent->GetMacRootWindow() , &bounds , "\p" , true , 0 , 0 , 1,
- ( style & wxTE_PASSWORD ) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
- MacPostControlCreate() ;
-
- wxString value ;
-
- {
- TEHandle teH ;
- long size ;
-
- ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- (*teH)->lineHeight = -1 ;
- }
-
- if( wxApp::s_macDefaultEncodingIsPC )
- value = wxMacMakeMacStringFromPC( st ) ;
- else
- value = st ;
- ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
-
- return TRUE;
-}
-
-wxString wxTextCtrl::GetValue() const
-{
- Size actualsize;
- ::GetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , 32767 , wxBuffer , &actualsize) ;
- wxBuffer[actualsize] = 0 ;
- if( wxApp::s_macDefaultEncodingIsPC )
- return wxMacMakePCStringFromMac( wxBuffer ) ;
- else
- return wxString(wxBuffer);
-}
-
-void wxTextCtrl::GetSelection(long* from, long* to) const
-{
- ControlEditTextSelectionRec selection ;
- TEHandle teH ;
- long size ;
-
- ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
-
- *from = (**teH).selStart;
- *to = (**teH).selEnd;
-}
-
-void wxTextCtrl::SetValue(const wxString& st)
-{
- wxString value ;
-
- if( wxApp::s_macDefaultEncodingIsPC )
- value = wxMacMakeMacStringFromPC( st ) ;
- else
- value = st ;
- ::SetControlData( m_macControl, 0, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag , value.Length() , (char*) ((const char*)value) ) ;
- WindowRef window = GetMacRootWindow() ;
- if ( window )
- {
- wxWindow* win = wxFindWinFromMacWindow( window ) ;
- if ( win )
- {
- wxMacDrawingHelper help( win ) ;
- // the mac control manager always assumes to have the origin at 0,0
- SetOrigin( 0 , 0 ) ;
-
- bool hasTabBehind = false ;
- wxWindow* parent = GetParent() ;
- while ( parent )
- {
- if( parent->MacGetWindowData() )
- {
- ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ;
- break ;
- }
-
- if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) ))
- {
- if ( ((wxControl*)parent)->GetMacControl() )
- SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ;
- break ;
- }
-
- parent = parent->GetParent() ;
- }
-
- UMADrawControl( m_macControl ) ;
- ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ;
- }
- }
-}
-
-// Clipboard operations
-void wxTextCtrl::Copy()
-{
- if (CanCopy())
- {
- TEHandle teH ;
- long size ;
-
- ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECopy( teH ) ;
-#if TARGET_CARBON
- OSStatus err ;
- err = ClearCurrentScrap( );
-#else
- OSErr err ;
- err = ZeroScrap( );
-#endif
- TEToScrap() ;
- }
-}
-
-void wxTextCtrl::Cut()
-{
- if (CanCut())
- {
- TEHandle teH ;
- long size ;
-
- ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TECut( teH ) ;
-#if TARGET_CARBON
- OSStatus err ;
- err = ClearCurrentScrap( );
-#else
- OSErr err ;
- err = ZeroScrap( );
-#endif
- TEToScrap() ;
- // MacInvalidateControl() ;
- }
-}
-
-void wxTextCtrl::Paste()
-{
- if (CanPaste())
- {
- TEHandle teH ;
- long size ;
-
- ::GetControlData( m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &teH , &size ) ;
- TEFromScrap() ;
- TEPaste( teH ) ;
- WindowRef window = GetMacRootWindow() ;
- if ( window )
- {
- wxWindow* win = wxFindWinFromMacWindow( window ) ;
- if ( win )
- {
- wxMacDrawingHelper help( win ) ;
- // the mac control manager always assumes to have the origin at 0,0
- SetOrigin( 0 , 0 ) ;
-
- bool hasTabBehind = false ;
- wxWindow* parent = GetParent() ;
- while ( parent )
- {
- if( parent->MacGetWindowData() )
- {
- ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , kThemeBrushDialogBackgroundActive , false ) ;
- break ;
- }
-
- if( parent->IsKindOf( CLASSINFO( wxNotebook ) ) || parent->IsKindOf( CLASSINFO( wxTabCtrl ) ))
- {
- if ( ((wxControl*)parent)->GetMacControl() )
- SetUpControlBackground( ((wxControl*)parent)->GetMacControl() , -1 , true ) ;
- break ;
- }
-
- parent = parent->GetParent() ;
- }
-
- UMADrawControl( m_macControl ) ;
- ::SetThemeWindowBackground( win->MacGetWindowData()->m_macWindow , win->MacGetWindowData()->m_macWindowBackgroundTheme , false ) ;
- }
- }
- }
-}
-
-bool wxTextCtrl::CanCopy() const
-{
- // Can copy if there's a selection
- long from, to;
- GetSelection(& from, & to);
- return (from != to);
-}
-
-bool wxTextCtrl::CanCut() const
-{
- // Can cut if there's a selection
- long from, to;
- GetSelection(& from, & to);
- return (from != to);
-}
-
-bool wxTextCtrl::CanPaste() const
-{
- if (!IsEditable())
- return FALSE;
-
- long offset ;
-#if TARGET_CARBON
- OSStatus err = noErr;
- ScrapRef scrapRef;
-
- err = GetCurrentScrap( &scrapRef );
- if ( err != noTypeErr && err != memFullErr )
- {
- ScrapFlavorFlags flavorFlags;
- Size byteCount;
-
- if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr)
- {
- if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr)
- {
- return TRUE ;
- }
- }
- }
- return FALSE;
-
-#else
- if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 )
- {
- return TRUE ;
- }