From: Stefan Csomor Date: Thu, 31 Mar 2005 17:27:57 +0000 (+0000) Subject: setting the view rectangle explicitely to allow for partial visibility of a control... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/c447d5a937c98a1d82d6d9e9b09ac386e372aaa9 setting the view rectangle explicitely to allow for partial visibility of a control (scrollsub) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/mac/carbon/textctrl.cpp b/src/mac/carbon/textctrl.cpp index b096589a8b..2c69426a4c 100644 --- a/src/mac/carbon/textctrl.cpp +++ b/src/mac/carbon/textctrl.cpp @@ -2147,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() ; @@ -2186,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, @@ -2607,7 +2633,7 @@ OSStatus wxMacMLTEClassicControl::DoCreate() kTXNTextensionFile, kTXNSystemDefaultEncoding, &m_txn, &m_txnFrameID, NULL ) ); - +/* TXNCarbonEventInfo cInfo ; cInfo.useCarbonEvents = false ; @@ -2629,7 +2655,7 @@ OSStatus wxMacMLTEClassicControl::DoCreate() verify_noerr( TXNSetTXNObjectControls( m_txn, false , toptag, iControlTags, iControlData )) ; - +*/ #ifdef __WXMAC_OSX__ TXNRegisterScrollInfoProc( m_txn, gTXNScrollInfoProc, (SInt32) this); #endif