]> git.saurik.com Git - wxWidgets.git/blobdiff - src/osx/cocoa/button.mm
The alignment controls are now left-aligned if the floating controls are not shown.
[wxWidgets.git] / src / osx / cocoa / button.mm
index 16673508c618c7dc784ba52600463d939cbc091b..35c2c4d941f6da58831c32f063cf832a61c92741 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
 // Author:      Stefan Csomor
 // Modified by:
 // Created:     1998-01-01
-// RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Stefan Csomor
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -208,7 +207,8 @@ void
 SetBezelStyleFromBorderFlags(NSButton *v,
                              long style,
                              wxWindowID winid,
 SetBezelStyleFromBorderFlags(NSButton *v,
                              long style,
                              wxWindowID winid,
-                             const wxString& label = wxString())
+                             const wxString& label = wxString(),
+                             const wxBitmap& bitmap = wxBitmap())
 {
     // We can't display a custom label inside a button with help bezel style so
     // we only use it if we are using the default label. wxButton itself checks
 {
     // We can't display a custom label inside a button with help bezel style so
     // we only use it if we are using the default label. wxButton itself checks
@@ -220,10 +220,13 @@ SetBezelStyleFromBorderFlags(NSButton *v,
     }
     else
     {
     }
     else
     {
-        // We can't use rounded bezel styles for multiline buttons as they are
-        // only meant to be used at certain sizes, so the style used depends on
-        // whether the label is single or multi line.
-        const bool isSingleLine = label.find_first_of("\n\r") == wxString::npos;
+        // We can't use rounded bezel styles neither for multiline buttons nor
+        // for buttons containing (big) icons as they are only meant to be used
+        // at certain sizes, so the style used depends on whether the label is
+        // single or multi line.
+        const bool
+            isSimpleText = (label.find_first_of("\n\r") == wxString::npos)
+                                && (!bitmap.IsOk() || bitmap.GetHeight() < 20);
 
         NSBezelStyle bezel;
         switch ( style & wxBORDER_MASK )
 
         NSBezelStyle bezel;
         switch ( style & wxBORDER_MASK )
@@ -238,7 +241,7 @@ SetBezelStyleFromBorderFlags(NSButton *v,
                 break;
 
             case wxBORDER_SUNKEN:
                 break;
 
             case wxBORDER_SUNKEN:
-                bezel = isSingleLine ? NSTexturedRoundedBezelStyle
+                bezel = isSimpleText ? NSTexturedRoundedBezelStyle
                                      : NSSmallSquareBezelStyle;
                 break;
 
                                      : NSSmallSquareBezelStyle;
                 break;
 
@@ -250,7 +253,7 @@ SetBezelStyleFromBorderFlags(NSButton *v,
             case wxBORDER_STATIC:
             case wxBORDER_RAISED:
             case wxBORDER_THEME:
             case wxBORDER_STATIC:
             case wxBORDER_RAISED:
             case wxBORDER_THEME:
-                bezel = isSingleLine ? NSRoundedBezelStyle
+                bezel = isSimpleText ? NSRoundedBezelStyle
                                      : NSRegularSquareBezelStyle;
                 break;
         }
                                      : NSRegularSquareBezelStyle;
                 break;
         }
@@ -340,7 +343,7 @@ wxWidgetImplType* wxWidgetImpl::CreateBitmapButton( wxWindowMac* wxpeer,
     NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
     wxNSButton* v = [[wxNSButton alloc] initWithFrame:r];
 
     NSRect r = wxOSXGetFrameForControl( wxpeer, pos , size ) ;
     wxNSButton* v = [[wxNSButton alloc] initWithFrame:r];
 
-    SetBezelStyleFromBorderFlags(v, style, winid);
+    SetBezelStyleFromBorderFlags(v, style, winid, wxString(), bitmap);
 
     if (bitmap.IsOk())
         [v setImage:bitmap.GetNSImage() ];
 
     if (bitmap.IsOk())
         [v setImage:bitmap.GetNSImage() ];