started macosx compliant implementation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2001-12-19 21:52:40 +00:00
parent 5f0b2f22d3
commit a7b04cfc5b
2 changed files with 186 additions and 166 deletions

View File

@@ -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_ToolTipArea = wxRect2DInt( event.m_x - 2 , event.m_y - 2 , 4 , 4 ) ;
s_LastWindowEntered = win ; s_LastWindowEntered = win ;
WindowRef window = win->GetMacRootWindow() ; WindowRef window = win->MacGetRootWindow() ;
int x = event.m_x ; int x = event.m_x ;
int y = event.m_y ; int y = event.m_y ;
wxPoint local( x , y ) ; wxPoint local( x , y ) ;
@@ -209,94 +209,104 @@ void wxMacToolTip::Draw()
if ( m_window == s_ToolTipWindowRef ) if ( m_window == s_ToolTipWindowRef )
{ {
#if TARGET_CARBON #if TARGET_CARBON
AGAPortHelper help( GetWindowPort( m_window ) ); /*
#else if ( HMDisplayTag != (void*) kUnresolvedCFragSymbolAddress )
AGAPortHelper help( ( m_window ) ); {
#endif HMDisplayTag(
m_shown = true ; }
else
*/
#endif
{
#if TARGET_CARBON
AGAPortHelper help( GetWindowPort( m_window ) );
#else
AGAPortHelper help( ( m_window ) );
#endif
m_shown = true ;
SetOrigin( 0 , 0 ) ; SetOrigin( 0 , 0 ) ;
TextFont( kFontIDGeneva ) ; TextFont( kFontIDGeneva ) ;
TextSize( 10 ) ; TextSize( 10 ) ;
TextFace( 0 ) ; TextFace( 0 ) ;
FontInfo fontInfo; FontInfo fontInfo;
::GetFontInfo(&fontInfo); ::GetFontInfo(&fontInfo);
short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading; short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading;
short height = 0 ; short height = 0 ;
// short width = TextWidth( m_label , 0 ,m_label.Length() ) ; // short width = TextWidth( m_label , 0 ,m_label.Length() ) ;
int i = 0 ; int i = 0 ;
int length = m_label.Length() ; int length = m_label.Length() ;
int width = 0 ; int width = 0 ;
int thiswidth = 0 ; int thiswidth = 0 ;
int laststop = 0 ; int laststop = 0 ;
const char *text = m_label ; const char *text = m_label ;
while( i < length ) while( i < length )
{ {
if( text[i] == 13 || text[i] == 10) if( text[i] == 13 || text[i] == 10)
{ {
thiswidth = ::TextWidth( text , laststop , i - laststop ) ; thiswidth = ::TextWidth( text , laststop , i - laststop ) ;
if ( thiswidth > width ) if ( thiswidth > width )
width = thiswidth ; width = thiswidth ;
height += lineh ; height += lineh ;
laststop = i+1 ; laststop = i+1 ;
} }
i++ ; i++ ;
} }
if ( i - laststop > 0 ) if ( i - laststop > 0 )
{ {
thiswidth = ::TextWidth( text , laststop , i - laststop ) ; thiswidth = ::TextWidth( text , laststop , i - laststop ) ;
if ( thiswidth > width ) if ( thiswidth > width )
width = thiswidth ; width = thiswidth ;
height += lineh ; height += lineh ;
} }
m_rect.left = m_position.x + kTipOffset; m_rect.left = m_position.x + kTipOffset;
m_rect.top = m_position.y + kTipOffset; m_rect.top = m_position.y + kTipOffset;
m_rect.right = m_rect.left + width + 2 * kTipBorder; m_rect.right = m_rect.left + width + 2 * kTipBorder;
m_rect.bottom = m_rect.top + height + 2 * kTipBorder; m_rect.bottom = m_rect.top + height + 2 * kTipBorder;
ClipRect( &m_rect ) ; ClipRect( &m_rect ) ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;
ForeColor(blackColor ) ; ForeColor(blackColor ) ;
m_backpict = OpenPicture(&m_rect); m_backpict = OpenPicture(&m_rect);
CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)),
GetPortBitMapForCopyBits(GetWindowPort(m_window)), GetPortBitMapForCopyBits(GetWindowPort(m_window)),
&m_rect, &m_rect,
&m_rect, &m_rect,
srcCopy, srcCopy,
NULL); NULL);
ClosePicture(); ClosePicture();
PenNormal() ; PenNormal() ;
SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ; SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ;
BackColor( yellowColor ) ; SetThemeTextColor(kThemeTextColorNotification,32,true) ;
ForeColor( blackColor ) ; EraseRect( &m_rect ) ;
EraseRect( &m_rect ) ; FrameRect( &m_rect ) ;
FrameRect( &m_rect ) ; ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder);
::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder);
i = 0 ; i = 0 ;
laststop = 0 ; laststop = 0 ;
height = 0 ; height = 0 ;
while( i < length ) while( i < length )
{ {
if( text[i] == 13 || text[i] == 10) if( text[i] == 13 || text[i] == 10)
{ {
::DrawText( text , laststop , i - laststop ) ; ::DrawText( text , laststop , i - laststop ) ;
height += lineh ; height += lineh ;
::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height ); ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height );
laststop = i+1 ; laststop = i+1 ;
} }
i++ ; i++ ;
} }
::DrawText( text , laststop , i - laststop ) ; ::DrawText( text , laststop , i - laststop ) ;
::TextMode( srcOr ) ; ::TextMode( srcOr ) ;
// DrawText( m_label , 0 , m_label.Length() ) ; // DrawText( m_label , 0 , m_label.Length() ) ;
}
} }
} }

View File

