Fixed wxMac's wxTextCtrl::SetSelection so that (-1,-1) will select the

entire value like other ports do.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2003-04-11 22:38:56 +00:00
parent 4365da58c8
commit ef4a634b1b
2 changed files with 184 additions and 174 deletions

View File

@@ -85,7 +85,7 @@ extern wxControl *wxFindControlFromMacControl(ControlHandle inControl ) ;
These routines are useful for cases where you would like to use an These routines are useful for cases where you would like to use an
existing user pane control in, say, a dialog window as a scrolling existing user pane control in, say, a dialog window as a scrolling
text edit field.*/ text edit field.*/
/* mUPOpenControl initializes a user pane control so it will be drawn /* mUPOpenControl initializes a user pane control so it will be drawn
and will behave as a scrolling text edit field inside of a window. and will behave as a scrolling text edit field inside of a window.
This routine performs all of the initialization steps necessary, This routine performs all of the initialization steps necessary,
@@ -130,8 +130,8 @@ typedef struct {
/* flags */ /* flags */
Boolean fInFocus; /* true while the focus rect is drawn around the control */ Boolean fInFocus; /* true while the focus rect is drawn around the control */
Boolean fIsActive; /* true while the control is drawn in the active state */ Boolean fIsActive; /* true while the control is drawn in the active state */
Boolean fTEActive; /* reflects the activation state of the text edit record */ Boolean fTEActive; /* reflects the activation state of the text edit record */
Boolean fInDialogWindow; /* true if displayed in a dialog window */ Boolean fInDialogWindow; /* true if displayed in a dialog window */
/* calculated locations */ /* calculated locations */
Rect fRTextArea; /* area where the text is drawn */ Rect fRTextArea; /* area where the text is drawn */
Rect fRFocusOutline; /* rectangle used to draw the focus box */ Rect fRFocusOutline; /* rectangle used to draw the focus box */
@@ -164,9 +164,9 @@ static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) {
STPTextPaneVars *varsp; STPTextPaneVars *varsp;
varsp = *tpvars; varsp = *tpvars;
if (varsp->fTEActive != setActive) { if (varsp->fTEActive != setActive) {
varsp->fTEActive = setActive; varsp->fTEActive = setActive;
TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive); TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive);
if (varsp->fInFocus) if (varsp->fInFocus)
@@ -195,13 +195,13 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart
char state; char state;
Rect bounds; Rect bounds;
/* set up our globals */ /* set up our globals */
tpvars = (STPTextPaneVars **) GetControlReference(theControl); tpvars = (STPTextPaneVars **) GetControlReference(theControl);
if (tpvars != NULL) { if (tpvars != NULL) {
state = HGetState((Handle) tpvars); state = HGetState((Handle) tpvars);
HLock((Handle) tpvars); HLock((Handle) tpvars);
varsp = *tpvars; varsp = *tpvars;
/* save the drawing state */ /* save the drawing state */
SetPort((**tpvars).fDrawingEnvironment); SetPort((**tpvars).fDrawingEnvironment);
/* verify our boundary */ /* verify our boundary */
@@ -212,14 +212,14 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart
// scrollbar is on the border, we add one // scrollbar is on the border, we add one
Rect oldbounds = varsp->fRFocusOutline ; Rect oldbounds = varsp->fRFocusOutline ;
InsetRect( &oldbounds , -1 , -1 ) ; InsetRect( &oldbounds , -1 , -1 ) ;
InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ; InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ;
SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) ,
bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2));
RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline);
TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left, TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left,
varsp->fRTextArea.bottom, varsp->fRTextArea.right, varsp->fTXNFrame); varsp->fRTextArea.bottom, varsp->fRTextArea.right, varsp->fTXNFrame);
} }
@@ -291,12 +291,12 @@ static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point
} }
/* find the location for the click */ /* find the location for the click */
switch (TPPaneHitTestProc(theControl, startPt)) { switch (TPPaneHitTestProc(theControl, startPt)) {
/* handle clicks in the text part */ /* handle clicks in the text part */
case kmUPTextPart: case kmUPTextPart:
{ SetPort((**tpvars).fDrawingEnvironment); { SetPort((**tpvars).fDrawingEnvironment);
wxMacWindowClipper clipper( wxFindControlFromMacControl(theControl ) ) ; wxMacWindowClipper clipper( wxFindControlFromMacControl(theControl ) ) ;
#if !TARGET_CARBON #if !TARGET_CARBON
TXNClick( varsp->fTXNRec, (const EventRecord*) wxTheApp->MacGetCurrentEvent()); TXNClick( varsp->fTXNRec, (const EventRecord*) wxTheApp->MacGetCurrentEvent());
#else #else
EventRecord rec ; EventRecord rec ;
@@ -305,9 +305,9 @@ static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point
#endif #endif
} }
break; break;
} }
HSetState((Handle) tpvars, state); HSetState((Handle) tpvars, state);
} }
return partCodeResult; return partCodeResult;
@@ -345,8 +345,8 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) {
RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); RectRgn((theRgn = NewRgn()), &varsp->fRTextArea);
TXNAdjustCursor(varsp->fTXNRec, theRgn); TXNAdjustCursor(varsp->fTXNRec, theRgn);
DisposeRgn(theRgn); DisposeRgn(theRgn);
} }
else else
{ {
// SetThemeCursor(kThemeArrowCursor); // SetThemeCursor(kThemeArrowCursor);
} }
@@ -358,7 +358,7 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) {
// SetThemeCursor(kThemeArrowCursor); // SetThemeCursor(kThemeArrowCursor);
} }
} }
HSetState((Handle) tpvars, state); HSetState((Handle) tpvars, state);
} }
} }
@@ -487,7 +487,7 @@ static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlF
should refer to a user pane control that you have either created should refer to a user pane control that you have either created
yourself or extracted from a dialog's control heirarchy using yourself or extracted from a dialog's control heirarchy using
the GetDialogItemAsControl routine. */ the GetDialogItemAsControl routine. */
OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
{ {
Rect bounds; Rect bounds;
WindowRef theWindow; WindowRef theWindow;
@@ -495,7 +495,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
OSStatus err = noErr ; OSStatus err = noErr ;
RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF}; RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
TXNBackground tback; TXNBackground tback;
/* set up our globals */ /* set up our globals */
if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc); if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc); if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
@@ -504,7 +504,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc); if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc); if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc); if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
/* allocate our private storage */ /* allocate our private storage */
tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars)); tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
SetControlReference(theControl, (long) tpvars); SetControlReference(theControl, (long) tpvars);
@@ -533,7 +533,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
GetControlBounds(theControl, &bounds); GetControlBounds(theControl, &bounds);
SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) ,
bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2));
/* calculate the background region for the text. In this case, it's kindof /* calculate the background region for the text. In this case, it's kindof
and irregular region because we're setting the scroll bar a little ways inside and irregular region because we're setting the scroll bar a little ways inside
@@ -544,12 +544,12 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
SetPort(varsp->fDrawingEnvironment); SetPort(varsp->fDrawingEnvironment);
/* create the new edit field */ /* create the new edit field */
TXNFrameOptions frameOptions = TXNFrameOptions frameOptions =
kTXNDontDrawCaretWhenInactiveMask ; kTXNDontDrawCaretWhenInactiveMask ;
if ( ! ( wxStyle & wxTE_NOHIDESEL ) ) if ( ! ( wxStyle & wxTE_NOHIDESEL ) )
frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ;
if ( wxStyle & wxTE_MULTILINE ) if ( wxStyle & wxTE_MULTILINE )
{ {
if ( ! ( wxStyle & wxTE_DONTWRAP ) ) if ( ! ( wxStyle & wxTE_DONTWRAP ) )
@@ -559,27 +559,27 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ;
frameOptions |= kTXNWantHScrollBarMask ; frameOptions |= kTXNWantHScrollBarMask ;
} }
if ( !(wxStyle & wxTE_NO_VSCROLL ) ) if ( !(wxStyle & wxTE_NO_VSCROLL ) )
frameOptions |= kTXNWantVScrollBarMask ; frameOptions |= kTXNWantVScrollBarMask ;
} }
else else
frameOptions |= kTXNSingleLineOnlyMask ; frameOptions |= kTXNSingleLineOnlyMask ;
if ( wxStyle & wxTE_READONLY ) if ( wxStyle & wxTE_READONLY )
frameOptions |= kTXNReadOnlyMask ; frameOptions |= kTXNReadOnlyMask ;
TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea,
frameOptions , frameOptions ,
kTXNTextEditStyleFrameType, kTXNTextEditStyleFrameType,
kTXNTextensionFile, kTXNTextensionFile,
kTXNSystemDefaultEncoding, kTXNSystemDefaultEncoding,
&varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars); &varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars);
Str255 fontName ; Str255 fontName ;
SInt16 fontSize ; SInt16 fontSize ;
Style fontStyle ; Style fontStyle ;
GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ;
TXNTypeAttributes typeAttr[] = TXNTypeAttributes typeAttr[] =
@@ -597,7 +597,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
tback.bgType = kTXNBackgroundTypeRGB; tback.bgType = kTXNBackgroundTypeRGB;
tback.bg.color = rgbWhite; tback.bg.color = rgbWhite;
TXNSetBackground( varsp->fTXNRec, &tback); TXNSetBackground( varsp->fTXNRec, &tback);
/* unlock our storage */ /* unlock our storage */
HUnlock((Handle) tpvars); HUnlock((Handle) tpvars);
/* perform final activations and setup for our text field. Here, /* perform final activations and setup for our text field. Here,
@@ -668,11 +668,11 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
m_macTXNvars = NULL ; m_macTXNvars = NULL ;
m_macUsesTXN = false ; m_macUsesTXN = false ;
m_editable = true ; m_editable = true ;
m_macUsesTXN = ! (style & wxTE_PASSWORD ) ; m_macUsesTXN = ! (style & wxTE_PASSWORD ) ;
m_macUsesTXN &= (TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress) ; m_macUsesTXN &= (TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress) ;
// base initialization // base initialization
if ( !CreateBase(parent, id, pos, size, style, validator, name) ) if ( !CreateBase(parent, id, pos, size, style, validator, name) )
return FALSE; return FALSE;
@@ -698,7 +698,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
mySize.y = 13 ; mySize.y = 13 ;
if ( m_windowStyle & wxTE_MULTILINE ) if ( m_windowStyle & wxTE_MULTILINE )
mySize.y *= 5 ; mySize.y *= 5 ;
mySize.y += 2 * m_macVerticalBorder ; mySize.y += 2 * m_macVerticalBorder ;
} }
*/ */
@@ -719,7 +719,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1,
(style & wxTE_PASSWORD) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ; (style & wxTE_PASSWORD) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
long size ; long size ;
::GetControlData((ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &((TEHandle) m_macTE) , &size ) ; ::GetControlData((ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &((TEHandle) m_macTE) , &size ) ;
@@ -764,7 +764,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNSetSelection( (TXNObject) m_macTXN, 0, 0);
TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart);
} }
return TRUE; return TRUE;
} }
@@ -777,15 +777,15 @@ wxString wxTextCtrl::GetValue() const
{ {
err = ::GetControlDataSize((ControlHandle) m_macControl, 0, err = ::GetControlDataSize((ControlHandle) m_macControl, 0,
( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ; ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ;
if ( err ) if ( err )
return wxEmptyString ; return wxEmptyString ;
if ( actualSize > 0 ) if ( actualSize > 0 )
{ {
wxCharBuffer buf(actualSize) ; wxCharBuffer buf(actualSize) ;
::GetControlData( (ControlHandle) m_macControl, 0, ::GetControlData( (ControlHandle) m_macControl, 0,
( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag,
actualSize , buf.data() , &actualSize ) ; actualSize , buf.data() , &actualSize ) ;
result = wxMacMakeStringFromCString( buf ) ; result = wxMacMakeStringFromCString( buf ) ;
} }
@@ -833,7 +833,7 @@ wxString wxTextCtrl::GetValue() const
} }
#endif #endif
} }
return result ; return result ;
} }
@@ -878,7 +878,7 @@ void wxTextCtrl::SetValue(const wxString& st)
MacRedrawControl() ; MacRedrawControl() ;
} }
void wxTextCtrl::SetMaxLength(unsigned long len) void wxTextCtrl::SetMaxLength(unsigned long len)
{ {
m_maxLength = len ; m_maxLength = len ;
} }
@@ -907,7 +907,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
fontStyle |= bold ; fontStyle |= bold ;
if ( font.GetStyle() == wxITALIC ) if ( font.GetStyle() == wxITALIC )
fontStyle |= italic ; fontStyle |= italic ;
typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ;
typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ;
typeAttr[attrCounter].data.dataPtr = (void*) fontName ; typeAttr[attrCounter].data.dataPtr = (void*) fontName ;
@@ -918,7 +918,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ;
typeAttr[attrCounter+2].data.dataValue = fontStyle ; typeAttr[attrCounter+2].data.dataValue = fontStyle ;
attrCounter += 3 ; attrCounter += 3 ;
} }
if ( style.HasTextColour() ) if ( style.HasTextColour() )
{ {
@@ -928,7 +928,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ;
attrCounter += 1 ; attrCounter += 1 ;
} }
if ( attrCounter > 0 ) if ( attrCounter > 0 )
{ {
OSStatus status = TXNSetTypeAttributes ((TXNObject)m_macTXN, attrCounter , typeAttr, OSStatus status = TXNSetTypeAttributes ((TXNObject)m_macTXN, attrCounter , typeAttr,
@@ -963,7 +963,7 @@ void wxTextCtrl::Copy()
else else
{ {
ClearCurrentScrap(); ClearCurrentScrap();
TXNCopy((TXNObject)m_macTXN); TXNCopy((TXNObject)m_macTXN);
TXNConvertToPublicScrap(); TXNConvertToPublicScrap();
} }
} }
@@ -983,7 +983,7 @@ void wxTextCtrl::Cut()
else else
{ {
ClearCurrentScrap(); ClearCurrentScrap();
TXNCut((TXNObject)m_macTXN); TXNCut((TXNObject)m_macTXN);
TXNConvertToPublicScrap(); TXNConvertToPublicScrap();
} }
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1006,7 +1006,7 @@ void wxTextCtrl::Paste()
else else
{ {
TXNConvertFromPublicScrap(); TXNConvertFromPublicScrap();
TXNPaste((TXNObject)m_macTXN); TXNPaste((TXNObject)m_macTXN);
SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ; SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ;
} }
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1044,13 +1044,13 @@ bool wxTextCtrl::CanPaste() const
#if TARGET_CARBON #if TARGET_CARBON
OSStatus err = noErr; OSStatus err = noErr;
ScrapRef scrapRef; ScrapRef scrapRef;
err = GetCurrentScrap( &scrapRef ); err = GetCurrentScrap( &scrapRef );
if ( err != noTypeErr && err != memFullErr ) if ( err != noTypeErr && err != memFullErr )
{ {
ScrapFlavorFlags flavorFlags; ScrapFlavorFlags flavorFlags;
Size byteCount; Size byteCount;
if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr) if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr)
{ {
if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr) if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr)
@@ -1060,7 +1060,7 @@ bool wxTextCtrl::CanPaste() const
} }
} }
return FALSE; return FALSE;
#else #else
long offset ; long offset ;
if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 ) if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 )
@@ -1140,7 +1140,7 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
@@ -1173,7 +1173,7 @@ void wxTextCtrl::Remove(long from, long to)
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
@@ -1184,8 +1184,8 @@ void wxTextCtrl::Remove(long from, long to)
bool formerEditable = IsEditable() ; bool formerEditable = IsEditable() ;
if ( !formerEditable ) if ( !formerEditable )
SetEditable(true) ; SetEditable(true) ;
TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ;
TXNClear( ((TXNObject) m_macTXN) ) ; TXNClear( ((TXNObject) m_macTXN) ) ;
if ( !formerEditable ) if ( !formerEditable )
SetEditable( formerEditable ) ; SetEditable( formerEditable ) ;
} }
@@ -1194,13 +1194,18 @@ void wxTextCtrl::Remove(long from, long to)
void wxTextCtrl::SetSelection(long from, long to) void wxTextCtrl::SetSelection(long from, long to)
{ {
if ( from == -1 )
from = 0;
if ( to == -1 )
to = GetLastPosition();
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
TESetSelect( selection.selStart , selection.selEnd , ((TEHandle) m_macTE) ) ; TESetSelect( selection.selStart , selection.selEnd , ((TEHandle) m_macTE) ) ;
::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
} }
@@ -1229,7 +1234,7 @@ bool wxTextCtrl::LoadFile(const wxString& file)
} }
void wxTextCtrl::WriteText(const wxString& st) void wxTextCtrl::WriteText(const wxString& st)
{ {
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
wxCharBuffer text = wxMacStringToCString( st ) ; wxCharBuffer text = wxMacStringToCString( st ) ;
@@ -1277,7 +1282,7 @@ void wxTextCtrl::Clear()
else else
{ {
TXNSetSelection( (TXNObject)m_macTXN , kTXNStartOffset , kTXNEndOffset ) ; TXNSetSelection( (TXNObject)m_macTXN , kTXNStartOffset , kTXNEndOffset ) ;
TXNClear((TXNObject)m_macTXN); TXNClear((TXNObject)m_macTXN);
} }
Refresh() ; Refresh() ;
} }
@@ -1301,7 +1306,7 @@ bool wxTextCtrl::AcceptsFocus() const
wxSize wxTextCtrl::DoGetBestSize() const wxSize wxTextCtrl::DoGetBestSize() const
{ {
int wText = 100 ; int wText = 100 ;
int hText; int hText;
if ( m_macUsesTXN ) if ( m_macUsesTXN )
{ {
@@ -1369,13 +1374,13 @@ int wxTextCtrl::GetNumberOfLines() const
{ {
// TODO change this if possible to reflect real lines // TODO change this if possible to reflect real lines
wxString content = GetValue() ; wxString content = GetValue() ;
int count = 1; int count = 1;
for (size_t i = 0; i < content.Length() ; i++) for (size_t i = 0; i < content.Length() ; i++)
{ {
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
} }
return count; return count;
} }
@@ -1399,7 +1404,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
{ {
// TODO change this if possible to reflect real lines // TODO change this if possible to reflect real lines
wxString content = GetValue() ; wxString content = GetValue() ;
// Find line first // Find line first
int count = 0; int count = 0;
for (size_t i = 0; i < content.Length() ; i++) for (size_t i = 0; i < content.Length() ; i++)
@@ -1413,7 +1418,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
count++; count++;
if (content[j] == '\r') return count; if (content[j] == '\r') return count;
} }
return count; return count;
} }
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
@@ -1434,15 +1439,15 @@ wxString wxTextCtrl::GetLineText(long lineNo) const
{ {
// Add chars in line then // Add chars in line then
wxString tmp; wxString tmp;
for (size_t j = i; j < content.Length(); j++) for (size_t j = i; j < content.Length(); j++)
{ {
if (content[j] == '\r') if (content[j] == '\r')
return tmp; return tmp;
tmp += content[j]; tmp += content[j];
} }
return tmp; return tmp;
} }
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
@@ -1453,7 +1458,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const
/* /*
* Text item * Text item
*/ */
void wxTextCtrl::Command(wxCommandEvent & event) void wxTextCtrl::Command(wxCommandEvent & event)
{ {
SetValue (event.GetString()); SetValue (event.GetString());
@@ -1473,16 +1478,16 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
{ {
int key = event.GetKeyCode() ; int key = event.GetKeyCode() ;
bool eat_key = false ; bool eat_key = false ;
if ( key == 'c' && event.MetaDown() ) if ( key == 'c' && event.MetaDown() )
{ {
if ( CanCopy() ) if ( CanCopy() )
Copy() ; Copy() ;
return ; return ;
} }
if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB && if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB &&
!( key == WXK_RETURN && ( (m_windowStyle & wxPROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) !( key == WXK_RETURN && ( (m_windowStyle & wxPROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) )
/* && key != WXK_PRIOR && key != WXK_NEXT && key != WXK_HOME && key != WXK_END */ /* && key != WXK_PRIOR && key != WXK_NEXT && key != WXK_HOME && key != WXK_END */
) )
{ {
@@ -1511,7 +1516,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
event.SetString( GetValue() ); event.SetString( GetValue() );
if ( GetEventHandler()->ProcessEvent(event) ) if ( GetEventHandler()->ProcessEvent(event) )
return; return;
} }
if ( !(m_windowStyle & wxTE_MULTILINE) ) if ( !(m_windowStyle & wxTE_MULTILINE) )
{ {
wxWindow *parent = GetParent(); wxWindow *parent = GetParent();
@@ -1530,7 +1535,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
return ; return ;
} }
} }
// this will make wxWindows eat the ENTER key so that // this will make wxWindows eat the ENTER key so that
// we actually prevent line wrapping in a single line // we actually prevent line wrapping in a single line
// text control // text control
@@ -1558,7 +1563,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
break; break;
} }
if (!eat_key) if (!eat_key)
{ {
// default handling // default handling
@@ -1566,7 +1571,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
if ( ( key >= 0x20 && key < WXK_START ) || if ( ( key >= 0x20 && key < WXK_START ) ||
key == WXK_RETURN || key == WXK_RETURN ||
key == WXK_DELETE || key == WXK_DELETE ||
key == WXK_BACK) key == WXK_BACK)
{ {
wxCommandEvent event1(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event1(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1576,37 +1581,37 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
} }
void wxTextCtrl::MacSuperShown( bool show ) void wxTextCtrl::MacSuperShown( bool show )
{ {
bool former = m_macControlIsShown ; bool former = m_macControlIsShown ;
wxControl::MacSuperShown( show ) ; wxControl::MacSuperShown( show ) ;
if ( (former != m_macControlIsShown) && m_macUsesTXN ) if ( (former != m_macControlIsShown) && m_macUsesTXN )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
else else
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
} }
} }
bool wxTextCtrl::Show(bool show) bool wxTextCtrl::Show(bool show)
{ {
bool former = m_macControlIsShown ; bool former = m_macControlIsShown ;
bool retval = wxControl::Show( show ) ; bool retval = wxControl::Show( show ) ;
if ( former != m_macControlIsShown && m_macUsesTXN ) if ( former != m_macControlIsShown && m_macUsesTXN )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
else else
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
} }
return retval ; return retval ;
} }

View File

@@ -85,7 +85,7 @@ extern wxControl *wxFindControlFromMacControl(ControlHandle inControl ) ;
These routines are useful for cases where you would like to use an These routines are useful for cases where you would like to use an
existing user pane control in, say, a dialog window as a scrolling existing user pane control in, say, a dialog window as a scrolling
text edit field.*/ text edit field.*/
/* mUPOpenControl initializes a user pane control so it will be drawn /* mUPOpenControl initializes a user pane control so it will be drawn
and will behave as a scrolling text edit field inside of a window. and will behave as a scrolling text edit field inside of a window.
This routine performs all of the initialization steps necessary, This routine performs all of the initialization steps necessary,
@@ -130,8 +130,8 @@ typedef struct {
/* flags */ /* flags */
Boolean fInFocus; /* true while the focus rect is drawn around the control */ Boolean fInFocus; /* true while the focus rect is drawn around the control */
Boolean fIsActive; /* true while the control is drawn in the active state */ Boolean fIsActive; /* true while the control is drawn in the active state */
Boolean fTEActive; /* reflects the activation state of the text edit record */ Boolean fTEActive; /* reflects the activation state of the text edit record */
Boolean fInDialogWindow; /* true if displayed in a dialog window */ Boolean fInDialogWindow; /* true if displayed in a dialog window */
/* calculated locations */ /* calculated locations */
Rect fRTextArea; /* area where the text is drawn */ Rect fRTextArea; /* area where the text is drawn */
Rect fRFocusOutline; /* rectangle used to draw the focus box */ Rect fRFocusOutline; /* rectangle used to draw the focus box */
@@ -164,9 +164,9 @@ static void TPActivatePaneText(STPTextPaneVars **tpvars, Boolean setActive) {
STPTextPaneVars *varsp; STPTextPaneVars *varsp;
varsp = *tpvars; varsp = *tpvars;
if (varsp->fTEActive != setActive) { if (varsp->fTEActive != setActive) {
varsp->fTEActive = setActive; varsp->fTEActive = setActive;
TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive); TXNActivate(varsp->fTXNRec, varsp->fTXNFrame, varsp->fTEActive);
if (varsp->fInFocus) if (varsp->fInFocus)
@@ -195,13 +195,13 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart
char state; char state;
Rect bounds; Rect bounds;
/* set up our globals */ /* set up our globals */
tpvars = (STPTextPaneVars **) GetControlReference(theControl); tpvars = (STPTextPaneVars **) GetControlReference(theControl);
if (tpvars != NULL) { if (tpvars != NULL) {
state = HGetState((Handle) tpvars); state = HGetState((Handle) tpvars);
HLock((Handle) tpvars); HLock((Handle) tpvars);
varsp = *tpvars; varsp = *tpvars;
/* save the drawing state */ /* save the drawing state */
SetPort((**tpvars).fDrawingEnvironment); SetPort((**tpvars).fDrawingEnvironment);
/* verify our boundary */ /* verify our boundary */
@@ -212,14 +212,14 @@ static pascal void TPPaneDrawProc(ControlRef theControl, ControlPartCode thePart
// scrollbar is on the border, we add one // scrollbar is on the border, we add one
Rect oldbounds = varsp->fRFocusOutline ; Rect oldbounds = varsp->fRFocusOutline ;
InsetRect( &oldbounds , -1 , -1 ) ; InsetRect( &oldbounds , -1 , -1 ) ;
InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ; InvalWindowRect( GetControlOwner( theControl ) , &oldbounds ) ;
SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) ,
bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2));
RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline); RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline);
TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left, TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left,
varsp->fRTextArea.bottom, varsp->fRTextArea.right, varsp->fTXNFrame); varsp->fRTextArea.bottom, varsp->fRTextArea.right, varsp->fTXNFrame);
} }
@@ -291,12 +291,12 @@ static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point
} }
/* find the location for the click */ /* find the location for the click */
switch (TPPaneHitTestProc(theControl, startPt)) { switch (TPPaneHitTestProc(theControl, startPt)) {
/* handle clicks in the text part */ /* handle clicks in the text part */
case kmUPTextPart: case kmUPTextPart:
{ SetPort((**tpvars).fDrawingEnvironment); { SetPort((**tpvars).fDrawingEnvironment);
wxMacWindowClipper clipper( wxFindControlFromMacControl(theControl ) ) ; wxMacWindowClipper clipper( wxFindControlFromMacControl(theControl ) ) ;
#if !TARGET_CARBON #if !TARGET_CARBON
TXNClick( varsp->fTXNRec, (const EventRecord*) wxTheApp->MacGetCurrentEvent()); TXNClick( varsp->fTXNRec, (const EventRecord*) wxTheApp->MacGetCurrentEvent());
#else #else
EventRecord rec ; EventRecord rec ;
@@ -305,9 +305,9 @@ static pascal ControlPartCode TPPaneTrackingProc(ControlHandle theControl, Point
#endif #endif
} }
break; break;
} }
HSetState((Handle) tpvars, state); HSetState((Handle) tpvars, state);
} }
return partCodeResult; return partCodeResult;
@@ -345,8 +345,8 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) {
RectRgn((theRgn = NewRgn()), &varsp->fRTextArea); RectRgn((theRgn = NewRgn()), &varsp->fRTextArea);
TXNAdjustCursor(varsp->fTXNRec, theRgn); TXNAdjustCursor(varsp->fTXNRec, theRgn);
DisposeRgn(theRgn); DisposeRgn(theRgn);
} }
else else
{ {
// SetThemeCursor(kThemeArrowCursor); // SetThemeCursor(kThemeArrowCursor);
} }
@@ -358,7 +358,7 @@ static pascal void TPPaneIdleProc(ControlHandle theControl) {
// SetThemeCursor(kThemeArrowCursor); // SetThemeCursor(kThemeArrowCursor);
} }
} }
HSetState((Handle) tpvars, state); HSetState((Handle) tpvars, state);
} }
} }
@@ -487,7 +487,7 @@ static pascal ControlPartCode TPPaneFocusProc(ControlHandle theControl, ControlF
should refer to a user pane control that you have either created should refer to a user pane control that you have either created
yourself or extracted from a dialog's control heirarchy using yourself or extracted from a dialog's control heirarchy using
the GetDialogItemAsControl routine. */ the GetDialogItemAsControl routine. */
OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle ) OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
{ {
Rect bounds; Rect bounds;
WindowRef theWindow; WindowRef theWindow;
@@ -495,7 +495,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
OSStatus err = noErr ; OSStatus err = noErr ;
RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF}; RGBColor rgbWhite = {0xFFFF, 0xFFFF, 0xFFFF};
TXNBackground tback; TXNBackground tback;
/* set up our globals */ /* set up our globals */
if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc); if (gTPDrawProc == NULL) gTPDrawProc = NewControlUserPaneDrawUPP(TPPaneDrawProc);
if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc); if (gTPHitProc == NULL) gTPHitProc = NewControlUserPaneHitTestUPP(TPPaneHitTestProc);
@@ -504,7 +504,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc); if (gTPKeyProc == NULL) gTPKeyProc = NewControlUserPaneKeyDownUPP(TPPaneKeyDownProc);
if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc); if (gTPActivateProc == NULL) gTPActivateProc = NewControlUserPaneActivateUPP(TPPaneActivateProc);
if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc); if (gTPFocusProc == NULL) gTPFocusProc = NewControlUserPaneFocusUPP(TPPaneFocusProc);
/* allocate our private storage */ /* allocate our private storage */
tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars)); tpvars = (STPTextPaneVars **) NewHandleClear(sizeof(STPTextPaneVars));
SetControlReference(theControl, (long) tpvars); SetControlReference(theControl, (long) tpvars);
@@ -533,7 +533,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
GetControlBounds(theControl, &bounds); GetControlBounds(theControl, &bounds);
SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRFocusOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom); SetRect(&varsp->fRTextOutline, bounds.left, bounds.top, bounds.right, bounds.bottom);
SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) , SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) ,
bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2)); bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2));
/* calculate the background region for the text. In this case, it's kindof /* calculate the background region for the text. In this case, it's kindof
and irregular region because we're setting the scroll bar a little ways inside and irregular region because we're setting the scroll bar a little ways inside
@@ -544,12 +544,12 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
SetPort(varsp->fDrawingEnvironment); SetPort(varsp->fDrawingEnvironment);
/* create the new edit field */ /* create the new edit field */
TXNFrameOptions frameOptions = TXNFrameOptions frameOptions =
kTXNDontDrawCaretWhenInactiveMask ; kTXNDontDrawCaretWhenInactiveMask ;
if ( ! ( wxStyle & wxTE_NOHIDESEL ) ) if ( ! ( wxStyle & wxTE_NOHIDESEL ) )
frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ; frameOptions |= kTXNDontDrawSelectionWhenInactiveMask ;
if ( wxStyle & wxTE_MULTILINE ) if ( wxStyle & wxTE_MULTILINE )
{ {
if ( ! ( wxStyle & wxTE_DONTWRAP ) ) if ( ! ( wxStyle & wxTE_DONTWRAP ) )
@@ -559,27 +559,27 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ; frameOptions |= kTXNAlwaysWrapAtViewEdgeMask ;
frameOptions |= kTXNWantHScrollBarMask ; frameOptions |= kTXNWantHScrollBarMask ;
} }
if ( !(wxStyle & wxTE_NO_VSCROLL ) ) if ( !(wxStyle & wxTE_NO_VSCROLL ) )
frameOptions |= kTXNWantVScrollBarMask ; frameOptions |= kTXNWantVScrollBarMask ;
} }
else else
frameOptions |= kTXNSingleLineOnlyMask ; frameOptions |= kTXNSingleLineOnlyMask ;
if ( wxStyle & wxTE_READONLY ) if ( wxStyle & wxTE_READONLY )
frameOptions |= kTXNReadOnlyMask ; frameOptions |= kTXNReadOnlyMask ;
TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea, TXNNewObject(NULL, varsp->fOwner, &varsp->fRTextArea,
frameOptions , frameOptions ,
kTXNTextEditStyleFrameType, kTXNTextEditStyleFrameType,
kTXNTextensionFile, kTXNTextensionFile,
kTXNSystemDefaultEncoding, kTXNSystemDefaultEncoding,
&varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars); &varsp->fTXNRec, &varsp->fTXNFrame, (TXNObjectRefcon) tpvars);
Str255 fontName ; Str255 fontName ;
SInt16 fontSize ; SInt16 fontSize ;
Style fontStyle ; Style fontStyle ;
GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ;
TXNTypeAttributes typeAttr[] = TXNTypeAttributes typeAttr[] =
@@ -597,7 +597,7 @@ OSStatus mUPOpenControl(ControlHandle theControl, long wxStyle )
tback.bgType = kTXNBackgroundTypeRGB; tback.bgType = kTXNBackgroundTypeRGB;
tback.bg.color = rgbWhite; tback.bg.color = rgbWhite;
TXNSetBackground( varsp->fTXNRec, &tback); TXNSetBackground( varsp->fTXNRec, &tback);
/* unlock our storage */ /* unlock our storage */
HUnlock((Handle) tpvars); HUnlock((Handle) tpvars);
/* perform final activations and setup for our text field. Here, /* perform final activations and setup for our text field. Here,
@@ -668,11 +668,11 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
m_macTXNvars = NULL ; m_macTXNvars = NULL ;
m_macUsesTXN = false ; m_macUsesTXN = false ;
m_editable = true ; m_editable = true ;
m_macUsesTXN = ! (style & wxTE_PASSWORD ) ; m_macUsesTXN = ! (style & wxTE_PASSWORD ) ;
m_macUsesTXN &= (TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress) ; m_macUsesTXN &= (TXNInitTextension != (void*) kUnresolvedCFragSymbolAddress) ;
// base initialization // base initialization
if ( !CreateBase(parent, id, pos, size, style, validator, name) ) if ( !CreateBase(parent, id, pos, size, style, validator, name) )
return FALSE; return FALSE;
@@ -698,7 +698,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
mySize.y = 13 ; mySize.y = 13 ;
if ( m_windowStyle & wxTE_MULTILINE ) if ( m_windowStyle & wxTE_MULTILINE )
mySize.y *= 5 ; mySize.y *= 5 ;
mySize.y += 2 * m_macVerticalBorder ; mySize.y += 2 * m_macVerticalBorder ;
} }
*/ */
@@ -719,7 +719,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1, m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , "\p" , true , 0 , 0 , 1,
(style & wxTE_PASSWORD) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ; (style & wxTE_PASSWORD) ? kControlEditTextPasswordProc : kControlEditTextProc , (long) this ) ;
long size ; long size ;
::GetControlData((ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &((TEHandle) m_macTE) , &size ) ; ::GetControlData((ControlHandle) m_macControl , 0, kControlEditTextTEHandleTag , sizeof( TEHandle ) , (char*) &((TEHandle) m_macTE) , &size ) ;
@@ -764,7 +764,7 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
TXNSetSelection( (TXNObject) m_macTXN, 0, 0); TXNSetSelection( (TXNObject) m_macTXN, 0, 0);
TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart); TXNShowSelection( (TXNObject) m_macTXN, kTXNShowStart);
} }
return TRUE; return TRUE;
} }
@@ -777,15 +777,15 @@ wxString wxTextCtrl::GetValue() const
{ {
err = ::GetControlDataSize((ControlHandle) m_macControl, 0, err = ::GetControlDataSize((ControlHandle) m_macControl, 0,
( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ; ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, &actualSize ) ;
if ( err ) if ( err )
return wxEmptyString ; return wxEmptyString ;
if ( actualSize > 0 ) if ( actualSize > 0 )
{ {
wxCharBuffer buf(actualSize) ; wxCharBuffer buf(actualSize) ;
::GetControlData( (ControlHandle) m_macControl, 0, ::GetControlData( (ControlHandle) m_macControl, 0,
( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag, ( m_windowStyle & wxTE_PASSWORD ) ? kControlEditTextPasswordTag : kControlEditTextTextTag,
actualSize , buf.data() , &actualSize ) ; actualSize , buf.data() , &actualSize ) ;
result = wxMacMakeStringFromCString( buf ) ; result = wxMacMakeStringFromCString( buf ) ;
} }
@@ -833,7 +833,7 @@ wxString wxTextCtrl::GetValue() const
} }
#endif #endif
} }
return result ; return result ;
} }
@@ -878,7 +878,7 @@ void wxTextCtrl::SetValue(const wxString& st)
MacRedrawControl() ; MacRedrawControl() ;
} }
void wxTextCtrl::SetMaxLength(unsigned long len) void wxTextCtrl::SetMaxLength(unsigned long len)
{ {
m_maxLength = len ; m_maxLength = len ;
} }
@@ -907,7 +907,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
fontStyle |= bold ; fontStyle |= bold ;
if ( font.GetStyle() == wxITALIC ) if ( font.GetStyle() == wxITALIC )
fontStyle |= italic ; fontStyle |= italic ;
typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ; typeAttr[attrCounter].tag = kTXNQDFontNameAttribute ;
typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ; typeAttr[attrCounter].size = kTXNQDFontNameAttributeSize ;
typeAttr[attrCounter].data.dataPtr = (void*) fontName ; typeAttr[attrCounter].data.dataPtr = (void*) fontName ;
@@ -918,7 +918,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ; typeAttr[attrCounter+2].size = kTXNQDFontStyleAttributeSize ;
typeAttr[attrCounter+2].data.dataValue = fontStyle ; typeAttr[attrCounter+2].data.dataValue = fontStyle ;
attrCounter += 3 ; attrCounter += 3 ;
} }
if ( style.HasTextColour() ) if ( style.HasTextColour() )
{ {
@@ -928,7 +928,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ; color = MAC_WXCOLORREF(style.GetTextColour().GetPixel()) ;
attrCounter += 1 ; attrCounter += 1 ;
} }
if ( attrCounter > 0 ) if ( attrCounter > 0 )
{ {
OSStatus status = TXNSetTypeAttributes ((TXNObject)m_macTXN, attrCounter , typeAttr, OSStatus status = TXNSetTypeAttributes ((TXNObject)m_macTXN, attrCounter , typeAttr,
@@ -963,7 +963,7 @@ void wxTextCtrl::Copy()
else else
{ {
ClearCurrentScrap(); ClearCurrentScrap();
TXNCopy((TXNObject)m_macTXN); TXNCopy((TXNObject)m_macTXN);
TXNConvertToPublicScrap(); TXNConvertToPublicScrap();
} }
} }
@@ -983,7 +983,7 @@ void wxTextCtrl::Cut()
else else
{ {
ClearCurrentScrap(); ClearCurrentScrap();
TXNCut((TXNObject)m_macTXN); TXNCut((TXNObject)m_macTXN);
TXNConvertToPublicScrap(); TXNConvertToPublicScrap();
} }
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1006,7 +1006,7 @@ void wxTextCtrl::Paste()
else else
{ {
TXNConvertFromPublicScrap(); TXNConvertFromPublicScrap();
TXNPaste((TXNObject)m_macTXN); TXNPaste((TXNObject)m_macTXN);
SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ; SetStyle( kTXNUseCurrentSelection , kTXNUseCurrentSelection , GetDefaultStyle() ) ;
} }
wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1044,13 +1044,13 @@ bool wxTextCtrl::CanPaste() const
#if TARGET_CARBON #if TARGET_CARBON
OSStatus err = noErr; OSStatus err = noErr;
ScrapRef scrapRef; ScrapRef scrapRef;
err = GetCurrentScrap( &scrapRef ); err = GetCurrentScrap( &scrapRef );
if ( err != noTypeErr && err != memFullErr ) if ( err != noTypeErr && err != memFullErr )
{ {
ScrapFlavorFlags flavorFlags; ScrapFlavorFlags flavorFlags;
Size byteCount; Size byteCount;
if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr) if (( err = GetScrapFlavorFlags( scrapRef, 'TEXT', &flavorFlags )) == noErr)
{ {
if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr) if (( err = GetScrapFlavorSize( scrapRef, 'TEXT', &byteCount )) == noErr)
@@ -1060,7 +1060,7 @@ bool wxTextCtrl::CanPaste() const
} }
} }
return FALSE; return FALSE;
#else #else
long offset ; long offset ;
if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 ) if ( GetScrap( NULL , 'TEXT' , &offset ) > 0 )
@@ -1140,7 +1140,7 @@ void wxTextCtrl::Replace(long from, long to, const wxString& value)
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
@@ -1173,7 +1173,7 @@ void wxTextCtrl::Remove(long from, long to)
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData( (ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
@@ -1184,8 +1184,8 @@ void wxTextCtrl::Remove(long from, long to)
bool formerEditable = IsEditable() ; bool formerEditable = IsEditable() ;
if ( !formerEditable ) if ( !formerEditable )
SetEditable(true) ; SetEditable(true) ;
TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ; TXNSetSelection( ((TXNObject) m_macTXN) , from , to ) ;
TXNClear( ((TXNObject) m_macTXN) ) ; TXNClear( ((TXNObject) m_macTXN) ) ;
if ( !formerEditable ) if ( !formerEditable )
SetEditable( formerEditable ) ; SetEditable( formerEditable ) ;
} }
@@ -1194,13 +1194,18 @@ void wxTextCtrl::Remove(long from, long to)
void wxTextCtrl::SetSelection(long from, long to) void wxTextCtrl::SetSelection(long from, long to)
{ {
if ( from == -1 )
from = 0;
if ( to == -1 )
to = GetLastPosition();
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
ControlEditTextSelectionRec selection ; ControlEditTextSelectionRec selection ;
selection.selStart = from ; selection.selStart = from ;
selection.selEnd = to ; selection.selEnd = to ;
TESetSelect( selection.selStart , selection.selEnd , ((TEHandle) m_macTE) ) ; TESetSelect( selection.selStart , selection.selEnd , ((TEHandle) m_macTE) ) ;
::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ; ::SetControlData((ControlHandle) m_macControl , 0, kControlEditTextSelectionTag , sizeof( selection ) , (char*) &selection ) ;
} }
@@ -1229,7 +1234,7 @@ bool wxTextCtrl::LoadFile(const wxString& file)
} }
void wxTextCtrl::WriteText(const wxString& st) void wxTextCtrl::WriteText(const wxString& st)
{ {
if ( !m_macUsesTXN ) if ( !m_macUsesTXN )
{ {
wxCharBuffer text = wxMacStringToCString( st ) ; wxCharBuffer text = wxMacStringToCString( st ) ;
@@ -1277,7 +1282,7 @@ void wxTextCtrl::Clear()
else else
{ {
TXNSetSelection( (TXNObject)m_macTXN , kTXNStartOffset , kTXNEndOffset ) ; TXNSetSelection( (TXNObject)m_macTXN , kTXNStartOffset , kTXNEndOffset ) ;
TXNClear((TXNObject)m_macTXN); TXNClear((TXNObject)m_macTXN);
} }
Refresh() ; Refresh() ;
} }
@@ -1301,7 +1306,7 @@ bool wxTextCtrl::AcceptsFocus() const
wxSize wxTextCtrl::DoGetBestSize() const wxSize wxTextCtrl::DoGetBestSize() const
{ {
int wText = 100 ; int wText = 100 ;
int hText; int hText;
if ( m_macUsesTXN ) if ( m_macUsesTXN )
{ {
@@ -1369,13 +1374,13 @@ int wxTextCtrl::GetNumberOfLines() const
{ {
// TODO change this if possible to reflect real lines // TODO change this if possible to reflect real lines
wxString content = GetValue() ; wxString content = GetValue() ;
int count = 1; int count = 1;
for (size_t i = 0; i < content.Length() ; i++) for (size_t i = 0; i < content.Length() ; i++)
{ {
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
} }
return count; return count;
} }
@@ -1399,7 +1404,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
{ {
// TODO change this if possible to reflect real lines // TODO change this if possible to reflect real lines
wxString content = GetValue() ; wxString content = GetValue() ;
// Find line first // Find line first
int count = 0; int count = 0;
for (size_t i = 0; i < content.Length() ; i++) for (size_t i = 0; i < content.Length() ; i++)
@@ -1413,7 +1418,7 @@ int wxTextCtrl::GetLineLength(long lineNo) const
count++; count++;
if (content[j] == '\r') return count; if (content[j] == '\r') return count;
} }
return count; return count;
} }
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
@@ -1434,15 +1439,15 @@ wxString wxTextCtrl::GetLineText(long lineNo) const
{ {
// Add chars in line then // Add chars in line then
wxString tmp; wxString tmp;
for (size_t j = i; j < content.Length(); j++) for (size_t j = i; j < content.Length(); j++)
{ {
if (content[j] == '\r') if (content[j] == '\r')
return tmp; return tmp;
tmp += content[j]; tmp += content[j];
} }
return tmp; return tmp;
} }
if (content[i] == '\r') count++; if (content[i] == '\r') count++;
@@ -1453,7 +1458,7 @@ wxString wxTextCtrl::GetLineText(long lineNo) const
/* /*
* Text item * Text item
*/ */
void wxTextCtrl::Command(wxCommandEvent & event) void wxTextCtrl::Command(wxCommandEvent & event)
{ {
SetValue (event.GetString()); SetValue (event.GetString());
@@ -1473,16 +1478,16 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
{ {
int key = event.GetKeyCode() ; int key = event.GetKeyCode() ;
bool eat_key = false ; bool eat_key = false ;
if ( key == 'c' && event.MetaDown() ) if ( key == 'c' && event.MetaDown() )
{ {
if ( CanCopy() ) if ( CanCopy() )
Copy() ; Copy() ;
return ; return ;
} }
if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB && if ( !IsEditable() && key != WXK_LEFT && key != WXK_RIGHT && key != WXK_DOWN && key != WXK_UP && key != WXK_TAB &&
!( key == WXK_RETURN && ( (m_windowStyle & wxPROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) ) !( key == WXK_RETURN && ( (m_windowStyle & wxPROCESS_ENTER) || (m_windowStyle & wxTE_MULTILINE) ) )
/* && key != WXK_PRIOR && key != WXK_NEXT && key != WXK_HOME && key != WXK_END */ /* && key != WXK_PRIOR && key != WXK_NEXT && key != WXK_HOME && key != WXK_END */
) )
{ {
@@ -1511,7 +1516,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
event.SetString( GetValue() ); event.SetString( GetValue() );
if ( GetEventHandler()->ProcessEvent(event) ) if ( GetEventHandler()->ProcessEvent(event) )
return; return;
} }
if ( !(m_windowStyle & wxTE_MULTILINE) ) if ( !(m_windowStyle & wxTE_MULTILINE) )
{ {
wxWindow *parent = GetParent(); wxWindow *parent = GetParent();
@@ -1530,7 +1535,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
return ; return ;
} }
} }
// this will make wxWindows eat the ENTER key so that // this will make wxWindows eat the ENTER key so that
// we actually prevent line wrapping in a single line // we actually prevent line wrapping in a single line
// text control // text control
@@ -1558,7 +1563,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
break; break;
} }
if (!eat_key) if (!eat_key)
{ {
// default handling // default handling
@@ -1566,7 +1571,7 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
if ( ( key >= 0x20 && key < WXK_START ) || if ( ( key >= 0x20 && key < WXK_START ) ||
key == WXK_RETURN || key == WXK_RETURN ||
key == WXK_DELETE || key == WXK_DELETE ||
key == WXK_BACK) key == WXK_BACK)
{ {
wxCommandEvent event1(wxEVT_COMMAND_TEXT_UPDATED, m_windowId); wxCommandEvent event1(wxEVT_COMMAND_TEXT_UPDATED, m_windowId);
@@ -1576,37 +1581,37 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
} }
} }
void wxTextCtrl::MacSuperShown( bool show ) void wxTextCtrl::MacSuperShown( bool show )
{ {
bool former = m_macControlIsShown ; bool former = m_macControlIsShown ;
wxControl::MacSuperShown( show ) ; wxControl::MacSuperShown( show ) ;
if ( (former != m_macControlIsShown) && m_macUsesTXN ) if ( (former != m_macControlIsShown) && m_macUsesTXN )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
else else
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
} }
} }
bool wxTextCtrl::Show(bool show) bool wxTextCtrl::Show(bool show)
{ {
bool former = m_macControlIsShown ; bool former = m_macControlIsShown ;
bool retval = wxControl::Show( show ) ; bool retval = wxControl::Show( show ) ;
if ( former != m_macControlIsShown && m_macUsesTXN ) if ( former != m_macControlIsShown && m_macUsesTXN )
{ {
if ( m_macControlIsShown ) if ( m_macControlIsShown )
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom,(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
else else
TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left, TXNSetFrameBounds( (TXNObject) m_macTXN, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.top + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.left,
(**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame); (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.bottom + 30000, (**(STPTextPaneVars **)m_macTXNvars).fRTextArea.right, (**(STPTextPaneVars **)m_macTXNvars).fTXNFrame);
} }
return retval ; return retval ;
} }