All (GUI):
- Added wxDC::StretchBlit() for wxMac and wxMSW (Vince Harron)
+- Added support for labels for toolbar controls (Vince Harron)
- Added wxEventBlocker class (Francesco Montorsi).
- Added wxFile/DirPickerCtrl::Get/SetFile/DirName() (Francesco Montorsi).
- Added wxSizerFlags::Top() and Bottom().
\membersection{wxToolBar::AddControl}\label{wxtoolbaraddcontrol}
-\func{bool}{AddControl}{\param{wxControl*}{ control}}
+\func{bool}{AddControl}{\param{wxControl*}{ control}, \param{const wxString&}{ label = ""}}
Adds any control to the toolbar, typically e.g. a combobox.
\docparam{control}{The control to be added.}
+\docparam{label}{Text to be displayed near the control.}
+
+\wxheading{Remarks}
+
+wxMSW: the label is only displayed if there is enough space available below the embedded control.
+
+wxMac: labels are only displayed if wxWidgets is built with wxMAC_USE_NATIVE_TOOLBAR set to 1
+
\membersection{wxToolBar::AddSeparator}\label{wxtoolbaraddseparator}
// Created: 2006-04-13
// Id: $Id$
// Copyright: (c) Julian Smart, Robert Roebling, Vadim Zeitlin,
-// SciTech Software, Inc.
+// SciTech Software, Inc.
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxButtonToolBar : public wxToolBarBase
-{
+{
public:
// construction/destruction
wxButtonToolBar() { Init(); }
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxToolBarNameStr );
-
+
virtual ~wxButtonToolBar();
virtual bool Realize();
wxObject *clientData,
const wxString& shortHelp,
const wxString& longHelp);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label);
virtual wxSize DoGetBestClientSize() const;
wxObject *clientData,
const wxString& shortHelp,
const wxString& longHelp);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label);
DECLARE_EVENT_TABLE()
#if wxMAC_USE_NATIVE_TOOLBAR
virtual void SetToolNormalBitmap(int id, const wxBitmap& bitmap);
virtual void SetToolDisabledBitmap(int id, const wxBitmap& bitmap);
-
+
// implementation only from now on
// -------------------------------
wxObject *clientData,
const wxString& shortHelp,
const wxString& longHelp);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label);
// return the appropriate size and flags for the toolbar control
virtual wxSize DoGetBestSize() const;
: wxTOOL_STYLE_BUTTON;
}
- wxToolBarToolBase(wxToolBarBase *tbar, wxControl *control)
+ wxToolBarToolBase(wxToolBarBase *tbar,
+ wxControl *control,
+ const wxString& label)
+ : m_label(label)
{
m_tbar = tbar;
m_control = control;
virtual wxToolBarToolBase *AddTool (wxToolBarToolBase *tool);
virtual wxToolBarToolBase *InsertTool (size_t pos, wxToolBarToolBase *tool);
- // add an arbitrary control to the toolbar (notice that
- // the control will be deleted by the toolbar and that it will also adjust
- // its position/size)
+ // add an arbitrary control to the toolbar (notice that the control will be
+ // deleted by the toolbar and that it will also adjust its position/size)
//
+ // the label is optional and, if specified, will be shown near the control
// NB: the control should have toolbar as its parent
- virtual wxToolBarToolBase *AddControl(wxControl *control);
- virtual wxToolBarToolBase *InsertControl(size_t pos, wxControl *control);
+ virtual wxToolBarToolBase *
+ AddControl(wxControl *control, const wxString& label = wxEmptyString);
+
+ virtual wxToolBarToolBase *
+ InsertControl(size_t pos, wxControl *control,
+ const wxString& label = wxEmptyString);
// get the control with the given id or return NULL
virtual wxControl *FindControl( int toolid );
const wxString& shortHelp,
const wxString& longHelp) = 0;
- virtual wxToolBarToolBase *CreateTool(wxControl *control) = 0;
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label) = 0;
// helper functions
// ----------------
wxObject *clientData,
const wxString& shortHelp,
const wxString& longHelp);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+ virtual wxToolBarToolBase *CreateTool(wxControl *control,
+ const wxString& label);
virtual wxSize DoGetBestClientSize() const;
virtual void DoSetSize(int x, int y,
combo->Append(_T("combobox"));
combo->Append(_T("in a"));
combo->Append(_T("toolbar"));
- toolBar->AddControl(combo);
+ toolBar->AddControl(combo, _T("Combo Label"));
wxSpinCtrl *spin = new wxSpinCtrl( toolBar, ID_SPIN, wxT("0"), wxDefaultPosition, wxSize(80,wxDefaultCoord), 0, 0, 100 );
toolBar->AddControl( spin );
-
+
wxTextCtrl *text = new wxTextCtrl( toolBar, -1, wxT("text"), wxDefaultPosition, wxSize(80,wxDefaultCoord) );
toolBar->AddControl( text );
-
+
wxSearchCtrl *srch = new wxSearchCtrl( toolBar, -1, wxT("xx"), wxDefaultPosition, wxSize(80,wxDefaultCoord), wxSUNKEN_BORDER );
toolBar->AddControl( srch );
}
return tool;
}
-wxToolBarToolBase *wxToolBarBase::AddControl(wxControl *control)
+wxToolBarToolBase *
+wxToolBarBase::AddControl(wxControl *control, const wxString& label)
{
- return InsertControl(GetToolsCount(), control);
+ return InsertControl(GetToolsCount(), control, label);
}
-wxToolBarToolBase *wxToolBarBase::InsertControl(size_t pos, wxControl *control)
+wxToolBarToolBase *
+wxToolBarBase::InsertControl(size_t pos,
+ wxControl *control,
+ const wxString& label)
{
wxCHECK_MSG( control, (wxToolBarToolBase *)NULL,
_T("toolbar: can't insert NULL control") );
wxCHECK_MSG( pos <= GetToolsCount(), (wxToolBarToolBase *)NULL,
_T("invalid position in wxToolBar::InsertControl()") );
- wxToolBarToolBase *tool = CreateTool(control);
+ wxToolBarToolBase *tool = CreateTool(control, label);
if ( !InsertTool(pos, tool) )
{
m_button = NULL;
}
- wxButtonToolBarTool(wxButtonToolBar *tbar, wxControl *control)
- : wxToolBarToolBase(tbar, control)
+ wxButtonToolBarTool(wxButtonToolBar *tbar,
+ wxControl *control,
+ const wxString& label)
+ : wxToolBarToolBase(tbar, control, label)
{
m_x = m_y = wxDefaultCoord;
m_width =
clientData, shortHelp, longHelp);
}
-wxToolBarToolBase *wxButtonToolBar::CreateTool(wxControl *control)
+wxToolBarToolBase *wxButtonToolBar::CreateTool(wxControl *control,
+ const wxString& label)
{
- return new wxButtonToolBarTool(this, control);
+ return new wxButtonToolBarTool(this, control, label);
}
// ----------------------------------------------------------------------------
const wxString& shortHelp,
const wxString& longHelp );
- wxToolBarTool(wxToolBar *tbar, wxControl *control)
- : wxToolBarToolBase(tbar, control)
+ wxToolBarTool(wxToolBar *tbar, wxControl *control, const wxString& label)
+ : wxToolBarToolBase(tbar, control, label)
{
Init();
if (control != NULL)
enc = f.GetEncoding();
else
enc = wxFont::GetDefaultEncoding();
-
+
HIToolbarItemSetHelpText(
m_toolbarItemRef,
wxMacCFStringHolder( GetShortHelp(), enc ),
clientData, shortHelp, longHelp );
}
-wxToolBarToolBase * wxToolBar::CreateTool( wxControl *control )
+wxToolBarToolBase *
+wxToolBar::CreateTool(wxControl *control, const wxString& label)
{
- return new wxToolBarTool( this, control );
+ return new wxToolBarTool(this, control, label);
}
void wxToolBar::Init()
#define kControlToolbarItemClassID CFSTR( "org.wxwidgets.controltoolbaritem" )
-const EventTypeSpec kEvents[] =
+const EventTypeSpec kEvents[] =
{
{ kEventClassHIObject, kEventHIObjectConstruct },
{ kEventClassHIObject, kEventHIObjectInitialize },
{ kEventClassHIObject, kEventHIObjectDestruct },
-
+
{ kEventClassToolbarItem, kEventToolbarItemCreateCustomView }
};
-const EventTypeSpec kViewEvents[] =
-{
- { kEventClassControl, kEventControlGetSizeConstraints }
+const EventTypeSpec kViewEvents[] =
+{
+ { kEventClassControl, kEventControlGetSizeConstraints }
};
-struct ControlToolbarItem
-{
- HIToolbarItemRef toolbarItem;
+struct ControlToolbarItem
+{
+ HIToolbarItemRef toolbarItem;
HIViewRef viewRef;
wxSize lastValidSize ;
-};
+};
static pascal OSStatus ControlToolbarItemHandler( EventHandlerCallRef inCallRef, EventRef inEvent, void* inUserData )
{
{
HIObjectRef toolbarItem;
ControlToolbarItem* item;
-
+
GetEventParameter( inEvent, kEventParamHIObjectInstance, typeHIObjectRef, NULL,
sizeof( HIObjectRef ), NULL, &toolbarItem );
-
+
item = (ControlToolbarItem*) malloc(sizeof(ControlToolbarItem)) ;
item->toolbarItem = toolbarItem ;
item->viewRef = NULL ;
-
+
SetEventParameter( inEvent, kEventParamHIObjectInstance, typeVoidPtr, sizeof( void * ), &item );
-
+
result = noErr ;
}
break;
-
+
case kEventHIObjectInitialize:
result = CallNextEventHandler( inCallRef, inEvent );
if ( result == noErr )
CFDataRef data;
GetEventParameter( inEvent, kEventParamToolbarItemConfigData, typeCFTypeRef, NULL,
sizeof( CFTypeRef ), NULL, &data );
-
+
HIViewRef viewRef ;
-
+
wxASSERT_MSG( CFDataGetLength( data ) == sizeof( viewRef ) , wxT("Illegal Data passed") ) ;
memcpy( &viewRef , CFDataGetBytePtr( data ) , sizeof( viewRef ) ) ;
-
+
object->viewRef = (HIViewRef) viewRef ;
result = noErr ;
HIViewRef viewRef = object->viewRef ;
if( viewRef && IsValidControlHandle( viewRef) )
{
- CFIndex count = CFGetRetainCount( viewRef ) ;
+ CFIndex count = CFGetRetainCount( viewRef ) ;
if ( count >= 1 )
CFRelease( viewRef ) ;
}
break;
}
break;
-
+
case kEventClassToolbarItem:
switch ( GetEventKind( inEvent ) )
- {
+ {
case kEventToolbarItemCreateCustomView:
{
HIViewRef viewRef = object->viewRef ;
HIViewSetVisible(viewRef, true) ;
InstallEventHandler( GetControlEventTarget( viewRef ), ControlToolbarItemHandler,
GetEventTypeCount( kViewEvents ), kViewEvents, object, NULL );
-
+
result = SetEventParameter( inEvent, kEventParamControlRef, typeControlRef, sizeof( HIViewRef ), &viewRef );
}
break;
}
break;
-
+
case kEventClassControl:
switch ( GetEventKind( inEvent ) )
{
object->lastValidSize = sz ;
else
sz = object->lastValidSize ;
-
+
HISize min, max;
min.width = max.width = sz.x ;
min.height = max.height = sz.y ;
-
+
result = SetEventParameter( inEvent, kEventParamMinimumSize, typeHISize,
sizeof( HISize ), &min );
-
+
result = SetEventParameter( inEvent, kEventParamMaximumSize, typeHISize,
sizeof( HISize ), &max );
result = noErr ;
}
break;
}
-
+
return result;
}
void RegisterControlToolbarItemClass()
{
static bool sRegistered;
-
+
if ( !sRegistered )
{
HIObjectRegisterSubclass( kControlToolbarItemClassID, kHIToolbarItemClassID, 0,
ControlToolbarItemHandler, GetEventTypeCount( kEvents ), kEvents, 0, NULL );
-
+
sRegistered = true;
}
}
HIToolbarItemRef CreateControlToolbarItem(CFStringRef inIdentifier, CFTypeRef inConfigData)
{
RegisterControlToolbarItemClass();
-
+
OSStatus err;
EventRef event;
UInt32 options = kHIToolbarItemAllowDuplicates;
HIToolbarItemRef result = NULL;
-
+
err = CreateEvent( NULL, kEventClassHIObject, kEventHIObjectInitialize, GetCurrentEventTime(), 0, &event );
require_noerr( err, CantCreateEvent );
-
+
SetEventParameter( event, kEventParamAttributes, typeUInt32, sizeof( UInt32 ), &options );
SetEventParameter( event, kEventParamToolbarItemIdentifier, typeCFStringRef, sizeof( CFStringRef ), &inIdentifier );
-
+
if ( inConfigData )
SetEventParameter( event, kEventParamToolbarItemConfigData, typeCFTypeRef, sizeof( CFTypeRef ), &inConfigData );
-
+
err = HIObjectCreate( kControlToolbarItemClassID, event, (HIObjectRef*)&result );
check_noerr( err );
-
+
ReleaseEvent( event );
-CantCreateEvent :
+CantCreateEvent :
return result ;
}
result = noErr;
}
break;
-
+
case kEventToolbarGetAllowedIdentifiers:
{
GetEventParameter( inEvent, kEventParamMutableArray, typeCFMutableArrayRef, NULL,
HIToolbarItemRef item = NULL;
CFTypeRef data = NULL;
CFStringRef identifier = NULL ;
-
+
GetEventParameter( inEvent, kEventParamToolbarItemIdentifier, typeCFStringRef, NULL,
sizeof( CFStringRef ), NULL, &identifier );
-
+
GetEventParameter( inEvent, kEventParamToolbarItemConfigData, typeCFTypeRef, NULL,
sizeof( CFTypeRef ), NULL, &data );
-
+
if ( CFStringCompare( kControlToolbarItemClassID, identifier, kCFCompareBackwards ) == kCFCompareEqualTo )
{
item = CreateControlToolbarItem( kControlToolbarItemClassID, data );
result = noErr;
}
}
-
+
}
break;
}
HIToolbarSetDisplayMode( (HIToolbarRef) m_macHIToolbarRef, mode );
HIToolbarSetDisplaySize( (HIToolbarRef) m_macHIToolbarRef, displaySize );
}
-#endif
+#endif // wxMAC_USE_NATIVE_TOOLBAR
return (err == noErr);
}
// a side-effect of the UpdateToggleImage function is that it always changes the bitmap used on the button.
tool->UpdateToggleImage( tool->CanBeToggled() && tool->IsToggled() );
- }
+ }
}
void wxToolBar::SetToolDisabledBitmap( int id, const wxBitmap& bitmap )
wxCHECK_RET( tool->IsButton(), wxT("Can only set bitmap on button tools."));
tool->SetDisabledBitmap(bitmap);
-
+
// TODO: what to do for this one?
- }
+ }
}
wxToolBarToolBase *wxToolBar::FindToolForPosition(wxCoord x, wxCoord y) const
OSStatus err = 0;
tool->Attach( this );
+#if wxMAC_USE_NATIVE_TOOLBAR
+ HIToolbarItemRef item;
+#endif
+
switch (tool->GetStyle())
{
case wxTOOL_STYLE_SEPARATOR:
else
toolrect.right = toolSize.x;
-#ifdef __WXMAC_OSX__
// in flat style we need a visual separator
#if wxMAC_USE_NATIVE_TOOLBAR
- HIToolbarItemRef item;
err = HIToolbarItemCreate(
kHIToolbarSeparatorIdentifier,
kHIToolbarItemCantBeRemoved | kHIToolbarItemIsSeparator | kHIToolbarItemAllowDuplicates,
&item );
if (err == noErr)
tool->SetToolbarItemRef( item );
-#endif
+#endif // wxMAC_USE_NATIVE_TOOLBAR
CreateSeparatorControl( window, &toolrect, &controlHandle );
tool->SetControlHandle( controlHandle );
-#endif
}
break;
}
#if wxMAC_USE_NATIVE_TOOLBAR
- HIToolbarItemRef item;
wxString labelStr = wxString::Format(wxT("%xd"), (int)tool);
err = HIToolbarItemCreate(
wxMacCFStringHolder(labelStr, wxFont::GetDefaultEncoding()),
InstallEventHandler(
HIObjectGetEventTarget(item), GetwxMacToolBarEventHandlerUPP(),
GetEventTypeCount(toolBarEventList), toolBarEventList, tool, NULL );
- HIToolbarItemSetLabel( item, wxMacCFStringHolder(tool->GetLabel(), m_font.GetEncoding()) );
+
HIToolbarItemSetIconRef( item, info.u.iconRef );
HIToolbarItemSetCommandID( item, kHIToolbarCommandPressAction );
tool->SetToolbarItemRef( item );
}
-#endif
+#endif // wxMAC_USE_NATIVE_TOOLBAR
wxMacReleaseBitmapButton( &info );
// reference count to make sure we are not dealing with zombie controls after the native toolbar has released its views
CFRetain( viewRef ) ;
CFDataRef data = CFDataCreate( kCFAllocatorDefault , (UInt8*) &viewRef , sizeof(viewRef) ) ;
- err = HIToolbarCreateItemWithIdentifier((HIToolbarRef) m_macHIToolbarRef,kControlToolbarItemClassID,
- data , &item ) ;
+ err = HIToolbarCreateItemWithIdentifier((HIToolbarRef) m_macHIToolbarRef,kControlToolbarItemClassID,
+ data , &item ) ;
if (err == noErr)
{
break;
}
+#if wxMAC_USE_NATIVE_TOOLBAR
+ wxString label = tool->GetLabel();
+ if ( !label.empty() )
+ {
+ // strip mnemonics from the label for compatibility
+ // with the usual labels in wxStaticText sense
+ label = wxStaticText(label);
+
+ HIToolbarItemSetLabel(item,
+ wxMacCFStringHolder(label, m_font.GetEncoding()));
+ }
+#endif // wxMAC_USE_NATIVE_TOOLBAR
+
if ( err == noErr )
{
if ( controlHandle )
clientData, shortHelp, longHelp)
{
m_nSepCount = 0;
+ m_staticText = 0;
}
- wxToolBarTool(wxToolBar *tbar, wxControl *control)
- : wxToolBarToolBase(tbar, control)
+ wxToolBarTool(wxToolBar *tbar, wxControl *control, const wxString& label)
+ : wxToolBarToolBase(tbar, control, label)
{
+ if ( IsControl() && !m_label.empty() )
+ {
+ // create a control to render the control's label
+ m_staticText = new wxStaticText
+ (
+ m_tbar,
+ wxID_ANY,
+ m_label,
+ wxDefaultPosition,
+ wxDefaultSize,
+ wxALIGN_CENTRE | wxST_NO_AUTORESIZE
+ );
+ }
+ else // no label
+ {
+ m_staticText = NULL;
+ }
+
m_nSepCount = 1;
}
+ virtual ~wxToolBarTool()
+ {
+ delete m_staticText;
+ }
+
virtual void SetLabel(const wxString& label)
{
if ( label == m_label )
wxToolBarToolBase::SetLabel(label);
+ if ( m_staticText )
+ m_staticText->SetLabel(label);
+
// we need to update the label shown in the toolbar because it has a
// pointer to the internal buffer of the old label
//
// TODO: use TB_SETBUTTONINFO
}
+ wxStaticText* GetStaticText()
+ {
+ wxASSERT_MSG( IsControl(),
+ _T("only makes sense for embedded control tools") );
+
+ return m_staticText;
+ }
+
// set/get the number of separators which we use to cover the space used by
// a control in the toolbar
void SetSeparatorsCount(size_t count) { m_nSepCount = count; }
private:
size_t m_nSepCount;
+ wxStaticText *m_staticText;
DECLARE_NO_COPY_CLASS(wxToolBarTool)
};
clientData, shortHelp, longHelp);
}
-wxToolBarToolBase *wxToolBar::CreateTool(wxControl *control)
+wxToolBarToolBase *
+wxToolBar::CreateTool(wxControl *control, const wxString& label)
{
- return new wxToolBarTool(this, control);
+ return new wxToolBarTool(this, control, label);
}
// ----------------------------------------------------------------------------
// takes care of all normal items)
for ( /* node -> first after deleted */ ; node; node = node->GetNext() )
{
- wxToolBarToolBase *tool2 = node->GetData();
+ wxToolBarTool *tool2 = (wxToolBarTool*)node->GetData();
if ( tool2->IsControl() )
{
int x;
wxControl *control = tool2->GetControl();
control->GetPosition(&x, NULL);
control->Move(x - width, wxDefaultCoord);
+
+ wxStaticText* staticText = tool2->GetStaticText();
+ staticText->Move(x - width, wxDefaultCoord);
}
}
size_t index = 0;
for ( node = m_tools.GetFirst(); node; node = node->GetNext(), index++ )
{
- wxToolBarToolBase *tool = node->GetData();
+ wxToolBarTool *tool = (wxToolBarTool*)node->GetData();
// we calculate the running y coord for vertical toolbars so we need to
// get the items size for all items but for the horizontal ones we
}
wxControl *control = tool->GetControl();
+ wxStaticText * const staticText = tool->GetStaticText();
+
wxSize size = control->GetSize();
+ wxSize staticTextSize;
+ if ( staticText )
+ {
+ staticTextSize = staticText->GetSize();
+ staticTextSize.y += 3; // margin between control and its label
+ }
// the position of the leftmost controls corner
int left = wxDefaultCoord;
((wxToolBarTool *)tool)->SetSeparatorsCount(nSeparators);
// adjust the controls width to exactly cover the separators
- control->SetSize((nSeparators + 1)*widthSep, wxDefaultCoord);
+ size.x = (nSeparators + 1)*widthSep;
+ control->SetSize(size.x, wxDefaultCoord);
}
- // position the control itself correctly vertically
- int height = r.bottom - r.top;
+ // position the control itself correctly vertically centering it on the
+ // icon area of the toolbar
+ int height = r.bottom - r.top - staticTextSize.y;
+
int diff = height - size.y;
- if ( diff < 0 )
+ if ( diff < 0 || !HasFlag(wxTB_TEXT) )
{
- // the control is too high, resize to fit
- control->SetSize(wxDefaultCoord, height - 2);
+ // not enough room for the static text
+ if ( staticText )
+ staticText->Hide();
+
+ // recalculate height & diff without the staticText control
+ height = r.bottom - r.top;
+ diff = height - size.y;
+ if ( diff < 0 )
+ {
+ // the control is too high, resize to fit
+ control->SetSize(wxDefaultCoord, height - 2);
- diff = 2;
+ diff = 2;
+ }
+ }
+ else // enough space for both the control and the label
+ {
+ if ( staticText )
+ staticText->Show();
}
int top;
}
control->Move(left, top + (diff + 1) / 2);
+ if ( staticText )
+ {
+ staticText->Move(left + (size.x - staticTextSize.x)/2,
+ r.bottom - staticTextSize.y);
+ }
}
// the max index is the "real" number of buttons - i.e. counting even the
// otherwise
for ( node = m_tools.GetFirst(); node; node = node->GetNext() )
{
- wxToolBarToolBase *tool = node->GetData();
+ wxToolBarTool *tool = (wxToolBarTool*)node->GetData();
if ( tool->IsControl() )
{
// get the control rect in our client coords
wxControl *control = tool->GetControl();
+ wxStaticText *staticText = tool->GetStaticText();
wxRect rectCtrl = control->GetRect();
+ wxRect rectStaticText(0,0,0,0);
+ if ( staticText )
+ {
+ rectStaticText = staticText->GetRect();
+ }
// iterate over all buttons
TBBUTTON tbb;
// style in the parent: the controls can disappear
control->Refresh(false);
}
+ if ( staticText && rectStaticText.Intersects(rectItem) )
+ {
+ // yes, do erase it!
+ dc.DrawRectangle(rectItem);
+
+ // Necessary in case we use a no-paint-on-size
+ // style in the parent: the controls can disappear
+ staticText->Refresh(false);
+ }
}
}
}
m_underMouse = false;
}
- wxToolBarTool(wxToolBar *tbar, wxControl *control)
- : wxToolBarToolBase(tbar, control)
+ wxToolBarTool(wxToolBar *tbar, wxControl *control, const wxString& label)
+ : wxToolBarToolBase(tbar, control, label)
{
// no position yet
m_x =
clientData, shortHelp, longHelp);
}
-wxToolBarToolBase *wxToolBar::CreateTool(wxControl *control)
+wxToolBarToolBase *
+wxToolBar::CreateTool(wxControl *control, const wxString& label)
{
- return new wxToolBarTool(this, control);
+ return new wxToolBarTool(this, control, label);
}
// ----------------------------------------------------------------------------