wxTextCtrl::~wxTextCtrl()
{
#if wxMAC_USE_MLTE
- SetControlReference((ControlRef)m_macControl, 0) ;
+ SetControlReference(*m_peer, 0) ;
#if !wxMAC_USE_MLTE_HIVIEW
TXNDeleteObject((TXNObject)m_macTXN);
#endif
if ( scrollView )
{
HIViewAddSubview( scrollView , textView ) ;
- m_macControl = (WXWidget) scrollView ;
+ m_peer = scrollView ;
}
else
{
- m_macControl = (WXWidget) textView ;
+ m_peer = textView ;
}
#else
short featurSet;
| kControlWantsActivate | kControlHandlesTracking | kControlHasSpecialBackground
| kControlGetsFocusOnClick | kControlSupportsLiveFeedback;
/* create the control */
- verify_noerr( CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()) , &bounds, featurSet , (ControlRef*) &m_macControl) ) ;
+ m_peer = new wxMacControl() ;
+ verify_noerr( ::CreateUserPaneControl( MAC_WXHWND(GetParent()->MacGetTopLevelWindowRef()), &bounds, featurSet, *m_peer ) );
wxMacWindowClipper c(this) ;
STPTextPaneVars *varsp ;
- mUPOpenControl( varsp, (ControlRef) m_macControl, m_windowStyle );
+ mUPOpenControl( varsp, *m_peer, m_windowStyle );
m_macTXNvars = varsp ;
m_macTXN = varsp->fTXNRec ;
#endif
{
wxMacWindowClipper clipper( this ) ;
#if !wxMAC_USE_MLTE_HIVIEW
- TPUpdateVisibility( (ControlRef) m_macControl ) ;
+ TPUpdateVisibility( *m_peer ) ;
#endif
SetTXNData( (STPTextPaneVars *)m_macTXNvars , (TXNObject) m_macTXN , st , kTXNStartOffset, kTXNEndOffset ) ;
wxMacCFStringHolder cf(st , m_font.GetEncoding()) ;
CFStringRef cfr = cf ;
Boolean isPassword = ( m_windowStyle & wxTE_PASSWORD ) != 0 ;
- CreateEditUnicodeTextControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds , cfr , isPassword , NULL , (ControlRef*) &m_macControl ) ;
+ m_peer = new wxMacControl() ;
+ CreateEditUnicodeTextControl( MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds , cfr , isPassword , NULL , *m_peer ) ;
+
if ( !(m_windowStyle & wxTE_MULTILINE) )
{
Boolean singleline = true ;
- ::SetControlData( (ControlHandle) m_macControl, kControlEditTextPart , kControlEditTextSingleLineTag , sizeof( singleline ) , &singleline ) ;
+ ::SetControlData( *m_peer, kControlEditTextPart , kControlEditTextSingleLineTag , sizeof( singleline ) , &singleline ) ;
}
MacPostControlCreate(pos,size) ;
#if !wxMAC_USE_MLTE_HIVIEW
MLTESetObjectVisibility((STPTextPaneVars*) m_macTXNvars , MacIsReallyShown() , GetWindowStyle() ) ;
if ( !MacIsReallyShown() )
- InvalWindowRect( GetControlOwner( (ControlHandle) m_macControl ) , &((STPTextPaneVars *)m_macTXNvars)->fRBounds ) ;
+ InvalWindowRect( GetControlOwner( *m_peer ) , &((STPTextPaneVars *)m_macTXNvars)->fRBounds ) ;
#endif
#else
if ( !(m_windowStyle & wxTE_MULTILINE) && MacIsReallyShown() )
ResType datatag = GetWindowStyle() & wxTE_PASSWORD ?
kControlEditTextPasswordCFStringTag : kControlEditTextCFStringTag ;
- verify_noerr( GetControlData( (ControlRef) m_macControl , 0, kControlEditTextSelectionTag,
+ verify_noerr( GetControlData( *m_peer , 0, kControlEditTextSelectionTag,
sizeof(ControlEditTextSelectionRec), &sel, &actualSize ) );
- verify_noerr( GetControlData( (ControlRef) m_macControl , 0, datatag , sizeof(CFStringRef), &value, &actualSize ) );
+ verify_noerr( GetControlData( *m_peer , 0, datatag , sizeof(CFStringRef), &value, &actualSize ) );
- verify_noerr( SetControlData( (ControlRef) m_macControl , 0, datatag, sizeof(CFStringRef), &value ) );
- verify_noerr( SetControlData( (ControlRef) m_macControl , 0, kControlEditTextSelectionTag, sizeof(ControlEditTextSelectionRec), &sel ) );
+ verify_noerr( SetControlData( *m_peer , 0, datatag, sizeof(CFStringRef), &value ) );
+ verify_noerr( SetControlData( *m_peer , 0, kControlEditTextSelectionTag, sizeof(ControlEditTextSelectionRec), &sel ) );
CFRelease( value ) ;
}
CFStringRef value = NULL ;
Size actualSize = 0 ;
- verify_noerr( GetControlData( (ControlRef) m_macControl , 0, GetWindowStyle() & wxTE_PASSWORD ?
+ verify_noerr( GetControlData( *m_peer , 0, GetWindowStyle() & wxTE_PASSWORD ?
kControlEditTextPasswordCFStringTag : kControlEditTextCFStringTag,
sizeof(CFStringRef), &value, &actualSize ) );
if ( value )
#else
ControlEditTextSelectionRec sel ;
Size actualSize ;
- verify_noerr( GetControlData( (ControlRef) m_macControl , 0, kControlEditTextSelectionTag,
+ verify_noerr( GetControlData( *m_peer , 0, kControlEditTextSelectionTag,
sizeof(ControlEditTextSelectionRec), &sel, &actualSize ) );
if ( from ) *from = sel.selStart ;
if ( to ) *to = sel.selEnd ;
#else
wxMacCFStringHolder cf(st , m_font.GetEncoding() ) ;
CFStringRef value = cf ;
- verify_noerr( SetControlData( (ControlRef) m_macControl , 0, GetWindowStyle() & wxTE_PASSWORD ?
+ verify_noerr( SetControlData( *m_peer , 0, GetWindowStyle() & wxTE_PASSWORD ?
kControlEditTextPasswordCFStringTag : kControlEditTextCFStringTag,
sizeof(CFStringRef), &value ) );
#endif
ClearCurrentScrap();
TXNCopy((TXNObject)m_macTXN);
TXNConvertToPublicScrap();
+#else
+ m_peer->SendHICommand( kHICommandCopy ) ;
#endif
}
}
ClearCurrentScrap();
TXNCut((TXNObject)m_macTXN);
TXNConvertToPublicScrap();
+#else
+ m_peer->SendHICommand( kHICommandCut ) ;
#endif
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
event.SetString( GetValue() ) ;
TXNConvertFromPublicScrap();
TXNPaste((TXNObject)m_macTXN);
SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ;
+#else
+ m_peer->SendHICommand( kHICommandPaste ) ;
#endif
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
event.SetString( GetValue() ) ;
TXNSetTXNObjectControls( (TXNObject) m_macTXN , false , sizeof(tag) / sizeof (TXNControlTag) , tag , data ) ;
#else
Boolean value = !editable ;
- ::SetControlData( (ControlHandle) m_macControl, 0, kControlEditTextLockedTag , sizeof( value ) , &value ) ;
+ ::SetControlData( *m_peer, 0, kControlEditTextLockedTag , sizeof( value ) , &value ) ;
#endif
}
}
ControlEditTextSelectionRec sel ;
sel.selStart = from ;
sel.selEnd = to ;
- verify_noerr( SetControlData( (ControlRef) m_macControl , 0, kControlEditTextSelectionTag,
+ verify_noerr( SetControlData( *m_peer , 0, kControlEditTextSelectionTag,
sizeof(ControlEditTextSelectionRec), &sel ) );
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
wxMacCFStringHolder cf(st , m_font.GetEncoding() ) ;
CFStringRef value = cf ;
- SetControlData( (ControlRef) m_macControl , 0, kControlEditTextInsertCFStringRefTag,
+ SetControlData( *m_peer , 0, kControlEditTextInsertCFStringRefTag,
sizeof(CFStringRef), &value );
#else
wxString val = GetValue() ;
ItemCount lines = 0 ;
#if wxMAC_USE_MLTE
TXNGetLineCount((TXNObject)m_macTXN, &lines ) ;
+#else
+ wxString content = GetValue() ;
+ lines = 1;
+ for (size_t i = 0; i < content.Length() ; i++)
+ {
+ if (content[i] == '\r') lines++;
+ }
#endif
return lines ;
}
++xpos ;
}
}
+#else
+ // TODO change this if possible to reflect real lines
+ wxString content = GetValue() ;
+
+ // Find line first
+ int count = 0;
+ for (size_t i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Count chars in line then
+ count = 0;
+ for (size_t j = i; j < content.Length(); j++)
+ {
+ count++;
+ if (content[j] == '\n') return count;
+ }
+
+ return count;
+ }
+ if (content[i] == '\n') count++;
+ }
#endif
return 0;
}
wxString wxTextCtrl::GetLineText(long lineNo) const
{
- wxString line ;
#if wxMAC_USE_MLTE
+ wxString line ;
Point curpt ;
wxString content = GetValue() ;
}
}
}
-#endif
return line ;
+#else
+ // TODO change this if possible to reflect real lines
+ wxString content = GetValue() ;
+
+ // Find line first
+ int count = 0;
+ for (size_t i = 0; i < content.Length() ; i++)
+ {
+ if (count == lineNo)
+ {
+ // Add chars in line then
+ wxString tmp;
+
+ for (size_t j = i; j < content.Length(); j++)
+ {
+ if (content[j] == '\n')
+ return tmp;
+
+ tmp += content[j];
+ }
+
+ return tmp;
+ }
+ if (content[i] == '\n') count++;
+ }
+ return wxEmptyString ;
+#endif
}
/*
break;
case WXK_TAB:
- // always produce navigation event - even if we process TAB
- // ourselves the fact that we got here means that the user code
- // decided to skip processing of this TAB - probably to let it
- // do its default job.
+ if ( !(m_windowStyle & wxTE_PROCESS_TAB))
{
- wxNavigationKeyEvent eventNav;
- eventNav.SetDirection(!event.ShiftDown());
- eventNav.SetWindowChange(event.ControlDown());
- eventNav.SetEventObject(this);
-
- if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
- return;
-
- event.Skip() ;
+ int flags = 0;
+ if (!event.ShiftDown())
+ flags |= wxNavigationKeyEvent::IsForward ;
+ if (event.ControlDown())
+ flags |= wxNavigationKeyEvent::WinChange ;
+ Navigate(flags);
return;
}
+ else
+ {
+ // This is necessary (don't know why) or the tab will not
+ // be inserted.
+ WriteText(wxT("\t"));
+ }
+
break;
}
keychar = short(ev->message & charCodeMask);
keycode = short(ev->message & keyCodeMask) >> 8 ;
- ::HandleControlKey( (ControlRef) m_macControl , keycode , keychar , ev->modifiers ) ;
+ ::HandleControlKey( *m_peer , keycode , keychar , ev->modifiers ) ;
}
}
}