+ { kEventClassControl , kEventControlSetFocusPart } ,
+} ;
+
+static pascal OSStatus wxMacUnicodeTextControlControlEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
+{
+ OSStatus result = eventNotHandledErr ;
+ wxMacUnicodeTextControl* focus = (wxMacUnicodeTextControl*) data ;
+ wxMacCarbonEvent cEvent( event ) ;
+
+ switch ( GetEventKind( event ) )
+ {
+ case kEventControlSetFocusPart :
+ {
+ ControlPartCode controlPart = cEvent.GetParameter<ControlPartCode>(kEventParamControlPart , typeControlPartCode );
+ if ( controlPart == kControlFocusNoPart )
+ {
+ // about to loose focus -> store selection to field
+ focus->GetData<ControlEditTextSelectionRec>( 0, kControlEditTextSelectionTag, &focus->m_selection );
+ }
+ result = CallNextEventHandler(handler,event) ;
+ if ( controlPart != kControlFocusNoPart )
+ {
+ // about to gain focus -> set selection from field
+ focus->SetData<ControlEditTextSelectionRec>( 0, kControlEditTextSelectionTag, &focus->m_selection );
+ }
+ break;
+ }
+ default:
+ break ;
+ }
+
+ return result ;
+}
+
+static pascal OSStatus wxMacUnicodeTextControlEventHandler( EventHandlerCallRef handler , EventRef event , void *data )
+{
+ OSStatus result = eventNotHandledErr ;
+
+ switch ( GetEventClass( event ) )
+ {
+ case kEventClassControl :
+ result = wxMacUnicodeTextControlControlEventHandler( handler , event , data ) ;
+ break ;
+
+ default :
+ break ;
+ }
+ return result ;
+}
+
+DEFINE_ONE_SHOT_HANDLER_GETTER( wxMacUnicodeTextControlEventHandler )
+
+wxMacUnicodeTextControl::wxMacUnicodeTextControl( wxTextCtrl *wxPeer ) : wxMacTextControl( wxPeer )
+{
+}
+
+wxMacUnicodeTextControl::wxMacUnicodeTextControl( wxTextCtrl *wxPeer,
+ const wxString& str,
+ const wxPoint& pos,
+ const wxSize& size, long style )
+ : wxMacTextControl( wxPeer )
+{
+ Create( wxPeer, str, pos, size, style );
+}
+
+bool wxMacUnicodeTextControl::Create( wxTextCtrl *wxPeer,
+ const wxString& str,
+ const wxPoint& pos,
+ const wxSize& size, long style )
+{
+ m_font = wxPeer->GetFont() ;
+ m_windowStyle = style ;
+ m_selection.selStart = m_selection.selEnd = 0;
+ Rect bounds = wxMacGetBoundsForControl( wxPeer , pos , size ) ;