X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f5bb2251332040fd8ac7adb9406ea2516a077ed6..2d4e4f802f8a165c8d41053d2cd6d33c32b08f79:/src/mac/tooltip.cpp?ds=sidebyside

diff --git a/src/mac/tooltip.cpp b/src/mac/tooltip.cpp
index ba6de8cc8a..2fbce9c667 100644
--- a/src/mac/tooltip.cpp
+++ b/src/mac/tooltip.cpp
@@ -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,24 +290,55 @@ 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 ) ;
+	    
   		m_backpict = OpenPicture(&m_rect);
 
   		CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), 
-  				   GetPortBitMapForCopyBits(GetWindowPort(m_window)), 
+  				   GetPortBitMapForCopyBits(port), 
   				   &m_rect, 
   				   &m_rect, 
   				   srcCopy, 
   				   NULL);
-
-  		ClosePicture();
-        PenNormal() ;
+                ClosePicture();
+                SetGWorld( origPort , origDevice ) ;
+  		DisposeGWorld( port ) ;
+                PenNormal() ;
 
   		RGBColor tooltipbackground = { 0xFFFF , 0xFFFF , 0xC000 } ;
   		BackColor( whiteColor ) ;
-        RGBForeColor( &tooltipbackground ) ;
+                RGBForeColor( &tooltipbackground ) ;
 
   		PaintRect( &m_rect ) ;
   		ForeColor(blackColor ) ;