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