@@ -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_ToolTipArea = wxRect2DInt( event.m_x - 2 , event.m_y - 2 , 4 , 4 ) ;
s_LastWindowEntered = win ; s_LastWindowEntered = win ;
WindowRef window = win->GetMacRootWindow() ; WindowRef window = win->MacGetRootWindow() ;
int x = event.m_x ; int x = event.m_x ;
int y = event.m_y ; int y = event.m_y ;
wxPoint local( x , y ) ; wxPoint local( x , y ) ;
@@ -209,94 +209,104 @@ void wxMacToolTip::Draw()
if ( m_window == s_ToolTipWindowRef ) if ( m_window == s_ToolTipWindowRef )
{ {
#if TARGET_CARBON #if TARGET_CARBON
AGAPortHelper help( GetWindowPort( m_window ) ); /*
#else if ( HMDisplayTag != (void*) kUnresolvedCFragSymbolAddress )
AGAPortHelper help( ( m_window ) ); {
#endif HMDisplayTag(
m_shown = true ; }
else
*/
#endif
{
#if TARGET_CARBON
AGAPortHelper help( GetWindowPort( m_window ) );
#else
AGAPortHelper help( ( m_window ) );
#endif
m_shown = true ;
SetOrigin( 0 , 0 ) ; SetOrigin( 0 , 0 ) ;
TextFont( kFontIDGeneva ) ; TextFont( kFontIDGeneva ) ;
TextSize( 10 ) ; TextSize( 10 ) ;
TextFace( 0 ) ; TextFace( 0 ) ;
FontInfo fontInfo; FontInfo fontInfo;
::GetFontInfo(&fontInfo); ::GetFontInfo(&fontInfo);
short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading; short lineh = fontInfo.ascent + fontInfo.descent + fontInfo.leading;
short height = 0 ; short height = 0 ;
// short width = TextWidth( m_label , 0 ,m_label.Length() ) ; // short width = TextWidth( m_label , 0 ,m_label.Length() ) ;
int i = 0 ; int i = 0 ;
int length = m_label.Length() ; int length = m_label.Length() ;
int width = 0 ; int width = 0 ;
int thiswidth = 0 ; int thiswidth = 0 ;
int laststop = 0 ; int laststop = 0 ;
const char *text = m_label ; const char *text = m_label ;
while( i < length ) while( i < length )
{ {
if( text[i] == 13 || text[i] == 10) if( text[i] == 13 || text[i] == 10)
{ {
thiswidth = ::TextWidth( text , laststop , i - laststop ) ; thiswidth = ::TextWidth( text , laststop , i - laststop ) ;
if ( thiswidth > width ) if ( thiswidth > width )
width = thiswidth ; width = thiswidth ;
height += lineh ; height += lineh ;
laststop = i+1 ; laststop = i+1 ;
} }
i++ ; i++ ;
} }
if ( i - laststop > 0 ) if ( i - laststop > 0 )
{ {
thiswidth = ::TextWidth( text , laststop , i - laststop ) ; thiswidth = ::TextWidth( text , laststop , i - laststop ) ;
if ( thiswidth > width ) if ( thiswidth > width )
width = thiswidth ; width = thiswidth ;
height += lineh ; height += lineh ;
} }
m_rect.left = m_position.x + kTipOffset; m_rect.left = m_position.x + kTipOffset;
m_rect.top = m_position.y + kTipOffset; m_rect.top = m_position.y + kTipOffset;
m_rect.right = m_rect.left + width + 2 * kTipBorder; m_rect.right = m_rect.left + width + 2 * kTipBorder;
m_rect.bottom = m_rect.top + height + 2 * kTipBorder; m_rect.bottom = m_rect.top + height + 2 * kTipBorder;
ClipRect( &m_rect ) ; ClipRect( &m_rect ) ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;
ForeColor(blackColor ) ; ForeColor(blackColor ) ;
m_backpict = OpenPicture(&m_rect); m_backpict = OpenPicture(&m_rect);
CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)),
GetPortBitMapForCopyBits(GetWindowPort(m_window)), GetPortBitMapForCopyBits(GetWindowPort(m_window)),
&m_rect, &m_rect,
&m_rect, &m_rect,
srcCopy, srcCopy,
NULL); NULL);
ClosePicture(); ClosePicture();
PenNormal() ; PenNormal() ;
SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ; SetThemeBackground(kThemeBrushNotificationWindowBackground,32,true) ;
BackColor( yellowColor ) ; SetThemeTextColor(kThemeTextColorNotification,32,true) ;
ForeColor( blackColor ) ; EraseRect( &m_rect ) ;
EraseRect( &m_rect ) ; FrameRect( &m_rect ) ;
FrameRect( &m_rect ) ; ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder);
::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder);
i = 0 ; i = 0 ;
laststop = 0 ; laststop = 0 ;
height = 0 ; height = 0 ;
while( i < length ) while( i < length )
{ {
if( text[i] == 13 || text[i] == 10) if( text[i] == 13 || text[i] == 10)
{ {
::DrawText( text , laststop , i - laststop ) ; ::DrawText( text , laststop , i - laststop ) ;
height += lineh ; height += lineh ;
::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height ); ::MoveTo( m_rect.left + kTipBorder , m_rect.top + fontInfo.ascent + kTipBorder + height );
laststop = i+1 ; laststop = i+1 ;
} }
i++ ; i++ ;
} }
::DrawText( text , laststop , i - laststop ) ; ::DrawText( text , laststop , i - laststop ) ;
::TextMode( srcOr ) ; ::TextMode( srcOr ) ;
// DrawText( m_label , 0 , m_label.Length() ) ; // DrawText( m_label , 0 , m_label.Length() ) ;
}
} }
} }