X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a7b04cfc5b3758a4bde0305afe0727a6d9b78b93..ca5e5bad86564bf71c095b755291f6997844b10a:/src/mac/tooltip.cpp diff --git a/src/mac/tooltip.cpp b/src/mac/tooltip.cpp index 5f938dcfb5..0d1e1ce955 100644 --- a/src/mac/tooltip.cpp +++ b/src/mac/tooltip.cpp @@ -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,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);