- 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 */
- GetControlBounds(theControl, &bounds);
-
- wxMacWindowClipper clipper( wxFindControlFromMacControl(theControl ) ) ;
- if ( ! EqualRect(&bounds, &varsp->fRFocusOutline) ) {
- // scrollbar is on the border, we add one
- Rect oldbounds = varsp->fRFocusOutline ;
- InsetRect( &oldbounds , -1 , -1 ) ;
-
- if ( IsControlVisible( theControl ) )
- 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);
-
- if (!wxFindControlFromMacControl(theControl)->HasFlag(wxNO_BORDER))
- {
- SetRect(&varsp->fRTextArea, bounds.left + 2 , bounds.top + (varsp->fMultiline ? 0 : 2) ,
- bounds.right - (varsp->fMultiline ? 0 : 2), bounds.bottom - (varsp->fMultiline ? 0 : 2));
- }
- else
- {
- SetRect(&varsp->fRTextArea, bounds.left , bounds.top ,
- bounds.right, bounds.bottom);
- }
- RectRgn(varsp->fTextBackgroundRgn, &varsp->fRTextOutline);
- if ( IsControlVisible( theControl ) )
- TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top, varsp->fRTextArea.left,
- varsp->fRTextArea.bottom, varsp->fRTextArea.right, varsp->fTXNFrame);
- else
- TXNSetFrameBounds( varsp->fTXNRec, varsp->fRTextArea.top + 30000 , varsp->fRTextArea.left + 30000 ,
- varsp->fRTextArea.bottom + 30000 , varsp->fRTextArea.right + 30000 , varsp->fTXNFrame);
-
- }
-
- if ( IsControlVisible( theControl ) )
- {
- /* update the text region */
- RGBColor white = { 65535 , 65535 , 65535 } ;
- RGBBackColor( &white ) ;
- EraseRgn(varsp->fTextBackgroundRgn);
- TXNDraw(varsp->fTXNRec, NULL);
- /* restore the drawing environment */
- /* draw the text frame and focus frame (if necessary) */
- if (!wxFindControlFromMacControl(theControl)->HasFlag(wxNO_BORDER))
- {
- DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive);
- if ((**tpvars).fIsActive && varsp->fInFocus)
- DrawThemeFocusRect(&varsp->fRFocusOutline, true);
- }
- /* release our globals */
- HSetState((Handle) tpvars, state);
- }
+ wxTextCtrl* textctrl = (wxTextCtrl*) GetControlReference(theControl);
+ if ( textctrl == NULL )
+ return ;
+ TPUpdateVisibility( theControl ) ;
+
+ STPTextPaneVars *varsp = (STPTextPaneVars *) textctrl->m_macTXNvars ;
+ if ( textctrl->MacIsReallyShown() )
+ {
+ wxMacWindowClipper clipper( textctrl ) ;
+ TXNDraw(varsp->fTXNRec, NULL);
+ if ( !varsp->fNoBorders )
+ DrawThemeEditTextFrame(&varsp->fRTextOutline, varsp->fIsActive ? kThemeStateActive: kThemeStateInactive);
+ TPRedrawFocusOutline( varsp ) ;