diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index bc0c046d84..d24e39a1ed 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -270,7 +270,6 @@ public: void GetLayoutInset(int &left , int &top , int &right, int &bottom) const; void SetAcceleratorFromLabel(const wxString& label); -private: NSButton *GetNSButton() const; }; diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index 94c6562b7b..16673508c6 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -198,23 +198,6 @@ NSButton *wxButtonCocoaImpl::GetNSButton() const return static_cast(m_osxView); } -// Set the keyboard accelerator key from the label (e.g. "Click &Me") -void wxButton::OSXUpdateAfterLabelChange(const wxString& label) -{ - // Skip setting the accelerator for the default buttons as this would - // overwrite the default "Enter" which should be preserved. - wxTopLevelWindow * const - tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - if ( tlw ) - { - if ( tlw->GetDefaultItem() == this ) - return; - } - - wxButtonCocoaImpl *impl = static_cast(GetPeer()); - impl->SetAcceleratorFromLabel(label); -} - // Set bezel style depending on the wxBORDER_XXX flags specified by the style // and also accounting for the label (bezels are different for multiline // buttons and normal ones) and the ID (special bezel is used for help button). @@ -276,6 +259,32 @@ SetBezelStyleFromBorderFlags(NSButton *v, } } +// Set the keyboard accelerator key from the label (e.g. "Click &Me") +void wxButton::OSXUpdateAfterLabelChange(const wxString& label) +{ + wxButtonCocoaImpl *impl = static_cast(GetPeer()); + + // Update the bezel style as may be necessary if our new label is multi + // line while the old one wasn't (or vice versa). + SetBezelStyleFromBorderFlags(impl->GetNSButton(), + GetWindowStyle(), + GetId(), + label); + + + // Skip setting the accelerator for the default buttons as this would + // overwrite the default "Enter" which should be preserved. + wxTopLevelWindow * const + tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); + if ( tlw ) + { + if ( tlw->GetDefaultItem() == this ) + return; + } + + impl->SetAcceleratorFromLabel(label); +} + wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, wxWindowMac* WXUNUSED(parent),