cleanup - reformat

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Surovell 2006-01-04 08:19:13 +00:00
parent 4792d19265
commit 991f71dcc8
2 changed files with 195 additions and 145 deletions

View File

@ -6,7 +6,7 @@
// Created: 04/01/98 // Created: 04/01/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Stefan Csomor // Copyright: (c) Stefan Csomor
// Licence: The wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h" #include "wx/wxprec.h"
@ -17,22 +17,17 @@
#include "wx/bitmap.h" #include "wx/bitmap.h"
#include "wx/toolbar.h" #include "wx/toolbar.h"
IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase)
EVT_PAINT( wxToolBar::OnPaint )
END_EVENT_TABLE()
#include "wx/mac/uma.h" #include "wx/mac/uma.h"
#include "wx/geometry.h" #include "wx/geometry.h"
#ifdef __WXMAC_OSX__ #ifdef __WXMAC_OSX__
const short kwxMacToolBarToolDefaultWidth = 16 ; const short kwxMacToolBarToolDefaultWidth = 16 ;
const short kwxMacToolBarToolDefaultHeight = 16 ; const short kwxMacToolBarToolDefaultHeight = 16 ;
const short kwxMacToolBarTopMargin = 4 ; // 1 ; // used to be 4 const short kwxMacToolBarTopMargin = 4 ;
const short kwxMacToolBarLeftMargin = 4 ; //1 ; // used to be 4 const short kwxMacToolBarLeftMargin = 4 ;
const short kwxMacToolBorder = 0 ; // used to be 0 const short kwxMacToolBorder = 0 ;
const short kwxMacToolSpacing = 6 ; // 2 ; // used to be 6 const short kwxMacToolSpacing = 6 ;
#else #else
const short kwxMacToolBarToolDefaultWidth = 24 ; const short kwxMacToolBarToolDefaultWidth = 24 ;
const short kwxMacToolBarToolDefaultHeight = 22 ; const short kwxMacToolBarToolDefaultHeight = 22 ;
@ -42,6 +37,14 @@ const short kwxMacToolBorder = 4 ;
const short kwxMacToolSpacing = 0 ; const short kwxMacToolSpacing = 0 ;
#endif #endif
IMPLEMENT_DYNAMIC_CLASS(wxToolBar, wxControl)
BEGIN_EVENT_TABLE(wxToolBar, wxToolBarBase)
EVT_PAINT( wxToolBar::OnPaint )
END_EVENT_TABLE()
#pragma mark - #pragma mark -
#pragma mark Tool Implementation #pragma mark Tool Implementation
@ -78,6 +81,7 @@ public:
ClearControl() ; ClearControl() ;
if ( m_controlHandle ) if ( m_controlHandle )
DisposeControl( m_controlHandle ) ; DisposeControl( m_controlHandle ) ;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
if ( m_toolbarItemRef ) if ( m_toolbarItemRef )
CFRelease( m_toolbarItemRef ) ; CFRelease( m_toolbarItemRef ) ;
@ -99,6 +103,7 @@ public:
void ClearControl() void ClearControl()
{ {
m_control = NULL ; m_control = NULL ;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
m_toolbarItemRef = NULL ; m_toolbarItemRef = NULL ;
#endif #endif
@ -122,13 +127,16 @@ public:
sz.y /= 4 ; sz.y /= 4 ;
else else
sz.x /= 4 ; sz.x /= 4 ;
return sz ; return sz ;
} }
} }
wxPoint GetPosition() const wxPoint GetPosition() const
{ {
return wxPoint(m_x, m_y); return wxPoint(m_x, m_y);
} }
bool DoEnable( bool enable ) ; bool DoEnable( bool enable ) ;
void UpdateToggleImage( bool toggle ) ; void UpdateToggleImage( bool toggle ) ;
@ -140,14 +148,17 @@ public:
HideControl( m_controlHandle ) ; HideControl( m_controlHandle ) ;
if ( m_toolbarItemRef ) if ( m_toolbarItemRef )
CFRelease( m_toolbarItemRef ) ; CFRelease( m_toolbarItemRef ) ;
m_toolbarItemRef = ref ; m_toolbarItemRef = ref ;
if ( m_toolbarItemRef ) if ( m_toolbarItemRef )
{ {
HIToolbarItemSetHelpText( HIToolbarItemSetHelpText(
m_toolbarItemRef, wxMacCFStringHolder( GetShortHelp() , GetToolBar()->GetFont().GetEncoding() ) , m_toolbarItemRef,
wxMacCFStringHolder( GetLongHelp() , GetToolBar()->GetFont().GetEncoding() ) ) ; wxMacCFStringHolder( GetShortHelp(), GetToolBar()->GetFont().GetEncoding() ) ,
wxMacCFStringHolder( GetLongHelp(), GetToolBar()->GetFont().GetEncoding() ) ) ;
} }
} }
HIToolbarItemRef GetToolbarItemRef() const HIToolbarItemRef GetToolbarItemRef() const
{ {
return m_toolbarItemRef ; return m_toolbarItemRef ;
@ -168,19 +179,22 @@ private :
void Init() void Init()
{ {
m_controlHandle = NULL ; m_controlHandle = NULL ;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
m_toolbarItemRef = NULL ; m_toolbarItemRef = NULL ;
m_index = -1 ; m_index = -1 ;
#endif #endif
} }
ControlRef m_controlHandle ; ControlRef m_controlHandle ;
wxCoord m_x;
wxCoord m_y;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
HIToolbarItemRef m_toolbarItemRef ; HIToolbarItemRef m_toolbarItemRef ;
// position in its toolbar, -1 means not inserted // position in its toolbar, -1 means not inserted
CFIndex m_index ; CFIndex m_index ;
#endif #endif
wxCoord m_x;
wxCoord m_y;
}; };
static const EventTypeSpec eventList[] = static const EventTypeSpec eventList[] =
@ -201,22 +215,25 @@ static pascal OSStatus wxMacToolBarToolControlEventHandler( EventHandlerCallRef
cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ; cEvent.GetParameter( kEventParamDirectObject , &controlRef ) ;
switch( GetEventKind( event ) ) switch ( GetEventKind( event ) )
{ {
case kEventControlHit : case kEventControlHit :
{ {
wxToolBarTool* tbartool = (wxToolBarTool*)data ; wxToolBarTool* tbartool = (wxToolBarTool*)data ;
wxToolBar *tbar = tbartool != NULL ? ( wxToolBar * ) ( tbartool->GetToolBar() ) : NULL ; wxToolBar *tbar = tbartool != NULL ? (wxToolBar*) (tbartool->GetToolBar()) : NULL ;
if ((tbartool != NULL) && tbartool->CanBeToggled() ) if ((tbartool != NULL) && tbartool->CanBeToggled())
{ {
bool shouldToggle; bool shouldToggle;
#ifdef __WXMAC_OSX__ #ifdef __WXMAC_OSX__
shouldToggle = !tbartool->IsToggled(); shouldToggle = !tbartool->IsToggled();
#else #else
shouldToggle = ( GetControl32BitValue((ControlRef) tbartool->GetControlHandle()) != 0 ); shouldToggle = ( GetControl32BitValue((ControlRef) tbartool->GetControlHandle()) != 0 );
#endif #endif
tbar->ToggleTool( tbartool->GetId(), shouldToggle ); tbar->ToggleTool( tbartool->GetId(), shouldToggle );
} }
if (tbartool != NULL) if (tbartool != NULL)
tbar->OnLeftClick( tbartool->GetId(), tbartool->IsToggled() ); tbar->OnLeftClick( tbartool->GetId(), tbartool->IsToggled() );
result = noErr; result = noErr;
@ -242,6 +259,7 @@ static pascal OSStatus wxMacToolBarToolControlEventHandler( EventHandlerCallRef
default : default :
break ; break ;
} }
return result ; return result ;
} }
@ -258,6 +276,7 @@ static pascal OSStatus wxMacToolBarToolEventHandler( EventHandlerCallRef handler
default : default :
break ; break ;
} }
return result ; return result ;
} }
@ -278,22 +297,24 @@ static pascal OSStatus wxMacToolBarCommandEventHandler( EventHandlerCallRef hand
{ {
OSStatus result = eventNotHandledErr ; OSStatus result = eventNotHandledErr ;
switch( GetEventKind( event ) ) switch ( GetEventKind( event ) )
{ {
case kEventToolbarItemPerformAction : case kEventToolbarItemPerformAction :
{ {
wxToolBarTool* tbartool = (wxToolBarTool*) data ; wxToolBarTool* tbartool = (wxToolBarTool*) data ;
if ( tbartool != NULL ) if ( tbartool != NULL )
{ {
int toolID = tbartool->GetId(); wxToolBar *tbar = (wxToolBar*)(tbartool->GetToolBar());
wxToolBar *tbar = ( wxToolBar * ) ( tbartool->GetToolBar() ); int toolID = tbartool->GetId();
if ( tbartool->CanBeToggled() ) if ( tbartool->CanBeToggled() )
{ {
if ( tbar ) if ( tbar )
tbar->ToggleTool(toolID, !tbartool->IsToggled() ); tbar->ToggleTool(toolID, !tbartool->IsToggled() );
} }
if ( tbar ) if ( tbar )
tbar->OnLeftClick( toolID , tbartool -> IsToggled() ) ; tbar->OnLeftClick( toolID , tbartool->IsToggled() ) ;
result = noErr; result = noErr;
} }
} }
@ -302,13 +323,15 @@ static pascal OSStatus wxMacToolBarCommandEventHandler( EventHandlerCallRef hand
default : default :
break ; break ;
} }
return result ; return result ;
} }
static pascal OSStatus wxMacToolBarEventHandler( EventHandlerCallRef handler, EventRef event, void *data ) static pascal OSStatus wxMacToolBarEventHandler( EventHandlerCallRef handler, EventRef event, void *data )
{ {
OSStatus result = eventNotHandledErr ; OSStatus result = eventNotHandledErr ;
switch( GetEventClass( event ) )
switch ( GetEventClass( event ) )
{ {
case kEventClassToolbarItem : case kEventClassToolbarItem :
result = wxMacToolBarCommandEventHandler( handler, event, data ) ; result = wxMacToolBarCommandEventHandler( handler, event, data ) ;
@ -317,6 +340,7 @@ static pascal OSStatus wxMacToolBarEventHandler( EventHandlerCallRef handler, Ev
default : default :
break ; break ;
} }
return result ; return result ;
} }
@ -360,6 +384,7 @@ bool wxToolBarTool::DoEnable(bool enable)
#endif #endif
} }
} }
return true ; return true ;
} }
@ -407,9 +432,7 @@ void wxToolBarTool::SetPosition(const wxPoint& position)
int former_mac_y = contrlRect.top ; int former_mac_y = contrlRect.top ;
if ( mac_x != former_mac_x || mac_y != former_mac_y ) if ( mac_x != former_mac_x || mac_y != former_mac_y )
{
UMAMoveControl( m_controlHandle , mac_x , mac_y ) ; UMAMoveControl( m_controlHandle , mac_x , mac_y ) ;
}
#endif #endif
} }
} }
@ -450,16 +473,16 @@ void wxToolBarTool::UpdateToggleImage( bool toggle )
int h = m_bmpNormal.GetHeight() ; int h = m_bmpNormal.GetHeight() ;
wxBitmap bmp( w , h ) ; wxBitmap bmp( w , h ) ;
wxMemoryDC dc ; wxMemoryDC dc ;
dc.SelectObject( bmp ) ; dc.SelectObject( bmp ) ;
dc.SetPen( wxNullPen ) ; dc.SetPen( wxNullPen ) ;
dc.SetBackground( *wxWHITE ) ; dc.SetBackground( *wxWHITE ) ;
dc.DrawRectangle( 0 , 0 , w , h ) ; dc.DrawRectangle( 0 , 0 , w , h ) ;
dc.DrawBitmap( m_bmpNormal , 0 , 0 , true) ; dc.DrawBitmap( m_bmpNormal , 0 , 0 , true ) ;
dc.SelectObject( wxNullBitmap ) ; dc.SelectObject( wxNullBitmap ) ;
ControlButtonContentInfo info ; ControlButtonContentInfo info ;
wxMacCreateBitmapButton( &info , bmp ) ; wxMacCreateBitmapButton( &info , bmp ) ;
SetControlData( m_controlHandle , 0, kControlIconContentTag, SetControlData( m_controlHandle, 0, kControlIconContentTag, sizeof(info), (Ptr)&info );
sizeof( info ), (Ptr)&info );
wxMacReleaseBitmapButton( &info ) ; wxMacReleaseBitmapButton( &info ) ;
} }
else else
@ -523,6 +546,7 @@ void wxToolBar::Init()
m_maxHeight = -1; m_maxHeight = -1;
m_defaultWidth = kwxMacToolBarToolDefaultWidth; m_defaultWidth = kwxMacToolBarToolDefaultWidth;
m_defaultHeight = kwxMacToolBarToolDefaultHeight; m_defaultHeight = kwxMacToolBarToolDefaultHeight;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
m_macHIToolbarRef = NULL ; m_macHIToolbarRef = NULL ;
m_macUsesNativeToolbar = false ; m_macUsesNativeToolbar = false ;
@ -532,13 +556,17 @@ void wxToolBar::Init()
// also for the toolbar we have the dual implementation: // also for the toolbar we have the dual implementation:
// only when MacInstallNativeToolbar is called is the native toolbar set as the window toolbar // only when MacInstallNativeToolbar is called is the native toolbar set as the window toolbar
// //
bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, const wxSize& size, bool wxToolBar::Create(wxWindow *parent,
long style, const wxString& name) wxWindowID id,
const wxPoint& pos,
const wxSize& size,
long style,
const wxString& name)
{ {
if ( !wxToolBarBase::Create( parent , id , pos , size , style, wxDefaultValidator, name ) ) if ( !wxToolBarBase::Create( parent , id , pos , size , style, wxDefaultValidator, name ) )
return false ; return false ;
OSStatus err = 0; OSStatus err = noErr;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
wxString labelStr = wxString::Format(wxT("%xd"), (int)this); wxString labelStr = wxString::Format(wxT("%xd"), (int)this);
@ -562,7 +590,7 @@ bool wxToolBar::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, cons
} }
#endif #endif
return (err == 0); return (err == noErr);
} }
wxToolBar::~wxToolBar() wxToolBar::~wxToolBar()
@ -599,6 +627,7 @@ bool wxToolBar::Show( bool show )
} }
else else
#endif #endif
bResult = wxToolBarBase::Show( show ); bResult = wxToolBarBase::Show( show );
} }
@ -633,7 +662,7 @@ void wxToolBar::DoGetSize( int *width, int *height ) const
MacTopLevelHasNativeToolbar( &ownToolbarInstalled ); MacTopLevelHasNativeToolbar( &ownToolbarInstalled );
if ( ownToolbarInstalled ) if ( ownToolbarInstalled )
{ {
// TODO is this really a control ? // TODO: is this really a control ?
GetControlBounds( (ControlRef) m_macHIToolbarRef, &boundsR ); GetControlBounds( (ControlRef) m_macHIToolbarRef, &boundsR );
if ( width != NULL ) if ( width != NULL )
*width = boundsR.right - boundsR.left; *width = boundsR.right - boundsR.left;
@ -648,13 +677,16 @@ void wxToolBar::DoGetSize( int *width, int *height ) const
wxSize wxToolBar::DoGetBestSize() const wxSize wxToolBar::DoGetBestSize() const
{ {
int width , height ; int width , height ;
DoGetSize( &width , &height ) ; DoGetSize( &width , &height ) ;
return wxSize( width , height ) ; return wxSize( width , height ) ;
} }
void wxToolBar::SetWindowStyleFlag( long style ) void wxToolBar::SetWindowStyleFlag( long style )
{ {
wxToolBarBase::SetWindowStyleFlag( style ); wxToolBarBase::SetWindowStyleFlag( style );
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
if (m_macHIToolbarRef != NULL) if (m_macHIToolbarRef != NULL)
{ {
@ -715,7 +747,7 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
// check the existing toolbar // check the existing toolbar
HIToolbarRef curToolbarRef = NULL; HIToolbarRef curToolbarRef = NULL;
OSStatus err = GetWindowToolbar( tlw, &curToolbarRef ); OSStatus err = GetWindowToolbar( tlw, &curToolbarRef );
if (err != 0) if (err != noErr)
curToolbarRef = NULL; curToolbarRef = NULL;
m_macUsesNativeToolbar = usesNative; m_macUsesNativeToolbar = usesNative;
@ -732,20 +764,9 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
ChangeWindowAttributes( tlw, kWindowToolbarButtonAttribute, 0 ); ChangeWindowAttributes( tlw, kWindowToolbarButtonAttribute, 0 );
SetAutomaticControlDragTrackingEnabledForWindow( tlw, true ); SetAutomaticControlDragTrackingEnabledForWindow( tlw, true );
// FIXME: which is best, which is necessary?
//
// m_peer->SetVisibility( false, true );
//
//
Rect r = { 0 , 0 , 0 , 0 }; Rect r = { 0 , 0 , 0 , 0 };
//
//
m_peer->SetRect( &r ); m_peer->SetRect( &r );
//
// FIXME: which is best, which is necessary?
//
SetSize( wxSIZE_AUTO_WIDTH, 0 ); SetSize( wxSIZE_AUTO_WIDTH, 0 );
//
m_peer->SetVisibility( false, true ); m_peer->SetVisibility( false, true );
wxToolBarBase::Show( false ); wxToolBarBase::Show( false );
} }
@ -761,12 +782,7 @@ bool wxToolBar::MacInstallNativeToolbar(bool usesNative)
ChangeWindowAttributes( tlw, 0 , kWindowToolbarButtonAttribute ); ChangeWindowAttributes( tlw, 0 , kWindowToolbarButtonAttribute );
SetWindowToolbar( tlw, NULL ); SetWindowToolbar( tlw, NULL );
// FIXME: which is best, which is necessary?
m_peer->SetVisibility( true, true ); m_peer->SetVisibility( true, true );
//
// wxToolBarBase::Show( true );
//
} }
} }
@ -783,18 +799,18 @@ bool wxToolBar::Realize()
if (m_tools.GetCount() == 0) if (m_tools.GetCount() == 0)
return false; return false;
int x = m_xMargin + kwxMacToolBarLeftMargin;
int y = m_yMargin + kwxMacToolBarTopMargin;
int tw, th;
GetSize( &tw, &th );
int maxWidth = 0; int maxWidth = 0;
int maxHeight = 0; int maxHeight = 0;
int maxToolWidth = 0; int maxToolWidth = 0;
int maxToolHeight = 0; int maxToolHeight = 0;
int x = m_xMargin + kwxMacToolBarLeftMargin;
int y = m_yMargin + kwxMacToolBarTopMargin;
int tw, th;
GetSize( &tw, &th );
// find the maximum tool width and height // find the maximum tool width and height
wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst(); wxToolBarToolsList::compatibility_iterator node = m_tools.GetFirst();
while ( node != NULL ) while ( node != NULL )
@ -814,17 +830,16 @@ bool wxToolBar::Realize()
node = node->GetNext(); node = node->GetNext();
} }
bool lastIsRadio = false; bool lastIsRadio = false;
bool curIsRadio = false; bool curIsRadio = false;
bool setChoiceInGroup = false; bool setChoiceInGroup = false;
node = m_tools.GetFirst();
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
CFIndex currentPosition = 0 ; CFIndex currentPosition = 0 ;
bool insertAll = false ; bool insertAll = false ;
#endif // wxMAC_USE_NATIVE_TOOLBAR #endif
node = m_tools.GetFirst();
while ( node != NULL ) while ( node != NULL )
{ {
wxToolBarTool *tool = (wxToolBarTool *) node->GetData(); wxToolBarTool *tool = (wxToolBarTool *) node->GetData();
@ -835,7 +850,7 @@ bool wxToolBar::Realize()
continue; continue;
} }
// set tool position // set tool position:
// for the moment just perform a single row/column alignment // for the moment just perform a single row/column alignment
wxSize cursize = tool->GetSize(); wxSize cursize = tool->GetSize();
if ( x + cursize.x > maxWidth ) if ( x + cursize.x > maxWidth )
@ -867,7 +882,7 @@ bool wxToolBar::Realize()
HIToolbarItemRef hiItemRef = tool->GetToolbarItemRef(); HIToolbarItemRef hiItemRef = tool->GetToolbarItemRef();
if ( hiItemRef != NULL ) if ( hiItemRef != NULL )
{ {
if ( tool->GetIndex() != currentPosition || insertAll == true ) if ( insertAll || (tool->GetIndex() != currentPosition) )
{ {
OSStatus err = noErr ; OSStatus err = noErr ;
if ( !insertAll ) if ( !insertAll )
@ -883,10 +898,13 @@ bool wxToolBar::Realize()
wxASSERT_MSG( err == noErr, _T("HIToolbarRemoveItemAtIndex failed") ); wxASSERT_MSG( err == noErr, _T("HIToolbarRemoveItemAtIndex failed") );
insertAll = true ; insertAll = true ;
} }
err = HIToolbarInsertItemAtIndex( (HIToolbarRef) m_macHIToolbarRef, hiItemRef , currentPosition ) ; err = HIToolbarInsertItemAtIndex( (HIToolbarRef) m_macHIToolbarRef, hiItemRef , currentPosition ) ;
wxASSERT_MSG( err == noErr, _T("HIToolbarInsertItemAtIndex failed") ); wxASSERT_MSG( err == noErr, _T("HIToolbarInsertItemAtIndex failed") );
tool->SetIndex( currentPosition ) ; tool->SetIndex( currentPosition ) ;
} }
currentPosition++ ; currentPosition++ ;
} }
} }
@ -1016,20 +1034,19 @@ void wxToolBar::SetRows(int nRows)
{ {
// avoid resizing the frame uselessly // avoid resizing the frame uselessly
if ( nRows != m_maxRows ) if ( nRows != m_maxRows )
{
m_maxRows = nRows; m_maxRows = nRows;
}
} }
void wxToolBar::MacSuperChangedPosition() void wxToolBar::MacSuperChangedPosition()
{ {
wxWindow::MacSuperChangedPosition(); wxWindow::MacSuperChangedPosition();
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
if (! m_macUsesNativeToolbar ) if (! m_macUsesNativeToolbar )
#endif
{
Realize(); Realize();
} #else
Realize();
#endif
} }
wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const
@ -1099,17 +1116,21 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
else else
toolrect.right = toolSize.x; toolrect.right = toolSize.x;
#ifdef __WXMAC_OSX__ #ifdef __WXMAC_OSX__
// in flat style we need a visual separator // in flat style we need a visual separator
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
HIToolbarItemRef item; HIToolbarItemRef item;
err = HIToolbarItemCreate( kHIToolbarSeparatorIdentifier, kHIToolbarItemCantBeRemoved | kHIToolbarItemIsSeparator | kHIToolbarItemAllowDuplicates, &item ); err = HIToolbarItemCreate(
kHIToolbarSeparatorIdentifier,
kHIToolbarItemCantBeRemoved | kHIToolbarItemIsSeparator | kHIToolbarItemAllowDuplicates,
&item );
if (err == noErr) if (err == noErr)
tool->SetToolbarItemRef( item ); tool->SetToolbarItemRef( item );
#endif // wxMAC_USE_NATIVE_TOOLBAR #endif
CreateSeparatorControl( window, &toolrect, &controlHandle ); CreateSeparatorControl( window, &toolrect, &controlHandle );
tool->SetControlHandle( controlHandle ); tool->SetControlHandle( controlHandle );
#endif // __WXMAC_OSX__ #endif
} }
break; break;
@ -1117,7 +1138,7 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
{ {
wxASSERT( tool->GetControlHandle() == NULL ) ; wxASSERT( tool->GetControlHandle() == NULL ) ;
ControlButtonContentInfo info ; ControlButtonContentInfo info ;
wxMacCreateBitmapButton( &info , tool->GetNormalBitmap() , kControlContentIconRef ) ; wxMacCreateBitmapButton( &info , tool->GetNormalBitmap() , kControlContentIconRef ) ;
if ( UMAGetSystemVersion() >= 0x1000) if ( UMAGetSystemVersion() >= 0x1000)
CreateIconControl( window , &toolrect , &info , false , &controlHandle ) ; CreateIconControl( window , &toolrect , &info , false , &controlHandle ) ;
@ -1125,11 +1146,10 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
{ {
SInt16 behaviour = kControlBehaviorOffsetContents ; SInt16 behaviour = kControlBehaviorOffsetContents ;
if ( tool->CanBeToggled() ) if ( tool->CanBeToggled() )
behaviour += kControlBehaviorToggles ; behaviour |= kControlBehaviorToggles ;
CreateBevelButtonControl( window , &toolrect , CFSTR("") , CreateBevelButtonControl( window ,
kControlBevelButtonNormalBevel , &toolrect , CFSTR("") , kControlBevelButtonNormalBevel ,
behaviour , &info , behaviour , &info , 0 , 0 , 0 , &controlHandle ) ;
0 , 0 , 0 , &controlHandle ) ;
} }
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
@ -1147,13 +1167,13 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
HIToolbarItemSetCommandID( item, kHIToolbarCommandPressAction ); HIToolbarItemSetCommandID( item, kHIToolbarCommandPressAction );
tool->SetToolbarItemRef( item ); tool->SetToolbarItemRef( item );
} }
#endif // wxMAC_USE_NATIVE_TOOLBAR #endif
wxMacReleaseBitmapButton( &info ) ; wxMacReleaseBitmapButton( &info ) ;
/* #if 0
SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ; SetBevelButtonTextPlacement( m_controlHandle , kControlBevelButtonPlaceBelowGraphic ) ;
UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ; UMASetControlTitle( m_controlHandle , label , wxFont::GetDefaultEncoding() ) ;
*/ #endif
InstallControlEventHandler( (ControlRef) controlHandle, GetwxMacToolBarToolEventHandlerUPP(), InstallControlEventHandler( (ControlRef) controlHandle, GetwxMacToolBarToolEventHandlerUPP(),
GetEventTypeCount(eventList), eventList, tool, NULL ); GetEventTypeCount(eventList), eventList, tool, NULL );
@ -1200,7 +1220,7 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
break; break;
} }
if ( err == 0 ) if ( err == noErr )
{ {
if ( controlHandle ) if ( controlHandle )
{ {
@ -1224,7 +1244,7 @@ bool wxToolBar::DoInsertTool(size_t WXUNUSED(pos),
wxASSERT_MSG( false, errMsg.c_str() ); wxASSERT_MSG( false, errMsg.c_str() );
} }
return( err == 0 ); return (err == noErr);
} }
void wxToolBar::DoSetToggle(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(toggle)) void wxToolBar::DoSetToggle(wxToolBarToolBase *WXUNUSED(tool), bool WXUNUSED(toggle))
@ -1254,7 +1274,7 @@ bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *toolbase)
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
CFIndex removeIndex = tool->GetIndex(); CFIndex removeIndex = tool->GetIndex();
#endif // wxMAC_USE_NATIVE_TOOLBAR #endif
switch ( tool->GetStyle() ) switch ( tool->GetStyle() )
{ {
@ -1270,13 +1290,15 @@ bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *toolbase)
if ( tool->GetControlHandle() ) if ( tool->GetControlHandle() )
{ {
DisposeControl( (ControlRef) tool->GetControlHandle() ) ; DisposeControl( (ControlRef) tool->GetControlHandle() ) ;
#if wxMAC_USE_NATIVE_TOOLBAR #if wxMAC_USE_NATIVE_TOOLBAR
if ( removeIndex != -1 && m_macHIToolbarRef ) if ( removeIndex != -1 && m_macHIToolbarRef )
{ {
HIToolbarRemoveItemAtIndex( (HIToolbarRef) m_macHIToolbarRef , removeIndex ) ; HIToolbarRemoveItemAtIndex( (HIToolbarRef) m_macHIToolbarRef , removeIndex ) ;
tool->SetIndex( -1 ) ; tool->SetIndex( -1 ) ;
} }
#endif // wxMAC_USE_NATIVE_TOOLBAR #endif
tool->ClearControl() ; tool->ClearControl() ;
} }
break; break;
@ -1303,10 +1325,10 @@ bool wxToolBar::DoDeleteTool(size_t WXUNUSED(pos), wxToolBarToolBase *toolbase)
if ( removeIndex != -1 && tool2->GetIndex() > removeIndex ) if ( removeIndex != -1 && tool2->GetIndex() > removeIndex )
tool2->SetIndex( tool2->GetIndex() - 1 ) ; tool2->SetIndex( tool2->GetIndex() - 1 ) ;
#endif #endif
} }
InvalidateBestSize(); InvalidateBestSize();
return true ; return true ;
} }
@ -1324,13 +1346,14 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
int w, h ; int w, h ;
GetSize( &w , &h ) ; GetSize( &w , &h ) ;
#if wxMAC_USE_CORE_GRAPHICS && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3 #if wxMAC_USE_CORE_GRAPHICS && MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3
if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() ) if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() )
{ {
if ( UMAGetSystemVersion() >= 0x1030 ) if ( UMAGetSystemVersion() >= 0x1030 )
{ {
HIThemePlacardDrawInfo info ; HIThemePlacardDrawInfo info ;
memset( &info, 0 , sizeof( info ) ) ; memset( &info, 0, sizeof(info) ) ;
info.version = 0 ; info.version = 0 ;
info.state = IsEnabled() ? kThemeStateActive : kThemeStateInactive ; info.state = IsEnabled() ? kThemeStateActive : kThemeStateInactive ;
@ -1343,17 +1366,19 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
{ {
// leave the background as it is (striped or metal) // leave the background as it is (striped or metal)
} }
#else #else
wxMacPortSetter helper(&dc) ; wxMacPortSetter helper(&dc) ;
Rect toolbarrect = { dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) , Rect toolbarrect = { dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) ,
dc.YLOG2DEVMAC(h) , dc.XLOG2DEVMAC(w) } ; dc.YLOG2DEVMAC(h) , dc.XLOG2DEVMAC(w) } ;
/* /*
if( toolbarrect.left < 0 ) if ( toolbarrect.left < 0 )
toolbarrect.left = 0 ; toolbarrect.left = 0 ;
if ( toolbarrect.top < 0 ) if ( toolbarrect.top < 0 )
toolbarrect.top = 0 ; toolbarrect.top = 0 ;
*/ */
if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() ) if ( !MacGetTopLevelWindow()->MacGetMetalAppearance() )
{ {
UMADrawThemePlacard( &toolbarrect , IsEnabled() ? kThemeStateActive : kThemeStateInactive) ; UMADrawThemePlacard( &toolbarrect , IsEnabled() ? kThemeStateActive : kThemeStateInactive) ;
@ -1364,8 +1389,9 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
#if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2 #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_2
if ( UMAGetSystemVersion() >= 0x1030 ) if ( UMAGetSystemVersion() >= 0x1030 )
{ {
HIRect hiToolbarrect = CGRectMake( dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) , HIRect hiToolbarrect = CGRectMake(
dc.YLOG2DEVREL(h) , dc.XLOG2DEVREL(w) ); dc.YLOG2DEVMAC(0) , dc.XLOG2DEVMAC(0) ,
dc.YLOG2DEVREL(h) , dc.XLOG2DEVREL(w) );
CGContextRef cgContext ; CGContextRef cgContext ;
Rect bounds ; Rect bounds ;
GetPortBounds( (CGrafPtr) dc.m_macPort , &bounds ) ; GetPortBounds( (CGrafPtr) dc.m_macPort , &bounds ) ;
@ -1378,7 +1404,7 @@ void wxToolBar::OnPaint(wxPaintEvent& event)
drawInfo.version = 0 ; drawInfo.version = 0 ;
drawInfo.state = kThemeStateActive ; drawInfo.state = kThemeStateActive ;
drawInfo.kind = kThemeBackgroundMetal ; drawInfo.kind = kThemeBackgroundMetal ;
HIThemeApplyBackground( &hiToolbarrect, &drawInfo , cgContext,kHIThemeOrientationNormal) ; HIThemeApplyBackground( &hiToolbarrect, &drawInfo , cgContext, kHIThemeOrientationNormal) ;
} }
QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ; QDEndCGContext( (CGrafPtr) dc.m_macPort , &cgContext ) ;

View File

@ -27,41 +27,48 @@ class wxMacToolTipTimer ;
class wxMacToolTip class wxMacToolTip
{ {
public : public :
wxMacToolTip( ) ; wxMacToolTip() ;
~wxMacToolTip() ; ~wxMacToolTip() ;
void Setup( WindowRef window , const wxString& text , const wxPoint& localPosition ) ; void Setup( WindowRef window , const wxString& text , const wxPoint& localPosition ) ;
long GetMark() { return m_mark ; } void Draw() ;
void Draw() ; void Clear() ;
void Clear() ;
bool IsShown() { return m_shown ; } long GetMark()
private : { return m_mark ; }
wxString m_label ; bool IsShown()
wxPoint m_position ; { return m_shown ; }
Rect m_rect ;
WindowRef m_window ; private :
PicHandle m_backpict ; wxString m_label ;
bool m_shown ; wxPoint m_position ;
long m_mark ; Rect m_rect ;
wxMacToolTipTimer* m_timer ; WindowRef m_window ;
PicHandle m_backpict ;
bool m_shown ;
long m_mark ;
wxMacToolTipTimer* m_timer ;
#if TARGET_CARBON #if TARGET_CARBON
wxMacCFStringHolder m_helpTextRef ; wxMacCFStringHolder m_helpTextRef ;
#endif #endif
} ; } ;
class wxMacToolTipTimer : public wxTimer class wxMacToolTipTimer : public wxTimer
{ {
public: public:
wxMacToolTipTimer() {} ;
wxMacToolTipTimer(wxMacToolTip* tip, int iMilliseconds) ; wxMacToolTipTimer(wxMacToolTip* tip, int iMilliseconds) ;
wxMacToolTipTimer() {} ;
virtual ~wxMacToolTipTimer() {} ; virtual ~wxMacToolTipTimer() {} ;
void Notify() void Notify()
{ {
if ( m_mark == m_tip->GetMark() ) if ( m_mark == m_tip->GetMark() )
m_tip->Draw() ; m_tip->Draw() ;
} }
protected: protected:
wxMacToolTip* m_tip; wxMacToolTip* m_tip;
long m_mark ; long m_mark ;
@ -79,6 +86,7 @@ static WindowRef s_ToolTipWindowRef = NULL ;
IMPLEMENT_ABSTRACT_CLASS(wxToolTip, wxObject) IMPLEMENT_ABSTRACT_CLASS(wxToolTip, wxObject)
wxToolTip::wxToolTip( const wxString &tip ) wxToolTip::wxToolTip( const wxString &tip )
{ {
m_text = tip; m_text = tip;
@ -95,13 +103,13 @@ void wxToolTip::SetTip( const wxString &tip )
if ( m_window ) if ( m_window )
{ {
/* #if 0
// update it immediately // update it immediately
wxToolInfo ti(GetHwndOf(m_window)); wxToolInfo ti(GetHwndOf(m_window));
ti.lpszText = (wxChar *)m_text.c_str(); ti.lpszText = (wxChar *)m_text.c_str();
(void)SendTooltipMessage(GetToolTipCtrl(), TTM_UPDATETIPTEXT, 0, &ti); (void)SendTooltipMessage(GetToolTipCtrl(), TTM_UPDATETIPTEXT, 0, &ti);
*/ #endif
} }
} }
@ -115,6 +123,7 @@ void wxToolTip::Enable( bool flag )
if ( s_ShowToolTips != flag ) if ( s_ShowToolTips != flag )
{ {
s_ShowToolTips = flag ; s_ShowToolTips = flag ;
if ( s_ShowToolTips ) if ( s_ShowToolTips )
{ {
} }
@ -166,6 +175,7 @@ void wxToolTip::RemoveToolTips()
{ {
s_ToolTip.Clear() ; s_ToolTip.Clear() ;
} }
// --- mac specific // --- mac specific
wxMacToolTipTimer::wxMacToolTipTimer( wxMacToolTip *tip , int msec ) wxMacToolTipTimer::wxMacToolTipTimer( wxMacToolTip *tip , int msec )
@ -179,31 +189,36 @@ wxMacToolTip::wxMacToolTip()
{ {
m_window = NULL ; m_window = NULL ;
m_backpict = NULL ; m_backpict = NULL ;
m_timer = NULL ;
m_mark = 0 ; m_mark = 0 ;
m_shown = false ; m_shown = false ;
m_timer = NULL ;
} }
void wxMacToolTip::Setup( WindowRef win , const wxString& text , const wxPoint& localPosition ) void wxMacToolTip::Setup( WindowRef win , const wxString& text , const wxPoint& localPosition )
{ {
m_mark++ ; m_mark++ ;
Clear() ; Clear() ;
m_position = localPosition ; m_position = localPosition ;
m_label = text ; m_label = text ;
m_window =win; m_window =win;
s_ToolTipWindowRef = m_window ; s_ToolTipWindowRef = m_window ;
m_backpict = NULL ; m_backpict = NULL ;
if ( m_timer ) if ( m_timer )
delete m_timer ; delete m_timer ;
m_timer = new wxMacToolTipTimer( this , s_ToolTipDelay ) ; m_timer = new wxMacToolTipTimer( this , s_ToolTipDelay ) ;
} }
wxMacToolTip::~wxMacToolTip() wxMacToolTip::~wxMacToolTip()
{ {
if ( m_timer ) { if ( m_timer )
{
delete m_timer ; delete m_timer ;
m_timer = NULL; m_timer = NULL;
} }
if ( m_backpict ) if ( m_backpict )
Clear() ; Clear() ;
} }
@ -219,6 +234,7 @@ void wxMacToolTip::Draw()
if ( m_window == s_ToolTipWindowRef ) if ( m_window == s_ToolTipWindowRef )
{ {
m_shown = true ; m_shown = true ;
#if TARGET_CARBON #if TARGET_CARBON
HMHelpContentRec tag ; HMHelpContentRec tag ;
tag.version = kMacHelpVersion; tag.version = kMacHelpVersion;
@ -226,7 +242,7 @@ void wxMacToolTip::Draw()
QDLocalToGlobalRect( GetWindowPort( m_window ) , &tag.absHotRect ) ; QDLocalToGlobalRect( GetWindowPort( m_window ) , &tag.absHotRect ) ;
m_helpTextRef.Assign( m_label , wxFONTENCODING_DEFAULT ) ; m_helpTextRef.Assign( m_label , wxFONTENCODING_DEFAULT ) ;
tag.content[kHMMinimumContentIndex].contentType = kHMCFStringContent ; tag.content[kHMMinimumContentIndex].contentType = kHMCFStringContent ;
tag.content[kHMMinimumContentIndex].u.tagCFString = m_helpTextRef ; tag.content[kHMMinimumContentIndex].u.tagCFString = m_helpTextRef ;
tag.content[kHMMaximumContentIndex].contentType = kHMCFStringContent ; tag.content[kHMMaximumContentIndex].contentType = kHMCFStringContent ;
@ -234,14 +250,14 @@ void wxMacToolTip::Draw()
tag.tagSide = kHMDefaultSide; tag.tagSide = kHMDefaultSide;
HMDisplayTag( &tag ); HMDisplayTag( &tag );
#else #else
wxMacPortStateHelper help( (GrafPtr) GetWindowPort( m_window ) ); wxMacPortStateHelper help( (GrafPtr)GetWindowPort( m_window ) );
FontFamilyID fontId ; FontFamilyID fontId ;
Str255 fontName ; Str255 fontName ;
SInt16 fontSize ; SInt16 fontSize ;
Style fontStyle ; Style fontStyle ;
GetThemeFont(kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ; GetThemeFont( kThemeSmallSystemFont , GetApplicationScript() , fontName , &fontSize , &fontStyle ) ;
GetFNum( fontName, &fontId ); GetFNum( fontName, &fontId );
TextFont( fontId ) ; TextFont( fontId ) ;
TextSize( fontSize ) ; TextSize( fontSize ) ;
TextFace( fontStyle ) ; TextFace( fontStyle ) ;
@ -249,27 +265,29 @@ void wxMacToolTip::Draw()
::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 ;
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 ;
wxCharBuffer text = m_label.mb_str( wxConvLocal) ; wxCharBuffer text = m_label.mb_str( wxConvLocal ) ;
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 ) ;
@ -277,13 +295,14 @@ void wxMacToolTip::Draw()
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;
Rect r ; Rect r ;
GetPortBounds( GetWindowPort( m_window ) , &r ) ; GetPortBounds( GetWindowPort( m_window ) , &r ) ;
if ( m_rect.top < 0 ) if ( m_rect.top < 0 )
{ {
@ -305,19 +324,21 @@ void wxMacToolTip::Draw()
m_rect.top -= (m_rect.bottom - r.bottom) ; m_rect.top -= (m_rect.bottom - r.bottom) ;
m_rect.bottom = r.bottom ; m_rect.bottom = r.bottom ;
} }
GWorldPtr port ;
CGrafPtr origPort ;
GDHandle origDevice ;
ClipRect( &m_rect ) ; ClipRect( &m_rect ) ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;
ForeColor(blackColor ) ; ForeColor(blackColor ) ;
GWorldPtr port ;
NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ; NewGWorld( &port , wxDisplayDepth() , &m_rect , NULL , NULL , 0 ) ;
CGrafPtr origPort ;
GDHandle origDevice ;
GetGWorld( &origPort , &origDevice ) ; GetGWorld( &origPort , &origDevice ) ;
SetGWorld( port , NULL ) ; SetGWorld( port , NULL ) ;
m_backpict = OpenPicture(&m_rect); m_backpict = OpenPicture(&m_rect);
CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)), CopyBits(GetPortBitMapForCopyBits(GetWindowPort(m_window)),
GetPortBitMapForCopyBits(port), GetPortBitMapForCopyBits(port),
&m_rect, &m_rect,
@ -328,11 +349,11 @@ void wxMacToolTip::Draw()
SetGWorld( origPort , origDevice ) ; SetGWorld( origPort , origDevice ) ;
DisposeGWorld( port ) ; DisposeGWorld( port ) ;
PenNormal() ; PenNormal() ;
RGBColor tooltipbackground = { 0xFFFF , 0xFFFF , 0xC000 } ; RGBColor tooltipbackground = { 0xFFFF , 0xFFFF , 0xC000 } ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;
RGBForeColor( &tooltipbackground ) ; RGBForeColor( &tooltipbackground ) ;
PaintRect( &m_rect ) ; PaintRect( &m_rect ) ;
ForeColor(blackColor ) ; ForeColor(blackColor ) ;
FrameRect( &m_rect ) ; FrameRect( &m_rect ) ;
@ -343,17 +364,19 @@ void wxMacToolTip::Draw()
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 ) ;
#endif #endif
@ -363,35 +386,36 @@ void wxMacToolTip::Draw()
void wxToolTip::NotifyWindowDelete( WXHWND win ) void wxToolTip::NotifyWindowDelete( WXHWND win )
{ {
if ( win == s_ToolTipWindowRef ) if ( win == s_ToolTipWindowRef )
{
s_ToolTipWindowRef = NULL ; s_ToolTipWindowRef = NULL ;
}
} }
void wxMacToolTip::Clear() void wxMacToolTip::Clear()
{ {
m_mark++ ; m_mark++ ;
if ( m_timer ) if ( m_timer )
{ {
delete m_timer ; delete m_timer ;
m_timer = NULL ; m_timer = NULL ;
} }
if ( !m_shown ) if ( !m_shown )
return ; return ;
#if TARGET_CARBON #if TARGET_CARBON
HMHideTag() ; HMHideTag() ;
m_helpTextRef.Release() ; m_helpTextRef.Release() ;
#else #else
if ( m_window == s_ToolTipWindowRef && m_backpict ) if ( m_window == s_ToolTipWindowRef && m_backpict )
{ {
wxMacPortStateHelper help( (GrafPtr) GetWindowPort(m_window) ) ; wxMacPortStateHelper help( (GrafPtr)GetWindowPort( m_window ) ) ;
m_shown = false ; m_shown = false ;
BackColor( whiteColor ) ; BackColor( whiteColor ) ;
ForeColor(blackColor ) ; ForeColor( blackColor ) ;
DrawPicture(m_backpict, &m_rect); DrawPicture( m_backpict, &m_rect );
KillPicture(m_backpict); KillPicture( m_backpict );
m_backpict = NULL ; m_backpict = NULL ;
} }
#endif #endif