]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/tooltip.cpp
added flushing for MacOS X buffered window immediatly when using wxWindow::Update
[wxWidgets.git] / src / mac / tooltip.cpp
index 5f938dcfb59025ebbe33b1ba37c0c3b769a9e6d3..0d1e1ce95516f8c2f683f3deda679fe8b640611a 100644 (file)
 #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,21 +49,21 @@ class wxMacToolTip
                PicHandle       m_backpict ;
                bool            m_shown ;
                long            m_mark ;
+               wxMacToolTipTimer* m_timer ;
 } ;
 
 class wxMacToolTipTimer : wxTimer
 {
 public:
+       wxMacToolTipTimer() {} ;
        wxMacToolTipTimer(wxMacToolTip* tip, int iMilliseconds) ;
-
+    virtual ~wxMacToolTipTimer() {} ;
        void Notify()
        {
                if ( m_mark == m_tip->GetMark() )
                        m_tip->Draw() ;
 
-               delete this;
        }
-       
 protected:
        wxMacToolTip*   m_tip;
        long                    m_mark ;
@@ -148,7 +149,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 +180,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,14 +225,10 @@ 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 ;
 
-               SetOrigin( 0 , 0 ) ;
                TextFont( kFontIDGeneva ) ;
                TextSize( 10 ) ;
                TextFace( 0 ) ;
@@ -310,7 +312,7 @@ void wxMacToolTip::Draw()
        }
 }
 
-void wxToolTip::NotifyWindowDelete( WindowRef win ) 
+void wxToolTip::NotifyWindowDelete( WXHWND win ) 
 {
        if ( win == s_ToolTipWindowRef )
        {
@@ -321,19 +323,20 @@ 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 ;
 
-               SetOrigin( 0 , 0 ) ;
                BackColor( whiteColor ) ;
                ForeColor(blackColor ) ;
                DrawPicture(m_backpict, &m_rect);