]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/tooltip.cpp
Fix client data handling: delete client data for all items when a
[wxWidgets.git] / src / mac / carbon / tooltip.cpp
index 5f71f00425c6c708e261d04175d1b9c1b8848516..2fbce9c667ec4c2f00a789b3cfedfd26e0120fff 100644 (file)
@@ -190,7 +190,10 @@ void wxMacToolTip::Setup( WindowRef win  , wxString text , wxPoint localPosition
        m_mark++ ;
        Clear() ;
        m_position = localPosition ;
-       m_label = wxMacMakeMacStringFromPC( text ) ;
+    if( wxApp::s_macDefaultEncodingIsPC )
+        m_label = wxMacMakeMacStringFromPC( text ) ;
+       else
+        m_label = text ;
     m_window =win;
        s_ToolTipWindowRef = m_window ;
        m_backpict = NULL ;
@@ -287,16 +290,38 @@ void wxMacToolTip::Draw()
                    m_rect.right += kTipBorder ;
 #endif
                m_rect.bottom = m_rect.top + height + 2 * kTipBorder;
+               Rect r ;
+               GetPortBounds( GetWindowPort( m_window ) , &r ) ;
+               if ( m_rect.top < 0 )
+               {
+                   m_rect.bottom += -m_rect.top ;
+                   m_rect.top = 0 ;
+               }
+               if ( m_rect.left < 0 )
+               {
+                   m_rect.right += -m_rect.left ;
+                   m_rect.left = 0 ;
+               }
+               if ( m_rect.right > r.right )
+               {
+                   m_rect.left -= (m_rect.right - r.right ) ;
+                   m_rect.right = r.right ;
+               }
+               if ( m_rect.bottom > r.bottom )
+               {
+                   m_rect.top -= (m_rect.bottom - r.bottom) ;
+                   m_rect.bottom = r.bottom ;
+               }
                ClipRect( &m_rect ) ;
                BackColor( whiteColor ) ;
                ForeColor(blackColor ) ;
-                GWorldPtr port ;               
-                NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ;
-                CGrafPtr    origPort ;
-                GDHandle    origDevice ;
-    
-                GetGWorld( &origPort , &origDevice ) ;
-                SetGWorld( port , NULL ) ;
+        GWorldPtr port ;               
+        NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ;
+        CGrafPtr    origPort ;
+        GDHandle    origDevice ;
+
+        GetGWorld( &origPort , &origDevice ) ;
+        SetGWorld( port , NULL ) ;
            
                m_backpict = OpenPicture(&m_rect);