cleanup - reformat
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4792d19265
commit
991f71dcc8
@ -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 ) ;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user