X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/54ea28348cd5123e42e2029139d9772a736ed57c..bbfd45484113ff0bafcd0007a4b6faecc7909561:/src/osx/cocoa/button.mm diff --git a/src/osx/cocoa/button.mm b/src/osx/cocoa/button.mm index 13ae019fef..09f1f192dd 100644 --- a/src/osx/cocoa/button.mm +++ b/src/osx/cocoa/button.mm @@ -4,7 +4,7 @@ // Author: Stefan Csomor // Modified by: // Created: 1998-01-01 -// RCS-ID: $Id: button.cpp 54845 2008-07-30 14:52:41Z SC $ +// RCS-ID: $Id$ // Copyright: (c) Stefan Csomor // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -18,6 +18,11 @@ #include "wx/osx/private.h" +#if wxUSE_MARKUP + #include "wx/osx/cocoa/private/markuptoattr.h" +#endif // wxUSE_MARKUP + + wxSize wxButton::DoGetBestSize() const { // We only use help button bezel if we don't have any (non standard) label @@ -27,7 +32,7 @@ wxSize wxButton::DoGetBestSize() const return wxSize( 23 , 23 ) ; wxRect r ; - m_peer->GetBestRect(&r); + GetPeer()->GetBestRect(&r); wxSize sz = r.GetSize(); sz.x = sz.x + MacGetLeftBorderSize() + @@ -101,6 +106,10 @@ wxSize wxButton::GetDefaultSize() @end +@interface NSView(PossibleSizeMethods) +- (NSControlSize)controlSize; +@end + namespace { @@ -121,6 +130,25 @@ public: wxWidgetCocoaImpl::SetBitmap(bitmap); } +#if wxUSE_MARKUP + virtual void SetLabelMarkup(const wxString& markup) + { + wxMarkupToAttrString toAttr(GetWXPeer(), markup); + NSMutableAttributedString *attrString = toAttr.GetNSAttributedString(); + + // Button text is always centered. + NSMutableParagraphStyle * + paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + [paragraphStyle setAlignment: NSCenterTextAlignment]; + [attrString addAttribute:NSParagraphStyleAttributeName + value:paragraphStyle + range:NSMakeRange(0, [attrString length])]; + [paragraphStyle release]; + + [GetNSButton() setAttributedTitle:attrString]; + } +#endif // wxUSE_MARKUP + void SetPressedBitmap( const wxBitmap& bitmap ) { NSButton* button = GetNSButton(); @@ -133,7 +161,7 @@ public: left = top = right = bottom = 0; NSControlSize size = NSRegularControlSize; if ( [m_osxView respondsToSelector:@selector(controlSize)] ) - size = (NSControlSize) [m_osxView controlSize]; + size = [m_osxView controlSize]; else if ([m_osxView respondsToSelector:@selector(cell)]) { id cell = [(id)m_osxView cell]; @@ -174,6 +202,8 @@ private: } }; +} // anonymous namespace + extern "C" void SetBezelStyleFromBorderFlags(NSButton *v, long style); // set bezel style depending on the wxBORDER_XXX flags specified by the style @@ -196,7 +226,6 @@ void SetBezelStyleFromBorderFlags(NSButton *v, long style) } } -} // anonymous namespace wxWidgetImplType* wxWidgetImpl::CreateButton( wxWindowMac* wxpeer, wxWindowMac* WXUNUSED(parent), @@ -260,7 +289,7 @@ wxWidgetImplType* wxWidgetImpl::CreateBitmapButton( wxWindowMac* wxpeer, SetBezelStyleFromBorderFlags(v, style); - if (bitmap.Ok()) + if (bitmap.IsOk()) [v setImage:bitmap.GetNSImage() ]; [v setButtonType:NSMomentaryPushInButton];