X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bd2213c20dfa2c2a1c5d51e674ff288b0d4eedaf..694f70fa9c0cc8889c208020bf75b2e3861f6818:/src/mac/carbon/textctrl.cpp diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index 9ebcb555be..2c69426a4c 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -1532,24 +1532,28 @@ void wxMacMLTEControl::AdjustCreationAttributes( const wxColour &background, boo iControlTags, iControlData )) ; // setting the default font + // under 10.2 this causes a visible caret, therefore we avoid it - Str255 fontName ; - SInt16 fontSize ; - Style fontStyle ; - - GetThemeFont(kThemeSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; - - TXNTypeAttributes typeAttr[] = + if ( UMAGetSystemVersion() >= 0x1030 ) { - { kTXNQDFontNameAttribute , kTXNQDFontNameAttributeSize , { (void*) fontName } } , - { kTXNQDFontSizeAttribute , kTXNFontSizeAttributeSize , { (void*) (fontSize << 16) } } , - { kTXNQDFontStyleAttribute , kTXNQDFontStyleAttributeSize , { (void*) normal } } , - } ; + Str255 fontName ; + SInt16 fontSize ; + Style fontStyle ; - verify_noerr( TXNSetTypeAttributes (m_txn, sizeof( typeAttr ) / sizeof(TXNTypeAttributes) , typeAttr, - kTXNStartOffset, - kTXNEndOffset) ); + GetThemeFont(kThemeSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; + + TXNTypeAttributes typeAttr[] = + { + { kTXNQDFontNameAttribute , kTXNQDFontNameAttributeSize , { (void*) fontName } } , + { kTXNQDFontSizeAttribute , kTXNFontSizeAttributeSize , { (void*) (fontSize << 16) } } , + { kTXNQDFontStyleAttribute , kTXNQDFontStyleAttributeSize , { (void*) normal } } , + } ; + verify_noerr( TXNSetTypeAttributes (m_txn, sizeof( typeAttr ) / sizeof(TXNTypeAttributes) , typeAttr, + kTXNStartOffset, + kTXNEndOffset) ); + } + if ( m_windowStyle & wxTE_PASSWORD ) { UniChar c = 0xA5 ; @@ -2109,24 +2113,16 @@ void wxMacMLTEClassicControl::MacSetObjectVisibility(Boolean vis) SetKeyboardFocus( m_txnWindow , m_controlRef , kControlFocusNoPart ) ; } - TXNControlTag iControlTags[] = - { - kTXNVisibilityTag , - }; - TXNControlData iControlData[] = - { - {(UInt32) false }, - }; - - int toptag = WXSIZEOF( iControlTags ) ; + TXNControlTag iControlTags[1] = { kTXNVisibilityTag }; + TXNControlData iControlData[1] = { {(UInt32) false } }; - verify_noerr( TXNGetTXNObjectControls( m_txn , toptag, + verify_noerr( TXNGetTXNObjectControls( m_txn , 1, iControlTags, iControlData ) ) ; if ( iControlData[0].uValue != vis ) { iControlData[0].uValue = vis ; - verify_noerr( TXNSetTXNObjectControls( m_txn, false , toptag, + verify_noerr( TXNSetTXNObjectControls( m_txn, false , 1, iControlTags, iControlData )) ; } // we right now are always clipping as partial visibility (overlapped) visibility @@ -2151,6 +2147,8 @@ void wxMacMLTEClassicControl::MacUpdatePosition() Rect oldBounds = m_txnControlBounds ; m_txnControlBounds = bounds ; wxMacWindowClipper cl(textctrl) ; + wxRect visRect = textctrl->MacGetClippedRect() ; + Rect visBounds = { visRect.y , visRect.x , visRect.y + visRect.height , visRect.x + visRect.width } ; #ifdef __WXMAC_OSX__ bool isCompositing = textctrl->MacGetTopLevelWindow()->MacUsesCompositing() ; @@ -2190,8 +2188,32 @@ void wxMacMLTEClassicControl::MacUpdatePosition() SetControlViewSize( m_sbVertical , h ) ; } } + int x , y ; + x = y = 0 ; + textctrl->MacWindowToRootWindow( &x , &y ) ; + OffsetRect( &visBounds , x , y ) ; + + Rect oldviewRect ; + TXNLongRect olddestRect ; + TXNGetRectBounds( m_txn , &oldviewRect , &olddestRect , NULL ) ; + + Rect viewRect = { m_txnControlBounds.top, m_txnControlBounds.left, + m_txnControlBounds.bottom - ( m_sbHorizontal ? 14 : 0 ) , m_txnControlBounds.right - ( m_sbVertical ? 14 : 0 ) } ; + TXNLongRect destRect = { m_txnControlBounds.top, m_txnControlBounds.left, + m_txnControlBounds.bottom - ( m_sbHorizontal ? 14 : 0 ) , m_txnControlBounds.right - ( m_sbVertical ? 14 : 0 ) } ; + + if ( olddestRect.right >= 10000 ) + destRect.right = destRect.left + 32000 ; + + if ( olddestRect.bottom >= 0x20000000 ) + destRect.bottom = destRect.top + 0x40000000 ; + + SectRect( &viewRect , &visBounds , &viewRect ) ; + TXNSetRectBounds( m_txn , &viewRect , &destRect , false ) ; +/* TXNSetFrameBounds( m_txn, m_txnControlBounds.top, m_txnControlBounds.left, m_txnControlBounds.bottom - ( m_sbHorizontal ? 14 : 0 ) , m_txnControlBounds.right - ( m_sbVertical ? 14 : 0 ), m_txnFrameID); +*/ #else TXNSetFrameBounds( m_txn, m_txnControlBounds.top, m_txnControlBounds.left, @@ -2611,7 +2633,29 @@ OSStatus wxMacMLTEClassicControl::DoCreate() kTXNTextensionFile, kTXNSystemDefaultEncoding, &m_txn, &m_txnFrameID, NULL ) ); +/* + TXNCarbonEventInfo cInfo ; + + cInfo.useCarbonEvents = false ; + cInfo.filler = 0 ; + cInfo.flags = 0 ; + cInfo.fDictionary = NULL ; + + TXNControlTag iControlTags[] = + { + kTXNUseCarbonEvents , + }; + TXNControlData iControlData[] = + { + {(UInt32) &cInfo }, + }; + + int toptag = WXSIZEOF( iControlTags ) ; + + verify_noerr( TXNSetTXNObjectControls( m_txn, false , toptag, + iControlTags, iControlData )) ; +*/ #ifdef __WXMAC_OSX__ TXNRegisterScrollInfoProc( m_txn, gTXNScrollInfoProc, (SInt32) this); #endif