bool m_shown ;
long m_mark ;
wxMacToolTipTimer* m_timer ;
+#ifdef TARGET_CARBON
+ CFStringRef m_helpTextRef ;
+#endif
} ;
class wxMacToolTipTimer : public wxTimer
m_mark = 0 ;
m_shown = false ;
m_timer = NULL ;
+ m_helpTextRef = NULL ;
}
void wxMacToolTip::Setup( WindowRef win , wxString text , wxPoint localPosition )
m_mark++ ;
Clear() ;
m_position = localPosition ;
- m_label = wxMacMakeMacStringFromPC( text ) ;
+ if( wxApp::s_macDefaultEncodingIsPC )
+ m_label = wxMacMakeMacStringFromPC( text ) ;
+ else
+ m_label = text ;
m_window =win;
s_ToolTipWindowRef = m_window ;
m_backpict = NULL ;
wxMacToolTip::~wxMacToolTip()
{
- if ( m_timer )
+ if ( m_timer ) {
delete m_timer ;
- if ( m_backpict )
- Clear() ;
+ m_timer = NULL;
+ }
+ if ( m_backpict )
+ Clear() ;
}
const short kTipBorder = 2 ;
if ( m_window == s_ToolTipWindowRef )
{
+ m_shown = true ;
#if TARGET_CARBON
-/*
if ( HMDisplayTag != (void*) kUnresolvedCFragSymbolAddress )
{
- HMDisplayTag(
+ HMHelpContentRec tag ;
+ tag.version = kMacHelpVersion;
+ SetRect( &tag.absHotRect , m_position.x - 2 , m_position.y - 2 , m_position.x + 2 , m_position.y + 2 ) ;
+ GrafPtr port ;
+ GetPort( &port ) ;
+ SetPortWindowPort(m_window) ;
+ LocalToGlobal( (Point *) &tag.absHotRect.top );
+ LocalToGlobal( (Point *) &tag.absHotRect.bottom );
+ SetPort( port );
+ if( m_helpTextRef )
+ CFRelease( m_helpTextRef )
+ m_helpTextRef = wxMacCreateCFString(m_label) ;
+ tag.content[kHMMinimumContentIndex].contentType = kHMCFStringContent ;
+ tag.content[kHMMinimumContentIndex].u.tagCFString = text ;
+ tag.content[kHMMaximumContentIndex].contentType = kHMCFStringContent ;
+ tag.content[kHMMaximumContentIndex].u.tagCFString = text ;
+ tag.tagSide = kHMDefaultSide;
+ HMDisplayTag( &tag );
}
else
-*/
#endif
{
wxMacPortStateHelper help( (GrafPtr) GetWindowPort( m_window ) );
#if TARGET_CARBON
bool useDrawThemeText = ( DrawThemeTextBox != (void*) kUnresolvedCFragSymbolAddress ) ;
#endif
- m_shown = true ;
FontFamilyID fontId ;
Str255 fontName ;
m_rect.right += kTipBorder ;
#endif
m_rect.bottom = m_rect.top + height + 2 * kTipBorder;
+ Rect r ;
+ GetPortBounds( GetWindowPort( m_window ) , &r ) ;
+ if ( m_rect.top < 0 )
+ {
+ m_rect.bottom += -m_rect.top ;
+ m_rect.top = 0 ;
+ }
+ if ( m_rect.left < 0 )
+ {
+ m_rect.right += -m_rect.left ;
+ m_rect.left = 0 ;
+ }
+ if ( m_rect.right > r.right )
+ {
+ m_rect.left -= (m_rect.right - r.right ) ;
+ m_rect.right = r.right ;
+ }
+ if ( m_rect.bottom > r.bottom )
+ {
+ m_rect.top -= (m_rect.bottom - r.bottom) ;
+ m_rect.bottom = r.bottom ;
+ }
ClipRect( &m_rect ) ;
BackColor( whiteColor ) ;
ForeColor(blackColor ) ;
+ GWorldPtr port ;
+ NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ;
+ CGrafPtr origPort ;
+ GDHandle origDevice ;
+
+ GetGWorld( &origPort , &origDevice ) ;
+ SetGWorld( port , NULL ) ;
+
m_backpict = OpenPicture(&m_rect);
CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)),
- GetPortBitMapForCopyBits(GetWindowPort(m_window)),
+ GetPortBitMapForCopyBits(port),
&m_rect,
&m_rect,
srcCopy,
NULL);
-
- ClosePicture();
- PenNormal() ;
+ ClosePicture();
+ SetGWorld( origPort , origDevice ) ;
+ DisposeGWorld( port ) ;
+ PenNormal() ;
RGBColor tooltipbackground = { 0xFFFF , 0xFFFF , 0xC000 } ;
BackColor( whiteColor ) ;
- RGBForeColor( &tooltipbackground ) ;
+ RGBForeColor( &tooltipbackground ) ;
PaintRect( &m_rect ) ;
ForeColor(blackColor ) ;
}
if ( !m_shown )
return ;
-
+#if TARGET_CARBON
+ HMHideTag() ;
+ if( m_helpTextRef )
+ CFRelease( m_helpTextRef )
+#else
if ( m_window == s_ToolTipWindowRef && m_backpict )
{
wxMacPortStateHelper help( (GrafPtr) GetWindowPort(m_window) ) ;
KillPicture(m_backpict);
m_backpict = NULL ;
}
+#endif
}
#endif