X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7d9d1fd7088fb2d9f27da3d4c232029807c4eeb7..fd94e8aa4563b22e7c66c379625a8373d20720aa:/src/mac/carbon/tooltip.cpp

diff --git a/src/mac/carbon/tooltip.cpp b/src/mac/carbon/tooltip.cpp
index 45877f9a1c..6e86ca590c 100644
--- a/src/mac/carbon/tooltip.cpp
+++ b/src/mac/carbon/tooltip.cpp
@@ -11,7 +11,7 @@
     #pragma implementation "tooltip.h"
 #endif
 
-#include "wx/setup.h"
+#include "wx/defs.h"
 
 #if wxUSE_TOOLTIPS
 
@@ -21,13 +21,14 @@
 #include "wx/tooltip.h"
 #include "wx/timer.h"
 #include "wx/geometry.h"
-#include "wx/mac/aga.h"
 #include "wx/mac/uma.h"
 
 //-----------------------------------------------------------------------------
 // global data
 //-----------------------------------------------------------------------------
 
+class wxMacToolTipTimer ;
+
 class wxMacToolTip
 {
 	public :
@@ -48,24 +49,23 @@ class wxMacToolTip
 		PicHandle	m_backpict ;
 		bool		m_shown ;
 		long		m_mark ;
+		wxMacToolTipTimer* m_timer ;
 } ;
 
-class wxMacToolTipTimer : wxTimer
+class wxMacToolTipTimer : public wxTimer
 {
 public:
-	wxMacToolTipTimer(wxMacToolTip* tip, int iMilliseconds) ;
-
-	void Notify()
-	{
-		if ( m_mark == m_tip->GetMark() )
-			m_tip->Draw() ;
-
-		delete this;
-	}
-	
+    wxMacToolTipTimer() {} ;
+    wxMacToolTipTimer(wxMacToolTip* tip, int iMilliseconds) ;
+    virtual ~wxMacToolTipTimer() {} ;
+    void Notify()
+    {
+        if ( m_mark == m_tip->GetMark() )
+            m_tip->Draw() ;    
+    }
 protected:
-	wxMacToolTip* 	m_tip;
-	long			m_mark ;
+    wxMacToolTip* 	m_tip;
+    long		m_mark ;
 };
 
 //-----------------------------------------------------------------------------
@@ -148,7 +148,7 @@ void wxToolTip::RelayEvent( wxWindow *win , wxMouseEvent &event )
 				s_ToolTipArea = wxRect2DInt( event.m_x - 2 , event.m_y - 2 , 4 , 4 ) ;
 				s_LastWindowEntered = win ;
 				
-				WindowRef window = win->MacGetRootWindow() ;
+				WindowRef window = MAC_WXHWND( win->MacGetRootWindow() ) ;
 				int x = event.m_x ;
 				int y = event.m_y ;
 				wxPoint local( x , y ) ;
@@ -179,22 +179,27 @@ wxMacToolTip::wxMacToolTip()
 	m_backpict = NULL ;
 	m_mark = 0 ;
 	m_shown = false ;
+    m_timer = NULL ;
 }
 
 void wxMacToolTip::Setup( WindowRef window  , wxString text , wxPoint localPosition ) 
 {
 	m_mark++ ;
 	Clear() ;
-	m_position = localPosition ; 
+	m_position = localPosition ;
 	m_label = wxMacMakeMacStringFromPC( text ) ;
 	m_window = window ;
 	s_ToolTipWindowRef = window ;
 	m_backpict = NULL ;
-	new wxMacToolTipTimer( this , s_ToolTipDelay ) ;
+	if ( m_timer )
+	    delete m_timer ;
+	m_timer = new wxMacToolTipTimer( this , s_ToolTipDelay ) ;
 }
 
 wxMacToolTip::~wxMacToolTip() 
 {
+    if ( m_timer )
+        delete m_timer ;
 	if ( m_backpict ) 
 		Clear() ;
 }
@@ -219,11 +224,8 @@ void wxMacToolTip::Draw()
 */
 #endif
 	  {
-  		#if TARGET_CARBON
-  		AGAPortHelper help( GetWindowPort( m_window ) );
-  		#else
-  		AGAPortHelper help( ( m_window ) );
-  		#endif
+   		wxMacPortStateHelper help( (GrafPtr) GetWindowPort( m_window ) );
+ 
   		m_shown = true ;
 
   		TextFont( kFontIDGeneva ) ;
@@ -309,7 +311,7 @@ void wxMacToolTip::Draw()
 	}
 }
 
-void wxToolTip::NotifyWindowDelete( WindowRef win ) 
+void wxToolTip::NotifyWindowDelete( WXHWND win ) 
 {
 	if ( win == s_ToolTipWindowRef )
 	{
@@ -320,16 +322,18 @@ void wxToolTip::NotifyWindowDelete( WindowRef win )
 void wxMacToolTip::Clear()
 {
 	m_mark++ ;
+	if ( m_timer )
+	{
+	    delete m_timer ;
+	    m_timer = NULL ;
+	}
 	if ( !m_shown )
 		return ;
 		 
 	if ( m_window == s_ToolTipWindowRef && m_backpict )
 	{
-		#if TARGET_CARBON
-		AGAPortHelper help( GetWindowPort(m_window) ) ;
-		#else
-		AGAPortHelper help( (m_window) ) ;
-		#endif
+		wxMacPortStateHelper help( (GrafPtr) GetWindowPort(m_window) ) ;
+
 		m_shown = false ;
 
 		BackColor( whiteColor ) ;