X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b89dac7816168bc86d4862edb394e681c161a3e3..0888ccc71f062fcf31845a04cce3cf1dfe799e05:/src/mac/carbon/tooltip.cpp diff --git a/src/mac/carbon/tooltip.cpp b/src/mac/carbon/tooltip.cpp index 5974c8808e..45877f9a1c 100644 --- a/src/mac/carbon/tooltip.cpp +++ b/src/mac/carbon/tooltip.cpp @@ -16,6 +16,7 @@ #if wxUSE_TOOLTIPS #include "wx/app.h" +#include "wx/dc.h" #include "wx/window.h" #include "wx/tooltip.h" #include "wx/timer.h" @@ -147,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->GetMacRootWindow() ; + WindowRef window = win->MacGetRootWindow() ; int x = event.m_x ; int y = event.m_y ; wxPoint local( x , y ) ; @@ -208,96 +209,103 @@ void wxMacToolTip::Draw() if ( m_window == s_ToolTipWindowRef ) { - #if TARGET_CARBON - AGAPortHelper help( GetWindowPort( m_window ) ); - #else - AGAPortHelper help( ( m_window ) ); - #endif - m_shown = true ; - - SetOrigin( 0 , 0 ) ; - TextFont( kFontIDGeneva ) ; - TextSize( 9 ) ; - TextFace( 0 ) ; - FontInfo fontInfo; - ::GetFontInfo(&fontInfo); - short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading; - short height = 0 ; - // short width = TextWidth( m_label , 0 ,m_label.Length() ) ; - - int i = 0 ; - int length = m_label.Length() ; - int width = 0 ; - int thiswidth = 0 ; - int laststop = 0 ; - const char *text = m_label ; - while( i < length ) - { - if( text[i] == 13 || text[i] == 10) - { - thiswidth = ::TextWidth( text , laststop , i - laststop ) ; - if ( thiswidth > width ) - width = thiswidth ; - - height += lineh ; - laststop = i+1 ; - } - i++ ; - } - if ( i - laststop > 0 ) - { - thiswidth = ::TextWidth( text , laststop , i - laststop ) ; - if ( thiswidth > width ) - width = thiswidth ; - height += lineh ; - } - - - m_rect.left = m_position.x + kTipOffset; - m_rect.top = m_position.y + kTipOffset; - m_rect.right = m_rect.left + width + 2 * kTipBorder; - m_rect.bottom = m_rect.top + height + 2 * kTipBorder; - ClipRect( &m_rect ) ; - BackColor( whiteColor ) ; - ForeColor(blackColor ) ; - m_backpict = OpenPicture(&m_rect); - - CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), - GetPortBitMapForCopyBits(GetWindowPort(m_window)), - &m_rect, - &m_rect, - srcCopy, - NULL); - - ClosePicture(); - RGBColor yellow = { 0xFFFF , 0xFFFF , (153<<8)+153 } ; - RGBBackColor( &yellow ) ; - EraseRect( &m_rect ) ; - FrameRect( &m_rect ) ; - BackColor( whiteColor ) ; - ForeColor(blackColor ) ; - ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder); - - i = 0 ; - laststop = 0 ; - height = 0 ; - while( i < length ) - { - if( text[i] == 13 || text[i] == 10) - { - ::DrawText( text , laststop , i - laststop ) ; - height += lineh ; - ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height ); - laststop = i+1 ; - } - i++ ; - } - - ::DrawText( text , laststop , i - laststop ) ; - ::TextMode( srcOr ) ; - wxDC::MacInvalidateSetup() ; - - // DrawText( m_label , 0 , m_label.Length() ) ; +#if TARGET_CARBON +/* + if ( HMDisplayTag != (void*) kUnresolvedCFragSymbolAddress ) + { + HMDisplayTag( + } + else +*/ +#endif + { + #if TARGET_CARBON + AGAPortHelper help( GetWindowPort( m_window ) ); + #else + AGAPortHelper help( ( m_window ) ); + #endif + m_shown = true ; + + TextFont( kFontIDGeneva ) ; + TextSize( 10 ) ; + TextFace( 0 ) ; + FontInfo fontInfo; + ::GetFontInfo(&fontInfo); + short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading; + short height = 0 ; + // short width = TextWidth( m_label , 0 ,m_label.Length() ) ; + + int i = 0 ; + int length = m_label.Length() ; + int width = 0 ; + int thiswidth = 0 ; + int laststop = 0 ; + const char *text = m_label ; + while( i < length ) + { + if( text[i] == 13 || text[i] == 10) + { + thiswidth = ::TextWidth( text , laststop , i - laststop ) ; + if ( thiswidth > width ) + width = thiswidth ; + + height += lineh ; + laststop = i+1 ; + } + i++ ; + } + if ( i - laststop > 0 ) + { + thiswidth = ::TextWidth( text , laststop , i - laststop ) ; + if ( thiswidth > width ) + width = thiswidth ; + height += lineh ; + } + + + m_rect.left = m_position.x + kTipOffset; + m_rect.top = m_position.y + kTipOffset; + m_rect.right = m_rect.left + width + 2 * kTipBorder; + m_rect.bottom = m_rect.top + height + 2 * kTipBorder; + ClipRect( &m_rect ) ; + BackColor( whiteColor ) ; + ForeColor(blackColor ) ; + m_backpict = OpenPicture(&m_rect); + + CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), + GetPortBitMapForCopyBits(GetWindowPort(m_window)), + &m_rect, + &m_rect, + srcCopy, + NULL); + + ClosePicture(); + PenNormal() ; + SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ; + SetThemeTextColor(kThemeTextColorNotification,32,true) ; + EraseRect( &m_rect ) ; + FrameRect( &m_rect ) ; + ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder); + + i = 0 ; + laststop = 0 ; + height = 0 ; + while( i < length ) + { + if( text[i] == 13 || text[i] == 10) + { + ::DrawText( text , laststop , i - laststop ) ; + height += lineh ; + ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height ); + laststop = i+1 ; + } + i++ ; + } + + ::DrawText( text , laststop , i - laststop ) ; + ::TextMode( srcOr ) ; + // DrawText( m_label , 0 , m_label.Length() ) ; + } } } @@ -324,13 +332,11 @@ void wxMacToolTip::Clear() #endif m_shown = false ; - SetOrigin( 0 , 0 ) ; BackColor( whiteColor ) ; ForeColor(blackColor ) ; DrawPicture(m_backpict, &m_rect); KillPicture(m_backpict); m_backpict = NULL ; - wxDC::MacInvalidateSetup() ; } }